The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Anego - The database migration utility as our elder sister.

SYNOPSIS

    # show status
    $ anego status

    RDBMS:        MySQL
    Database:     myapp
    Schema class: MyApp::DB::Schema (lib/MyApp/DB/Schema.pm)

    Hash     Commit message
    --------------------------------------------------
    e299e9f  commit
    1fdc91a  initial commit

    # migrate to latest schema
    $ anego migrate

    # migrate to schema of specified revision
    $ anego migrate revision 1fdc91a

    # show difference between current database schema and latest schema
    $ anego diff

    # show difference between current database schema and schema of specified revision
    $ anego diff revision 1fdc91a

DESCRIPTION

Anego is database migration utility.

CONFIGURATION

Anego requires configuration file. In default, Anego uses .anego.pl as configuration file.

    # .anego.pl
    +{
        connect_info => ['dbi:mysql:database=myapp;host=localhost', 'root'],
        schema_class => 'MyApp::DB::Schema',
    }

If you want to use other files for configuration, you can use -c option: anego status -c ./config.pl

SCHEMA CLASS

To define database schema, Anego uses DBIx::Schema::DSL:

    package MyApp::DB::Schema;
    use strict;
    use warnings;
    use DBIx::Schema::DSL;

    create_table 'author' => columns {
        integer 'id', primary_key, auto_increment;
        varchar 'name', unique;
    };

    create_table 'module' => columns {
        integer 'id', primary_key, auto_increment;
        varchar 'name';
        text    'description';
        integer 'author_id';

        add_index 'author_id_idx' => ['author_id'];

        belongs_to 'author';
    };

    1;

LICENSE

Copyright (C) papix.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

AUTHOR

papix <mail@papix.net>