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

column_sugar 'author.id'
    => 'int' => +{
        unsigned => 1,
        required => 1, # we can used to require or required
    };
column_sugar 'author.name'
    => 'varchar' => +{
        size    => 128,
        require => 1,
    };

column_sugar 'book.id'
    => 'int' => +{
        unsigned => 1,
        require  => 1,
    };
column_sugar 'book.title'
    => 'varchar' => +{
        size    => 255,
        require => 1,
    };
column_sugar 'book.description'
    => 'text' => +{
        require => 1,
        default => 'not yet writing'
    };
column_sugar 'book.recommend'
    => 'text';


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

    column 'author.id' => { auto_increment => 1 };
    column 'author.name';
};

install_model book => schema {
    driver $main::DRIVER;
    key 'id';
    index 'author_id';

    column 'book.id'   => { auto_increment => 1 };
    column 'author.id';
    column 'author.id' => 'sub_author_id' => { required => 0 };
    column 'book.title';
    column 'book.description';
    column 'book.recommend';
};

1;