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

NAME

DBIx::DataModel::Meta::Schema - Meta-information about a DBIx::DataModel schema

SYNOPSIS

See synopsis in DBIx::DataModel.

DESCRIPTION

An instance of this class holds meta-information about a DBIx::DataModel schema; so it is called a meta-schema. Within the schema class, the metadm method points to the meta-schema; within the meta-schema instance, the class method points to the associated class. Both are created together: the new() method simultaneously builds a subclass of DBIx::DataModel::Schema, and an instance of DBIx::DataModel::Meta::Schema.

The meta-schema instance contains information about :

  • possible application-specific subclasses of the builtin DBIx::DataModel classes for statements, associations, types, etc.

  • possible overriding of methods at the DBI layer

  • global specifications for columns that should be automatically inserted or updated in every table.

  • lists of tables, types, associations declared within that schema.

and it contains methods for declaring those meta-objects.

CONSTRUCTOR

new

  my $meta_schema = DBIx::DataModel::Meta::Schema->new(%args);

Simultaneously creates a new subclass of DBIx::DataModel::Schema, and an new instance of DBIx::DataModel::Meta::Schema. Arguments are described in the reference documentation.

FRONT-END METHODS FOR DECLARING SCHEMA MEMBERS

Table

  $meta_schema->Table($class_name, $db_name, @primary_key, \%options);

View

  $meta_schema->View($class_name, $columns, $db_tables, 
                     \%where, @parent_tables);

Association

  $schema->Association([$class1, $role1, $multiplicity1, @columns1],
                       [$class2, $role2, $multiplicity2, @columns2]);

Composition

  $schema->Composition([$class1, $role1, $multiplicity1, @columns1], 
                       [$class2, $role2, $multiplicity2, @columns2]);

Type

  $meta_schema->Type($type_name => 
     $handler_name_1 => sub { ... },
     ...
   );

PRIVATE METHODS

_parse_association_end

Utility methods for parsing both ends of an association declaration.

_parse_join_path

Utility method for parsing arguments to "join", finding the most appropriate source for each path item, retrieving implicit left or inner connectors, and keeping track of aliases.