Console brick

Міграції, seed і разові задачі не повинні жити в HTTP-контролері: немає request/response, а «запустити очистку» через endpoint — зайва поверхня атаки. addConsole() на ConceptStack реєструє Symfony Console Application і список команд. Повертає ConsoleBuilder. У треку рецептів з’являється на кроці База даних разом із migrate/seed.

Навіщо окремий brick, а не «автоматично з Database»: CLI без БД (черги, cron, одноразові скрипти) теж потрібен Console; навпаки, HTTP-only додаток може не тягнути CLI-команди міграцій. Команди з extension-database реєструєте явно в setCommands([...]) — Stack їх не підтягує «про запас».

Методи ConsoleBuilder:

Метод Параметри Опис Залежність
setName() string $appName Ім’я Application у --help / banner —
setVersion() string $appVersion Версія CLI-додатку —
setCommands() list<class-string<Command>> Класи команд, які потрапляють у Application для db:* — Database

setName()

$stack->addConsole()
    ->setName('Recipes');

Ім’я видно в bin/console.php list і help. Це ідентифікатор CLI-процесу, не HTTP-host: зручно відрізняти кілька проєктів на одній машині.

setVersion()

$stack->addConsole()
    ->setVersion('1.0.0');

Версія Application — для операторів і CI («який білд крутить migrate»), не для semver пакета Stack.

setCommands()

use Concept\Extensions\DatabaseEloquent\Console\DbMigrateCommand;
use Concept\Extensions\DatabaseEloquent\Console\DbRollbackCommand;
use Concept\Extensions\DatabaseEloquent\Console\DbMigrationListCommand;
use Concept\Extensions\DatabaseEloquent\Console\DbSeedCommand;
use Concept\Extensions\DatabaseEloquent\Console\DbSeederListCommand;

$stack->addConsole()
    ->setName('Recipes')
    ->setVersion('1.0.0')
    ->setCommands([
        DbMigrateCommand::class,
        DbRollbackCommand::class,
        DbMigrationListCommand::class,
        DbSeedCommand::class,
        DbSeederListCommand::class,
    ]);

Список — class-string команд Symfony Console. Шляхи міграцій і класи seeders — на Database brick (setMigrations / setSeeders); Console лише викликає вже зареєстровані сервіси. Entry point — bin/console.php (тонкий: bootstrap → $app->run()).

Що реєструє brick

  • Symfony Console Application з name/version
  • Зареєстровані команди з setCommands() (lazy / DI за convention пакета)

Рецепт — 6. База даних (блок Console). Каталог — Bricks і addX(). Extension — Console.