After a lot of searching and even questions in the dancer's chat, I decided to write my own extremely simple solution that can be used with Dancer2 easily.
My first Perl cpan module: DBIx::Schema::Migration.
To use it with Dancer2 update your config.yml with:
migrations:
directory: db/migrations
Then create db/migrations directory and put the sql migrations files there. All conventions are described in module documentation.
Create migration script: migration.pl
use Dancer2;
use Dancer2::Plugin::Database;
use DBIx::Schema::Migration;
my $dir = config->{migrations}->{directory};
# Instantinating Migration object.
my $migration = DBIx::Schema::Migration->new( {
dbh => database,
dir => $dir,
} );
# CLI logic.
my ($action, $num) = @ARGV;
SWITCH: for ($action) {
if (/up/) { $migration->up($num); last SWITCH; }
if (/down/) { $migration->down($num); last SWITCH; }
if (/init/) { $migration->init(); last SWITCH; }
}
That's all. You can use it via CLI:
perl migration.pl up
perl migration.pl down
perl migration.pl init
|