Announcing DBIx::Class::Candy
Over a year ago I read this blog post. To be honest at the time I thought it was mostly silly and I still feel that way. The things that are important to me in an ORM are capabilities, not subjective prettiness of code. But, I also get tired of typing repetitive things, especially __PACKAGE__->. That’s just too many shift keys! So after working on a few different modules and accruing various bits of knowledge here and there I learned what I needed to to create a sugar layer for DBIx::Class that doesn’t throw the baby out with the bath-water.
I am proud to announce the initial, development version of DBIx::Class::Candy, which should be coming to a CPAN mirror near you very soon. If you just can’t wait, use cpanf to get it right now. The basic gist of it is that you can use:
package MyApp::Schema::Result::Artist;
use DBIx::Class::Candy;
table 'artists';
column id => {
data_type => 'int',
is_auto_increment => 1,
};
column name => {
data_type => 'varchar',
size => 25,
is_nullable => 1,
};
primary_key 'id';
has_many albums => 'A::Schema::Result::Album', 'artist_id';
1;
instead of
package MyApp::Schema::Result::Artist;
use strict;
use warnings;
use base 'DBIx::Class::Core';
__PACKAGE__->table('artists');
__PACKAGE__->add_columns(
id => {
data_type => 'int',
is_auto_increment => 1,
},
name => {
data_type => 'varchar',
size => 25,
is_nullable => 1,
}
);
__PACKAGE__->set_primary_key('id');
__PACKAGE__->has_many( albums => 'A::Schema::Result::Album', 'artist_id' );
1;
There are a few other features, like having it turn on 5.10 or 5.12 features, use a non standard base, and more. Check it out now!
Posted Wed, Jul 21, 2010If you're interested in being notified when new posts are published, you can subscribe here; you'll get an email once a week at the most.