Skip to content

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

+35-19
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)