[Dbix-class] Help needed to get a much needed feature into DBIC
(low barrier to entry)
Peter Rabbitson
rabbit+dbic at rabbit.us
Thu Jan 9 06:55:00 GMT 2014
Greetings dear lurkers, your mad recursive algorithm fu is needed ;)
There is a long-standing design/spec for proper custom join
conditions/options specified on the fly via search() directly in your
join/prefetch attributes. In particular the new design calls for
treating anything starting with a '-' in a special way. The trouble is
that the bit implementing the join/prefetch attribute parser is... a
little convoluted and hard to maintain.
So we need your help!
There is a failing test which codifies all the permutations of desired
behavior in [1]. All one willing to help would need to do is to sit
down, gut and rewrite the code in [2].
The required knowledge of the rest of DBIC internals is 0 - this bit is
entirely standalone and decoupled from anything else going on around
this function. The rules of the "contest"
- The proposed algorithm needs to be esier to maintain than the current
implementation (in other words we want to avoid having to issue the same
distress call in couple years)
- The test must pass as-is without further change requests akin to "but
nobody is going to do that"
- It is possible that the authors missed a particular use-case: in other
words the test in question may attain new failing units (which otoh will
still be compatible with the general "logical spirit" of this algorithm)
- The final solution may end up being based on a submission, or may even
end up being an amalgamation of several proposed ideas. If your solution
is not accepted as-is and/or undergoes a significant amount of changes,
please do not take this personally.
How to get started:
git clone git://git.shadowcat.co.uk/dbsrgits/DBIx-Class.git dbic
cd dbic
perl Makefile.PL --skip-author-deps
make installdeps # or make listdeps | cpanm
cpan Test::Differences # temporary dep to ease testing
prove -l t/91merge_joinpref_attr.t
Cheers and thanks in advance for your help!
[1] https://github.com/dbsrgits/dbix-class/blob/wip/join_prefs/t/91merge_joinpref_attr.t
[2] https://github.com/dbsrgits/dbix-class/blob/wip/join_prefs/lib/DBIx/Class/ResultSet.pm#L3678:L3789
More information about the DBIx-Class
mailing list