mepihindeveloper / php-sql-migration
Component for working with SQL migrations
Requires
- php: >=7.4
- mepihindeveloper/php-console: >=1.0
- mepihindeveloper/php-database: >=1.0
This package is auto-updated.
Last update: 2024-11-13 05:11:05 UTC
README
Компонент для работы с SQL миграциями.
В компоненте реализован основной класс SqlMigration
, который выполняет базовые операции по работе с миграциями.
Большинство методов возвращает наборы данных или логические значения. Данный подход позволит написать практически любую
обертку для собственных нужд.
Как пример реализации обертки был реализован класс ConsoleSqlMigration
, которые наследуется от SqlMigration
и
переопределяет его методы. Переопределение первоначально вызывает parent::
после чего реализует дополнительную логику
в выводе сообщений в консоль (терминал).
Для реализации компонента необходимо передать класс реализующий интерфейс DatabaseInterface
и массив настроек.
Обязательными параметрами в настройках являются:
- schema - схема в базе данных для миграций
- table - таблица в базе данных для миграций
- path - путь в файловой структуре для папки с миграциями
Компонент самостоятельно проверяет и создает необходимые (указанные) схемы, таблицы и папки при наличии заранее определенных разрешений (прав). Для корректной работы с базой данных необходимо заранее установить соединение с ней.
Для использования компонента достаточно создать экземпляр класса и вызвать нужный метод:
$sqlMigration = new SqlMigration($database, [ 'schema' => 'migrations', 'table' => 'migration', 'path' => 'migrations' ]); $sqlMigration->up();
Для работы с консолью достаточно создать файл управления миграциями и вызвать его через php FILE ACTION PARAMS
:
php migrate up
php migrate down 2
Файл автоматической обработки таких запросов может выглядеть следующим образом:
#!/usr/bin/env php <?php declare(strict_types = 1); use mepihindeveloper\components\{Console, ConsoleSqlMigration, Database}; require_once 'vendor/autoload.php'; $database = new Database([ 'dbms' => 'pgsql', 'host' => 'localhost', 'dbname' => 'php', 'user' => 'www-data', 'password' => 'pass' ]); $database->connect(); $sqlMigration = new ConsoleSqlMigration($database, [ 'schema' => 'migrations', 'table' => 'migration', 'path' => 'migrations' ]); $method = $argv[1]; $params = $argv[2] ?? null; if (!method_exists($sqlMigration, $method)) { Console::writeLine("Неопознанная команда '{$method}'", Console::FG_RED); exit; } return is_null($params) ? $sqlMigration->$method() : $sqlMigration->$method($params);
Структура
src/
--- exceptions/
--- interfaces/
--- SqlMigration.php
--- ConsoleSqlMigration.php
В директории exceptions
хранятся специальные исключения компонента: SqlMigrationException
.
В директории interfaces
хранятся необходимые интерфейсы, которые необходимо имплементировать в при реализации
собственного класса SqlMigration
.
Класс SqlMigration
реализует интерфейс SqlMigrationInterface
для управления SQL миграциями.
Доступные методы
Контакты
Вы можете связаться со мной в социальной сети ВКонтакте: ВКонтакте: Максим Епихин
Если удобно писать на почту, то можете воспользоваться этим адресом: mepihindeveloper@gmail.com
Мой канал на YouTube, который посвящен разработке веб и игровых проектов: YouTube: Максим Епихин
Поддержать меня можно переводом на Яндекс.Деньги: Денежный перевод