The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Mock::Transaction;
use strict;
use warnings;
use base 'Data::Model';
use Data::Model::Schema;

base_driver $main::DRIVER;
install_model user => schema {
    key 'id';
    index 'name';

    column id => int => { auto_increment => 1 };
    columns qw/ name nickname /;

    schema_options create_sql_attributes => {
        mysql => 'ENGINE=InnoDB',
    };
};

install_model user2 => schema {
    key 'name';

    columns qw/ name nickname /;

    schema_options create_sql_attributes => {
        mysql => 'ENGINE=InnoDB',
    };
};

install_model user3 => schema {
    key 'name';

    columns qw/ name nickname /;

    schema_options create_sql_attributes => {
        mysql => 'ENGINE=InnoDB',
    };
};

install_model is_base => schema {
    driver $main::DRIVER;
    key 'id';

    columns qw/ id name nickname /;

    schema_options create_sql_attributes => {
        mysql => 'ENGINE=InnoDB',
    };
};

install_model isnot_base => schema {
    my $class = ref($main::DRIVER);
    driver bless { %{ $main::DRIVER } }, $class;

    key 'id';

    columns qw/ id name nickname /;

    schema_options create_sql_attributes => {
        mysql => 'ENGINE=InnoDB',
    };
};

1;