From: "Matt S Trout" <[EMAIL PROTECTED]>

> Nilson Santos Figueiredo Junior wrote:
>> On 9/14/06, Dami Laurent (PJ) <[EMAIL PROTECTED]> wrote:
>>> Well, following all relationships automatically might lead you to
>>> dump the whole database ! So the programmer needs a way to specify
>>> which relationships should be followed, how deep the recursion will go,
>>> etc, but it's not obvious to design a simple yet powerful API for that.
>>> I tried to do it with methods 'expand', 'autoExpand' in DBIx::DataModel,
>>> but it needs further work to become more flexible.
>>
>> It doesn't dump all relationships, it only dumps the ones you
>> explicitely.
>>
>> One existing issue is that, as it is, you can't specify arbitrary
>> dumping chains. You can only specify first-level relationships or
>> "nested" relationships which will always be followed (useful for
>> dumping tree like things, where one row might have another row as
>> parent and this parent row might have another parent row, etc).
>
> I think what I'd like to see is a general serialization interface that
> plugins can be written for. Something like
>
> __PACKAGE__->load_components(qw/Serializer/);
> __PACKAGE__->serialization_options({ follow_rels => ... });
>
> ...
>
> $obj->serialize_to('JSON');
> $obj->serialize_to('XML');
>
> etc.
>
> How does that look to you guys?

I need to pass the follow_rels in the call to serialize_to, as sometimes
I'd sometimes want relationships serialized, and sometimes I wouldn't.

__PACKAGE__->load_components(qw/Serializer/);
__PACKAGE__->serialization_options({ follow_rels => ... }); # default

$obj->serialize_to('JSON', serialization_options => { follow_rels => 
... } );
$obj->serialize_to('XML', serialization_options => { follow_rels => ... } );

Or perhaps:

$obj->JSON( serialization_options => { follow_rels => ... } );
$obj->XML( serialization_options => { follow_rels => ... } );
$obj->XML_RPC( serialization_options => { follow_rels => ... } );

Also, as PJ said, its really easy to dump the entire database, or even go in 
to a infinite loop when a given class is specified to serialize a has_many 
and THAT class is specified to serialize the has_a to the given class 
(sorry, using CDBI speak).

It is a hard thing to do... but I for one would drop CDBI like a bad habit 
if DBIx::Class had this.

Todd W.


_______________________________________________
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