The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
NAME

    MySQL::Workbench::DBIC - create DBIC scheme for MySQL workbench .mwb
    files

VERSION

    version 1.00

SYNOPSIS

        use MySQL::Workbench::DBIC;
    
        my $foo = MySQL::Workbench::DBIC->new(
            file           => '/path/to/file.mwb',
            output_path    => $some_path,
            namespace      => 'MyApp::DB',
            version_add    => 0.01,
            column_details => 1, # default 1
            use_fake_dbic  => 1, # default 0
        );
    
        $foo->create_schema;

METHODS

 new

    creates a new object of MySQL::Workbench::DBIC. You can pass some
    parameters to new:

      my $foo = MySQL::Workbench::DBIC->new(
        output_path       => '/path/to/dir',
        input_file        => '/path/to/dbdesigner.file',
        namespace         => 'MyApp::Database',
        version_add       => 0.001,
        schema_name       => 'MySchema',
        column_details    => 1,
        use_fake_dbic     => 1, # default 0.
        belongs_to_prefix => 'fk_',
        has_many_prefix   => 'has_',
        uppercase         => 1,
      );

    use_fake_dbic is helpful when DBIx::Class is not installed on the
    machine where you use this module.

 create_schema

    creates all the files that are needed to work with DBIx::Class schema:

    The main module that loads all classes and one class per table. If you
    haven't specified an input file, the module will croak.

ATTRIBUTES

 output_path

    sets / gets the output path for the scheme

      print $foo->output_path;

 input_file

    sets / gets the name of the Workbench file

      print $foo->input_file;

 column_details

    If enabled, the column definitions are more detailed. Default:
    disabled.

    Standard (excerpt from Result classes):

      __PACKAGE__->add_columns( qw/
        cert_id
        register_nr
        state
      );

    With enabled column details:

      __PACKAGE__->add_columns(
        cert_id => {
          data_type         => 'integer',
          is_nullable       => 0,
          is_auto_increment => 1,
        },
        register_nr => {
          data_type   => 'integer',
          is_nullable => 0,
        },
        state => {
          data_type     => 'varchar',
          size          => 1,
          is_nullable   => 0,
          default_value => 'done',
        },
      );

    This is useful when you use DBIx::Class::DeploymentHandler to deploy
    the columns correctly.

 version_add

    The files should be versioned (e.g. to deploy the DB via
    DBIx::Class::DeploymentHandler). On the first run the version is set to
    "0.01". When the schema file already exists, the version is increased
    by the value of version_add (default: 0.01)

 schema_name

    sets a new name for the schema. By default on of these names is used:

      DBIC_Scheme Database DBIC MyScheme MyDatabase DBIxClass_Scheme

 namespace

    sets / gets the name of the namespace. If you set the namespace to
    'Test' and you have a table named 'MyTable', the main module is named
    'Test::DBIC_Scheme' and the class for 'MyTable' is named
    'Test::DBIC_Scheme::MyTable'

 prefix

    In relationships the accessor for the objects of the "other" table
    shouldn't have the name of the column. Otherwise it is very clumsy to
    get the orginial value of this table.

      'belongs_to' => 'fk_'
      'has_many' => 'has_'

    creates (col1 is the column name of the foreign key)

      __PACKAGE__->belongs_to( 'fk_col1' => 'OtherTable', {'foreign.col1' => 'self.col1' } );

 uppercase

    When uppercase is set to true the package names are CamelCase. Given
    the table names user, user_groups and groups, the package names would
    be *::User, *::UserGroups and *::Groups.

 skip_indexes

    When skip_indexes is true, the sub sqlt_deploy_hook that adds the
    indexes to the table is not created

 belongs_to_prefix

 has_many_prefix

 has_one_prefix

 many_to_many_prefix

 version

 use_fake_dbic

 classes

 file

 table_comments

    When this flag is used, MySQL::Workbench::DBIC assumes that (some)
    tables have stored extra information for columns in the table comments.
    This must be in JSON format.

AUTHOR

    Renee Baecker <reneeb@cpan.org>

COPYRIGHT AND LICENSE

    This software is Copyright (c) 2018 by Renee Baecker.

    This is free software, licensed under:

      The Artistic License 2.0 (GPL Compatible)