The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Mock::Pg::Schema;
use DBIx::Skinny connect_info => +{};

sub setup_test_db {
    my $self = shift;
    my @statements = (
        q{
            CREATE SCHEMA foo
        },
        q{
            CREATE SCHEMA bar
        },
        q{
            CREATE TABLE foo.books (
                id         serial primary key,
                author_id  int,
                name       varchar(255)
            )
        },
        q{
            CREATE TABLE foo.authors (
                id           int,
                gender_name  varchar(255),
                pref_name    varchar(255),
                name         varchar(255)
            )
        },
        q{
            CREATE TABLE bar.genders (
                name  varchar(255)
            )
        },
        q{
            CREATE TABLE bar.prefectures (
                id    int,
                name  varchar(255) primary key
            )
        },
        q{
            CREATE TABLE foo.composite (
                id   int,
                name varchar(255),
                primary key (id, name)
            )
        },
        q{
            CREATE TABLE bar.no_pk (
                code int,
                name varchar(255)
            )
        },
    );
    $self->do($_) for @statements;
}

sub clean_test_db {
    my $self = shift;
    my @statements = (
        q{ DROP TABLE foo.authors },
        q{ DROP TABLE foo.books },
        q{ DROP TABLE foo.composite },
        q{ DROP TABLE bar.genders },
        q{ DROP TABLE bar.no_pk },
        q{ DROP TABLE bar.prefectures },
        q{ DROP SCHEMA foo },
        q{ DROP SCHEMA bar }
    );
    $self->do($_) for @statements;
}

1;