NAME

Moodle

ABSTRACT

Mojo DB Driver Migrations

SYNOPSIS

# migration: step #1

package Migration::Step1;

use parent 'Doodle::Migration';

no warnings 'redefine';

sub up {
  my ($self, $doodle) = @_;

  my $table = $doodle->table('users');
  $table->primary('id');
  $table->create;

  return $doodle;
}

sub down {
  my ($self, $doodle) = @_;

  my $table = $doodle->table('users');
  $table->delete;

  return $doodle;
}

# migration: step #2

package Migration::Step2;

use parent 'Doodle::Migration';

no warnings 'redefine';

sub up {
  my ($self, $doodle) = @_;

  my $table = $doodle->table('users');
  $table->string('email')->create;

  return $doodle;
}

sub down {
  my ($self, $doodle) = @_;

  my $table = $doodle->table('users');
  $table->string('email')->delete;

  return $doodle;
}

# migration: root

package Migration;

use parent 'Doodle::Migration';

sub migrations {[
  'Migration::Step1',
  'Migration::Step2',
]}

# main program

package main;

use Moodle;

my $self = Moodle->new(
  driver => $main::driver,
  migrator => Migration->new
);

# $self->migrate;

DESCRIPTION

This package uses Doodle with Mojo database drivers to easily install and evolve database schema migrations. See Doodle::Migration for help setting up Doodle migrations, and Mojo::Pg, Mojo::mysql or Mojo::SQLite for help configuring DB drivers.

LIBRARIES

This package uses type constraints from:

Moodle::Library

ATTRIBUTES

This package has the following attributes:

driver

driver(Driver)

This attribute is read-only, accepts (Driver) values, and is required.

migrator

migrator(Migrator)

This attribute is read-only, accepts (Migrator) values, and is required.

METHODS

This package implements the following methods:

content

content() : Str

This method generates DB migration statements returning a string containing "UP" and "DOWN" versioned migration strings suitable for use with the migration feature of Mojo database drivers.

content example #1
# given: synopsis

my $content = $self->content;

migrate

migrate(Maybe[Str] $target) : Object

This method uses the DB migration statements generated by the "content" method and installs them using the Mojo database driver. This method returns a migration object relative to the DB driver used.

migrate example #1
# given: synopsis

my $migrate = $self->migrate;

AUTHOR

Al Newkirk, awncorp@cpan.org

LICENSE

Copyright (C) 2011-2019, Al Newkirk, et al.

This is free software; you can redistribute it and/or modify it under the terms of the The Apache License, Version 2.0, as elucidated in the "license file".

PROJECT

Wiki

Project

Initiatives

Milestones

Contributing

Issues