We need to create the ResultSets ourselves. We should just be able to dump them in Koha/Schema/ResultSet. I'll work on a proof of concept. Here is an example: http://blogs.perl.org/users/ovid/2014/04/custom-dbixclass-resultsets.html I agree. Kyle http://www.kylehall.info ByWater Solutions ( http://bywatersolutions.com ) Meadville Public Library ( http://www.meadvillelibrary.org ) Crawford County Federated Library System ( http://www.ccfls.org ) Mill Run Technology Solutions ( http://millruntech.com ) On Wed, Sep 10, 2014 at 2:26 AM, David Cook <dcook@prosentient.com.au> wrote:
Hi Kyle:
Could you speak more to what a ResultSet method would be? From what I’ve seen Koha::Schema::* just has Results in it. Would we need to define custom ResultSets as well to get this kind of functionality?
Overall, this sounds good to me. It would be nice to put more of the “database” code into one place, and have more of the “logic” or processing elsewhere. Like you say, more readable, testable, efficient.
David Cook
Systems Librarian
Prosentient Systems
72/330 Wattle St, Ultimo, NSW 2007
*From:* koha-devel-bounces@lists.koha-community.org [mailto: koha-devel-bounces@lists.koha-community.org] *On Behalf Of *Kyle Hall *Sent:* Wednesday, 10 September 2014 3:22 AM *To:* Koha Devel *Subject:* [Koha-devel] Koha and DBIC
As discussed in #koha, I think we are not using DBIC as well as we could. Right now we are only using it to replace hand written SQL queries. I would propose the following:
1) Allow find and simple searches in pl.
2) If a search is used more than once, it should be a ResultSet method
3) If a subroutine operates on a single table row, it should be a Result method
4) If a subroutine operates on a single table, it should be a ResultSet method
5) Any operation that works on tables linked by key constraints should take advantage of those DBIC relationships and also
In this way we can do things like:
$borrower->is_debarred
or
$borrower->has_overdues
or
@borrowers = $borrower->guarantees()
Any search can be a method in the ResultSet such as
$borrower->issue()->overdue_issues();
or
my @records_with_holds = $schema->resultset('Biblio')->with_holds()
I think in the long run this will make or code far more readable, testable, and efficient.
What do you think?
Kyle
ByWater Solutions ( http://bywatersolutions.com ) Meadville Public Library ( http://www.meadvillelibrary.org ) Crawford County Federated Library System ( http://www.ccfls.org ) Mill Run Technology Solutions ( http://millruntech.com )