Since I have a current DBIC working copy on my HD now, I also offer this
patch to be applied. It lets you set an inflator for multiple columns
at once, as described in my email one month ago:
http://lists.scsys.co.uk/pipermail/dbix-class/2006-October/002687.html
--
Bernhard Graf
--- DBIx/Class/InflateColumn.pm (revision 2947)
+++ DBIx/Class/InflateColumn.pm (working copy)
@@ -31,18 +31,18 @@
=head2 inflate_column
-Instruct L<DBIx::Class> to inflate the given column.
+Instruct L<DBIx::Class> to inflate the given columns.
-In addition to the column name, you must provide C<inflate> and
+In addition to the column names, you must provide C<inflate> and
C<deflate> methods. The C<inflate> method is called when you access
the field, while the C<deflate> method is called when the field needs
to used by the database.
-For example, if you have a table C<events> with a timestamp field
-named C<insert_time>, you could inflate the column in the
-corresponding table class using something like:
+For example, if you have a table C<events> with two timestamp fields
+named C<insert_time> and C<update_time>, you could inflate the columns
+in the corresponding table class using something like:
- __PACKAGE__->inflate_column('insert_time', {
+ __PACKAGE__->inflate_column('insert_time', 'update_time', {
inflate => sub { DateTime::Format::Pg->parse_datetime(shift); },
deflate => sub { DateTime::Format::Pg->format_datetime(shift); },
});
@@ -55,20 +55,23 @@
row object itself. Thus you can call C<< ->result_source->schema->storage->dbh >> on
it, to feed to L<DateTime::Format::DBI>.
-In this example, calls to an event's C<insert_time> accessor return a
-L<DateTime> object. This L<DateTime> object is later "deflated" when
+In this example, calls to an event's C<insert_time> or C<update_time> accessor
+return a L<DateTime> object. This L<DateTime> object is later "deflated" when
used in the database layer.
=cut
sub inflate_column {
- my ($self, $col, $attrs) = @_;
- $self->throw_exception("No such column $col to inflate")
- unless $self->has_column($col);
+ my $self = shift;
+ my $attrs = pop;
$self->throw_exception("inflate_column needs attr hashref")
unless ref $attrs eq 'HASH';
- $self->column_info($col)->{_inflate_info} = $attrs;
- $self->mk_group_accessors('inflated_column' => $col);
+ for (@_) {
+ $self->throw_exception("No such column $_ to inflate")
+ unless $self->has_column($_);
+ $self->column_info($_)->{_inflate_info} = $attrs;
+ $self->mk_group_accessors('inflated_column' => $_);
+ }
return 1;
}
_______________________________________________
List: http://lists.rawmode.org/cgi-bin/mailman/listinfo/dbix-class
Wiki: http://dbix-class.shadowcatsystems.co.uk/
IRC: irc.perl.org#dbix-class
SVN: http://dev.catalyst.perl.org/repos/bast/trunk/DBIx-Class/
Searchable Archive: http://www.mail-archive.com/[email protected]/