Renee Baecker > MySQL-Workbench-DBIC-0.07 > MySQL::Workbench::DBIC

Download:
MySQL-Workbench-DBIC-0.07.tar.gz

Dependencies

Annotate this POD

Website

View/Report Bugs
Module Version: 0.07   Source  

NAME ^

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

VERSION ^

version 0.07

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.

AUTHOR ^

Renee Baecker <reneeb@cpan.org>

COPYRIGHT AND LICENSE ^

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

This is free software, licensed under:

  The Artistic License 2.0 (GPL Compatible)
syntax highlighting: