No description or website provided.
Perl
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib/GitDDL
t
.gitignore
.travis.yml
Build.PL
Changes
LICENSE
META.json
README.md
TODO
cpanfile

README.md

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