Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 68e7c17

Browse files
committed
Ensure faker is only run in dev env
1 parent 21a702a commit 68e7c17

File tree

1 file changed

+35
-19
lines changed

1 file changed

+35
-19
lines changed

‎console/commands/FakerController.php‎

Lines changed: 35 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace console\commands;
44

55
use Yii;
6+
use yii\base\ExitException;
67
use yii\base\Model;
78
use yii\console\Controller;
89
use yii\console\ExitCode;
@@ -15,21 +16,27 @@
1516
*/
1617
class FakerController extends Controller
1718
{
19+
/**
20+
* @throws ExitException when not in debug mode.
21+
*/
22+
public function beforeAction($action)
23+
{
24+
if (!YII_DEBUG) {
25+
$this->stdout('Faker command can only be used in development environment!' . PHP_EOL, Console::BOLD, Console::FG_RED);
26+
throw new ExitException(ExitCode::UNSPECIFIED_ERROR);
27+
}
28+
return parent::beforeAction($action);
29+
}
30+
1831
/**
1932
* Fill tables with fake data
2033
*/
2134
public function actionIndex()
2235
{
23-
$fakers = FileHelper::findFiles(\Yii::getAlias('@common/models'), [
24-
'only' => ['*Faker.php'],
25-
'except' => ['BaseModelFaker.php'],
26-
]);
27-
28-
$sortedFakersModels = static::sortModels($fakers, '\\common\\models\\faker\\');
29-
30-
foreach($sortedFakersModels as $justModelClassName) {
31-
$className = 'common\\models\\faker\\' . StringHelper::basename($justModelClassName, '.php').'Faker';
32-
$this->stdout('Generating fake data for ' . StringHelper::basename($justModelClassName, 'Faker.php') . '...');
36+
$fakerModels = $this->getFakersModels();
37+
foreach($fakerModels as $modelClassName) {
38+
$className = 'common\\models\\faker\\' . StringHelper::basename($modelClassName, '.php').'Faker';
39+
$this->stdout('Generating fake data for ' . StringHelper::basename($modelClassName, 'Faker.php') . '...');
3340
$faker = new $className;
3441
for($i = 0; $i < 10; $i++) {
3542
$model = $faker->generateModel();
@@ -51,18 +58,13 @@ public function actionClear($requireConfirm = true): int
5158
return ExitCode::OK;
5259
}
5360

54-
$fakers = FileHelper::findFiles(\Yii::getAlias('@common/models'), [
55-
'only' => ['*Faker.php'],
56-
'except' => ['BaseModelFaker.php'],
57-
]);
58-
59-
$sortedFakersModels = static::sortModels($fakers, '\\common\\models\\faker\\');
61+
$sortedFakersModels = $this->getFakersModels();
6062
$sortedFakersModels_DESC = array_reverse($sortedFakersModels);
61-
foreach ($sortedFakersModels_DESC as $modelName) {
63+
foreach ($sortedFakersModels_DESC as $modelClassName) {
6264
/** @var Model $modelClass */
63-
$modelClass = 'common\\models\\base\\'.$modelName;
65+
$modelClass = 'common\\models\\base\\'.$modelClassName;
6466
Yii::$app->db->createCommand()->delete($modelClass::tableName())->execute();
65-
$this->stdout("Data from $modelName was deleted\n");
67+
$this->stdout("Data from $modelClassName was deleted\n");
6668
}
6769
return ExitCode::OK;
6870
}
@@ -146,4 +148,18 @@ public static function moveModel(&$sortedDependentModels, $dependentOn, $model)
146148

147149
$sortedDependentModels = array_merge($restLeft, [$dependentOn], $restRight);
148150
}
151+
152+
/**
153+
* @return int[]|string[]
154+
*/
155+
private function getFakersModels(): array
156+
{
157+
$fakers = FileHelper::findFiles(\Yii::getAlias('@common/models'), [
158+
'only' => ['*Faker.php'],
159+
'except' => ['BaseModelFaker.php'],
160+
]);
161+
162+
$sortedFakersModels = static::sortModels($fakers, '\\common\\models\\faker\\');
163+
return $sortedFakersModels;
164+
}
149165
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /