NAME

DBIx::Class::EasyConf::YAML - DBIx::Class Component for text based schema configuration

SYNOPSIS

package MyApp::Schema::Result::SomeTable;
use parent qw[ DBIx::Class::Core ];
__PACKAGE__->load_components(qw[ EasyConf::YAML ]);
our $DDL ||= __PACKAGE__->configure();

1;

__DATA__
--->
=head1 NAME

MyAPP::Schema::Result::SomeTable - Random Schema File

=head1 DESCRIPTION
---
  table: some_table
  primary_key: id
  columns:
    id:
      type: int
      nullable: 0
      is_auto_increment: 1
    name:
      type: VARCHAR
      size: 16
      is_nullable: 0
    description:
      type: VARCHAR
      size: 128
      is_nullable: 1
  relationships:
    - other_relation:
        - belongs_to
        - MyApp::Schema::Result::SomeOtherTable
        - id
  unique:
    name_uniq: id
    desc_uniq: 
      - name
      - description
# EndOfYAML

DESCRIPTION

Generates a DBIx::Class::ResultSource from a YAML description. If the YAML is presented as shown in the SYNOPSIS the ResultSource class will be self POD documenting. If the class is executed with 'configuration' in @ARGV, a summary of the ResultSource is printed to standard out.

GOTCHA

Note that relationships sometimes need to be created in a particular order (such is the case when defining many_to_many relationships). Given that, the relationships key takes an array of hashes; watch the indentation carefully (it's correct above). It'd be possible to optionally allow a hash here, but I think that might lead to hard to find errors. Drop me a line if you have a strong opinion.

RATIONALE

The "self-documenting" bit mentioned above. Also, there's a boatload of punctuation and quoting that is required to do this the usual way; it's less error prone, in my opinion, to use YAML as good text editors will do the right thing by it.

AUTHOR

kevin montuori <montuori@gmail.com>

COPYRIGHT AND LICENSE

Copyright (C) 2009 by Kevin Montuori & mconsultancy

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available.