NAME

GitDDL::Migrator - database migration utility for git managed SQL extended GitDDL

SYNOPSIS

use GitDDL::Migrator;
my $gd = GitDDL::Migrator->new(
    work_tree => '/path/to/project', # git working directory
    ddl_file  => 'sql/schema_ddl.sql',
    dsn       => ['dbi:mysql:my_project', 'root', ''],
);

DESCRIPTION

GitDDL::Migrator is database migration utility extended GitDDL.

GitDDL is very cool module. It's very simple and developer friendly. I use it in development, but features of it are not enough in operation phase.

Features needed at operation phases are: e.g.

save migration history
rollback to previous version
specify version
specify SQL (sometimes SQL::Translator's output is wrong)
check differences from versioned SQL and real database

Then for solving them, I wrote GitDDL::Migrator.

METHODS

GitDDL::Migrator->new(%options)

Create GitDDL::Migrator object. Available options are:

work_tree => 'Str' (Required)

Git working tree path includes target DDL file.

ddl_file => 'Str' (Required)

DDL file ( .sql file) path in repository.

If DDL file located at /repos/project/sql/schema.sql and work_tree root is /repos/project, then this option should be sql/schema.sql

dsn => 'ArrayRef' (Required)

DSN parameter that pass to DBI module.

version_table => 'Str' (optional)

database table name that contains its git commit version. (default: git_ddl_version)

ignore_tables => 'ArrayRef' (optional)

tables for ignoring when calling check_ddl_mismatch(). (default: empty)

$gd->migrate(%opt)

migrate database

$gd->real_diff

display differences from versioned DDL and real database setting.

$gd->diff_to_real_database

alias of real_diff

$gd->diff_from_real_database

display differences from real database setting and versioned DDL.

$gd->check_ddl_mismatch

check differences from versioned DDL and real database setting.

$gd->get_rollback_version

get previous database version.

$gd->rollback_diff

display differences SQL from current version and previous version.

$gd->create_version_table

Only create version table, don't deploy any other SQLs. It is useful to apply GitDDL::Migrator to existing databases.

LICENSE

Copyright (C) Masayuki Matsuki.

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

AUTHOR

Masayuki Matsuki <y.songmu@gmail.com>