NAME

GitHubDDL - GitDDL compatibility database migration utility when hosted on GitHub

SYNOPSIS

use GitHubDDL;
my $gd = GitHubDDL->new(
    ddl_file     => 'sql/schema_ddl.sql',
    dsn          => ['dbi:mysql:my_project', 'root', ''],
    ddl_version  => '...',
    github_user  => '<your GitHub user/org name>',
    github_repo  => '<your GitHub repository name>',
    github_token => '<your GitHub token>',
);

# checking whether the database version matchs ddl_file version or not.
$gd->check_version;

# getting database version
my $db_version = $gd->database_version;

# getting ddl version
my $ddl_version = $gd->ddl_version;

# upgrade database
$gd->upgrade_database;

# deploy ddl
$gd->deploy;

DESCRIPTION

GitHubDDL is a tool module of the migration for RDBMS uses SQL::Translator::Diff.

This is database migration helper module for users who manage database schema version by single .sql file in git repository.

By using this module, you can deploy .sql to database, check sql version between database and .sql file, make diff between them, and apply alter table to database.

METHODS

GitHubDDL->new(%options)

my $gd = GitHubDDL->new(
    ddl_file     => 'sql/schema_ddl.sql',
    dsn          => ['dbi:mysql:my_project', 'root', ''],
    ddl_version  => '...',
    github_user  => '<your GitHub user/org name>',
    github_repo  => '<your GitHub repository name>',
    github_token => '<your GitHub token>',
);

Create GitHubDDL object. Available options are:

check_version()

Compare versions latest ddl sql and database, and return true when both version is same.

Otherwise return false, which means database is not latest. To upgrade database to latest, see upgrade_database method described below.

database_version()

Return git commit hash indicates database's schema.

ddl_version()

Return git commit hash indicates ddl file.

deploy()

Just deploy ddl_file schema to database. This method is designed for initial database setup. But database should be created previously.

diff()

Show sql differences between ddl file and database. This method is useful for dry-run checking before upgrade_database.

upgrade_database()

Upgrade database schema to latest ddl schema.

SEE ALSO

LICENSE

Copyright (C) mackee.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

AUTHOR

mackee macopy123@gmail.com