Christopher H. Laco wrote:
> 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 =3D sub {
>>>> my $self =3D shift;
>>>> =20
>>>> return map {$_ =3D> $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_column
>> to while you're there) and there'll need to be tests.
> 
> return map {$_ => $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 = shift;
>>   return %{$self->{_column_data}};
>> }
> 
> sub get_inflated_columns {
>     my$self = shift;
>     return map {$_ => $self->$_} $self->columns;
> };
> 
> If get_columns/columns doesn't give a crap about non column attributes
> and rels, then neither should this.
> 
> -=Chris

/me shouts ad CPAN...fix the fucking indexing already... the _02 is no
where to be found..nor _01...

From current:

> sub get_columns {
>   my $self = shift;
>   if (exists $self->{_inflated_column}) {
>     foreach my $col (keys %{$self->{_inflated_column}}) {
>       $self->store_column($col, $self->_deflated_column($col, 
> $self->{_inflated_column}{$col}))
>         unless exists $self->{_column_data}{$col};
>     }
>   }
>   return %{$self->{_column_data}};
> }


Even still, that's just making sure inflateds are value-ed back before
returns the values...I'd even say that the act of get_columns should not
automatically call store columns until I call update()....but that's
another discussion...


-=Chris

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
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]/

Reply via email to