webed/seed-flow

SeedFlow - manage seeders like migrations with environment support, rollback, and strict execution order.

Maintainers

Package info

github.com/bitcasterx/seed-flow

pkg:composer/webed/seed-flow

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 1

Open Issues: 0

v1.0.0 2026-01-20 10:29 UTC

This package is auto-updated.

Last update: 2026-03-20 10:55:41 UTC


README

Русский | English

SeedFlow — Laravel-пакет для управления сидерами как миграциями: строгий порядок, учет выполненных, привязка к среде (env), rollback.

Для чего этот пакет?

Во многих проектах stage/test/prod — это большие “боевые” базы данных. Чтобы новому разработчику начать работу, часто приходится:

  • скачивать дамп к себе (долго, тяжело, иногда невозможно);
  • или подключаться к удаленной базе, рискуя повлиять на ее стабильность и/или допустить утечку данных.

Это не только неудобно, но и создает существенные риски безопасности и конфиденциальности.

Отсутствие сидеров в проекте — антипаттерн, который заметно замедляет онбординг и усложняет воспроизводимость окружения.

SeedFlow помогает строить разработку и тестирование на искусственных данных:

  • данных обычно нужно не много, но они должны покрывать кейсы для удобного ручного/авто тестирования;
  • в тестовой базе можно задать “удобные” правила (например, один пароль для всех, email в стиле user@email.ru);
  • можно завести отдельные сидеры под test-среду, чтобы не повторять одно и то же в тестах.

Быстрый старт

  1. Установите пакет
composer config repositories.seed-flow vcs git@github.com:bitcasterx/seed-flow.git
composer require webed/seed-flow:^1.0
  1. Создайте таблицу учета (обычная миграция Laravel)
php artisan migrate
  1. Создайте сидер для нужной среды
php artisan webed:seedflow:make create_roles_seeder --env=dev
  1. Запустите сидирование
php artisan webed:seedflow:seed --env=dev
  1. (опционально) Откатите последний сидер
php artisan webed:seedflow:rollback --env=dev --steps=1

Проверить требования

  • PHP 8.2+
  • Laravel 8+

Понять структуру

Сидеры лежат по средам:

  • database/seeders/SeedFlow/dev/
  • database/seeders/SeedFlow/test/
  • database/seeders/SeedFlow/stage/
  • database/seeders/SeedFlow/prod/

Таблица учета:

  • webed_processed_seeders (id, seeder, env, processed_at)

Создать новый сидер

php artisan webed:seedflow:make <name> --env=dev,stage
  • Путь: database/seeders/SeedFlow/{env}/
  • Имя файла: timestamp_name.php (как у миграций)
  • Класс: отдельный для каждого env, методы up() и down()

Запустить сидирование

php artisan webed:seedflow:seed [--env=dev] [--force]
  • env по умолчанию: берется из APP_ENV
  • Запускаются только невыполненные сидеры (учет в webed_processed_seeders)
  • Строгий порядок: по имени файла (timestamp)

Если в таблице учета обнаружены записи другой среды (например, после импорта базы), выполнение заблокировано и требует флага:

  • --force

Пример вывода:

2025_01_01_000001_create_roles_seeder ..... ok

Откатить сидеры

php artisan webed:seedflow:rollback [--env=dev] [--steps=3]
  • Откатывает последние N сидеров текущей среды
  • Вызывает down() (может быть пустым)
  • Удаляет запись из webed_processed_seeders

Rollback возможен только внутри одной env. Если в таблице есть сидеры другой среды → ошибка.

Использовать разные среды разработки

  • dev: удобные данные для локальной разработки (например, “универсальный пароль”)
  • test: стабильные данные для автотестов/интеграционных проверок
  • stage: данные, близкие к предпрод-окружению
  • prod: сидирование прод окружения (обычно осторожно и минимально)