[Dbix-class] get_columns/get_inflated_columns

Christopher H. Laco claco at chrislaco.com
Mon May 21 18:32:27 GMT 2007


Matt S Trout wrote:
> On Mon, May 21, 2007 at 10:17:21AM -0400, Christopher H. Laco wrote:
>> Msts Vox post about monkey patching reminded me this morning that I
>> needed to put this somewhere:
>>
>>> *DBIx::Class::Row::get_inflated_columns =3D3D sub {
>>> my $self =3D3D shift;
>>> =3D20
>>> return map {$_ =3D3D> $self->$_} $self->columns;
>>> };
>>
>> I stuffed it into my DBIC provider just to try it on for size.
>>
>> Now, I can put this into a base class and have all my schema classes
>> inherit from that. Sure, it's so easy, a cave man can do it. But I'm not
>> the first, nor will I be the last to write these three lines of code and
>> inherit a base classes for source classes just to do this very thing.
>>
>> Can we just put this in DBIC already?
> =

> Sure, but it has to obey ->{accessor} (and you'll need to patch inflate_c=
olumn
> to while you're there) and there'll need to be tests.

return map {$_ =3D> $self->$_} $self->columns;

Why do I have to patch inflate_column or care if I'm using the accessor?

> =

> Oh, and how do you propose to handle people wanting rels as well?

I don't, just like get_columns doesn't.

> =

> Or non-column attributes? (c.f. Oleg's horrible hack because he wanted to
> use get_columns on non-column things)
> =


I don't, just like get_columns doesn't.


I'm proposing that get_inflated_columns is no smarter than get_columns
or than I get the objects instead of their values...

> sub get_columns {
>   my $self =3D shift;
>   return %{$self->{_column_data}};
> }

sub get_inflated_columns {
    my$self =3D shift;
    return map {$_ =3D> $self->$_} $self->columns;
};

If get_columns/columns doesn't give a crap about non column attributes
and rels, then neither should this.

-=3DChris

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 187 bytes
Desc: OpenPGP digital signature
Url : http://lists.scsys.co.uk/pipermail/dbix-class/attachments/20070521/d7=
5268b1/signature.pgp


More information about the Dbix-class mailing list