|
| 1 | +# php-sql-migration |
| 2 | + |
| 3 | +Компонент для работы с SQL миграциями. |
| 4 | + |
| 5 | +В компоненте реализован основной класс `SqlMigration`, который выполняет базовые операции по работе с миграциями. |
| 6 | +Большинство методов возвращает наборы данных или логические значения. Данный подход позволит написать практически любую |
| 7 | +обертку для собственных нужд. |
| 8 | + |
| 9 | +Как пример реализации обертки был реализован класс `ConsoleSqlMigration`, которые наследуется от `SqlMigration` и |
| 10 | +переопределяет его методы. Переопределение первоначально вызывает `parent::` после чего реализует дополнительную логику |
| 11 | +в выводе сообщений в консоль (терминал). |
| 12 | + |
| 13 | +Для реализации компонента необходимо передать класс реализующий интерфейс `DatabaseInterface` и массив настроек. |
| 14 | +Обязательными параметрами в настройках являются: |
| 15 | + |
| 16 | +- **schema** - схема в базе данных для миграций |
| 17 | +- **table** - таблица в базе данных для миграций |
| 18 | +- **path** - путь в файловой структуре для папки с миграциями |
| 19 | + |
| 20 | +Компонент самостоятельно проверяет и создает необходимые (указанные) схемы, таблицы и папки при наличии заранее |
| 21 | +определенных разрешений (прав). Для корректной работы с базой данных необходимо заранее установить соединение с ней. |
| 22 | + |
| 23 | +# Структура |
| 24 | + |
| 25 | +``` |
| 26 | +src/ |
| 27 | +--- exceptions/ |
| 28 | +--- interfaces/ |
| 29 | +--- SqlMigration.php |
| 30 | +--- ConsoleSqlMigration.php |
| 31 | +``` |
| 32 | + |
| 33 | +В директории `exceptions` хранятся специальные исключения компонента: `SqlMigrationException`. |
| 34 | + |
| 35 | +В директории `interfaces` хранятся необходимые интерфейсы, которые необходимо имплементировать в при реализации |
| 36 | +собственного класса `SqlMigration`. |
| 37 | + |
| 38 | +Класс `SqlMigration` реализует интерфейс `SqlMigrationInterface` для управления SQL миграциями. |
| 39 | + |
| 40 | +# Доступные методы |
| 41 | + |
| 42 | +| Метод | Аргументы | Возвращаемые данные | Исключения | Описание | |
| 43 | +|-------------------------------------------------------------------|------------------------------------------------------------------------------------------------|---------------------|-----------------------------------------|-----------------------------------------------------------------------------| |
| 44 | +| public function up(int $count = 0) | $count Количество миграция (0 - относительно всех) | array | SqlMigrationException | Применяет указанное количество миграций | |
| 45 | +| public function down(int $count = 0) | $count Количество миграция (0 - относительно всех) | array | SqlMigrationException | Отменяет указанное количество миграций | |
| 46 | +| public function history(int $limit = 0) | $limit Ограничение длины списка (null - полный список) | array | | Возвращает список сообщений о примененных миграций | |
| 47 | +| public function create(string $name) | $name Название миграции | bool | RuntimeException\|SqlMigrationException | Создает новую миграцию и возвращает сообщение об успешном создании миграции | |
| 48 | +| __construct(DatabaseInterface $database, array $settings) | $database Компонент работы с базой данных; array $settings Массив настроек | | SqlMigrationException | Конструктор класса | |
| 49 | +| public function initSchemaAndTable() | | bool | SqlMigrationException | Создает схему и таблицу в случае их отсутствия | |
| 50 | +| public function __destruct() | | | | Деструктор класса | |
| 51 | +| protected function getNotAppliedList() | | array | | Возвращает список не примененных миграций | |
| 52 | +| protected function getHistoryList(int $limit = 0) | $limit Ограничение длины списка (null - полный список) | array | | Возвращает список примененных миграций | |
| 53 | +| protected function execute(array $list, int $count, string $type) | $list Массив миграций; $count Количество миграций для применения; $type Тип миграции (up/down) | array | RuntimeException | Выполняет миграции | |
| 54 | +| protected function addHistory(string $name) | $name Наименование миграции | bool | SqlMigrationException | Добавляет запись в таблицу миграций | |
| 55 | +| protected function removeHistory(string $name) | $name Наименование миграции | bool | SqlMigrationException | Удаляет миграцию из таблицы миграций | |
| 56 | +| protected function validateName(string $name) | $name Название миграции | void | SqlMigrationException | Проверяет имя миграции на корректность | |
| 57 | +| protected function generateName(string $name) | string $name Название миграции | string | | Создает имя миграции по шаблону: m{дата в формате Ymd_His}_name | |
| 58 | + |
| 59 | +# Контакты |
| 60 | + |
| 61 | +Вы можете связаться со мной в социальной сети ВКонтакте: [ВКонтакте: Максим Епихин](https://vk.com/maximepihin) |
| 62 | + |
| 63 | +Если удобно писать на почту, то можете воспользоваться этим адресом: mepihindeveloper@gmail.com |
| 64 | + |
| 65 | +Мой канал на YouTube, который посвящен разработке веб и игровых |
| 66 | +проектов: [YouTube: Максим Епихин](https://www.youtube.com/channel/UCKusRcoHUy6T4sei-rVzCqQ) |
| 67 | + |
| 68 | +Поддержать меня можно переводом на Яндекс.Деньги: [Денежный перевод](https://yoomoney.ru/to/410012382226565) |
0 commit comments