So, <mst> says this needs to be in SQL::Abstract, and that seems like a great 
idea.

Is there anyone out there working on SQL::Abstract to provide a callback API so 
DBIx::Class can filter things like DT objects but within the scope of the 
SQL::Abstract parser?  If not, I may be able to spend some time towards this 
goal.

Our conversation in #dbix-class:

[17:45:55] <mst> basically, SQLA can't do it itslef
[17:46:02] <mst> first step is to figure out a callback API
[17:46:07] <mst> and RFC that out to the DBIC list
[17:46:16] <mst> ideally, SQLA needs to become two layers
[17:46:24] <mst> a DWIM -> explicit query parser
[17:46:31] <mst> and an explicit query -> SQL generator
[17:46:41] <mst> then the first layer can be used in resultset
[17:46:54] <mst> with callbacks to filter things like DT objects
[17:46:58] <mst> and the second lives in storage
[17:47:06] <mst> with a callback to unroll a $rs into a subsel etc.

Eric

On Fri, May 25, 2007 at 05:22:06PM -0600, Eric Waters wrote:
> InflateColumn::DateTime overloads inflate/deflate, but doesn't affect search 
> conditions.
> 
> So, while ref($row->dte) == 'DateTime', if you were to do a search for a 
> particular value of dte:
> 
>   $rs->search({ dte => DateTime->now() })
> 
> ... the DateTime object would be passed to SQL::Abstract where it would be 
> stringified.  This is not intuitive.
> 
> While I'm told by <ilmari> that this is being worked on in a SQL::Abstract 
> refactoring, I didn't want to wait.  Below is a patch on 
> DBIx::Class::ResultSet that will deflate any references found in the WHERE 
> args before submitting to the driver.  I've put this here rather than at the 
> Storage level because it seems that the result_source data (which seems to 
> contain the column_info data that InflateColumn modifies) is not available 
> further down the chain.  While it'd be nice to include this in 
> DBIx::Class::InflateColumn, I don't see a way to do that.  Please let me know 
> if I'm off base here.
> 
> With the attached code, one would be able to do a search using a ref and have 
> it behave the same as getting/setting the value on a row.  This end behavior 
> is more intuitive.  This is not throughly tested.
> 
> Eric Waters

_______________________________________________
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