Skip to content

ben-challis/sql-migrations

Folders and files

NameName
Last commit message
Last commit date

Latest commit

43c14fc Β· Feb 28, 2024
Sep 1, 2023
Sep 1, 2023
Sep 1, 2023
Dec 31, 2022
Jan 1, 2023
Jan 5, 2023
Dec 31, 2022
Oct 9, 2023
Jan 1, 2023
Jan 16, 2024
Feb 28, 2024
Sep 1, 2023
Sep 1, 2023
Dec 31, 2022
Sep 1, 2023

Repository files navigation

Continuous Integration

SQL Migrations

Work in progress

An SQL database migrations library based on AMP. Currently only supports MySQL.

use Amp\Mysql\MysqlConfig;
use Amp\Sync\LocalMutex;
use BenChallis\SqlMigrations\ClassDiscovery\PhpNamespace;
use BenChallis\SqlMigrations\ClassDiscovery\ReadableDirectory;
use BenChallis\SqlMigrations\Migration\Discovery\RevisionDiscovererFactory;
use BenChallis\SqlMigrations\Migration\Metadata\MySql\MySqlMetadataStore;
use BenChallis\SqlMigrations\Migration\Metadata\MySql\MySqlSchemaManager;
use BenChallis\SqlMigrations\Migration\Metadata\SchemaUpdatingMetadataStore;
use BenChallis\SqlMigrations\Migration\MigrationCollector;
use BenChallis\SqlMigrations\Migration\MigrationsFactory;
use BenChallis\SqlMigrations\Migration\Migrator;
use function Amp\Mysql\connect;

$connection = connect(MysqlConfig::fromAuthority(DB_HOST, DB_USER, DB_PASS, DB_DATABASE));
$metadata = new SchemaUpdatingMetadataStore(
    new MySqlSchemaManager(DB_DATABASE), 
    $connection, 
    new MySqlMetadataStore($connection)
);

$migrations = MigrationsFactory::create(
    $metadata,
    new MigrationCollector(
        $metadata, 
        RevisionDiscovererFactory::create(ReadableDirectory::fromString(__DIR__.'/vendor')),
    ),
    PhpNamespace::fromString('App\Migrations'),
);

$migrator = new Migrator($migrations, $connection);

$migrator->migrate(new LocalMutex()); // You'll want to use a distributed (i.e. Redis) lock instead here.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages