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

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.