NAME
Doodle::Migrator
ABSTRACT
Database Migrator Class
SYNOPSIS
# in lib/My/Migrator.pm
package My::Migrator;
use parent 'Doodle::Migrator';
sub namespace {
return 'My::Migration';
}
# in lib/My/Migration/Step1.pm
package My::Migration::Step1;
use parent 'Doodle::Migration';
sub up {
my ($self, $doodle) = @_;
# add something ...
return $doodle;
}
sub down {
my ($self, $doodle) = @_;
# subtract something ...
return $doodle;
}
# in script
package main;
my $migrator = My::Migrator->new;
my $results = $migrator->migrate('up', 'sqlite', sub {
my ($sql) = @_;
# e.g. $dbi->do($_) for @$sql;
return 1;
});
1;
DESCRIPTION
This package provides a migrator class which collects the specified Doodle::Migration classes and processes them.
METHODS
This package implements the following methods.
migrate
migrate(Str $updn, Str $grammar, CodeRef $callback) : [Any]
The migrate method collects all processed statements and iterates over the "UP" or "DOWN" SQL statements, passing the set of SQL statements to the supplied callback with each iteration.
- migrate example
-
my $migrate = $self->migrate('up', 'sqlite', sub { my ($sql) = @_; # do something ... return 1; });
migrations
migrations() : [Object]
The migrations method find and loads child objects under the namespace
and returns a set of Data::Object::Space objects representing classes that have subclassed the Doodle::Migration base class.
namespace
namespace() : Str
The namespace method returns the root namespace where all child Doodle::Migration classes can be found.
statements
statements(Str $grammar) : [[[Str],[Str]]]
The statements method loads and processes the migrations using the grammar specified. This method returns a set of migrations, each containing a set of "UP" and "DOWN" sets of SQL statements.