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"
    <https://github.com/iamalnewkirk/moodle/blob/master/LICENSE>.

PROJECT

    Wiki <https://github.com/iamalnewkirk/moodle/wiki>

    Project <https://github.com/iamalnewkirk/moodle>

    Initiatives <https://github.com/iamalnewkirk/moodle/projects>

    Milestones <https://github.com/iamalnewkirk/moodle/milestones>

    Contributing
    <https://github.com/iamalnewkirk/moodle/blob/master/CONTRIBUTE.md>

    Issues <https://github.com/iamalnewkirk/moodle/issues>

