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