DBIx::Class::EasyConf::YAML - DBIx::Class Component for text based schema configuration
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
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.
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.
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.
kevin montuori <email@example.com>
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.