[OPEN-ILS-DEV] Action Trigger - json filter - Joins
Josh Stompro
stomproj at exchange.larl.org
Mon Oct 17 15:21:16 EDT 2016
Thanks Mike, that does help.
I was going the route of processing the hooks, then running queries on the pending events and deleting or setting to invalid the events that I didn't want. I'll try this out for excluding based on email being null and active being false.
I wonder if the fact that the opt in feature uses an "-exists" means that I cannot use this trick at the same time as using the opt-in feature? It looks like any "-exists" key that I create would get overwritten in that case.
Would it be possible to add numbered keys for some features? Like "-exists1","-or1"? So that more than one exists/or grouping is possible?
I was trying to create a json query that produces a where clause like this, but because of the unique key issue, I don't think it is possible.
where
checkin_time is null
and (stop_fines='MAXFINES' OR stop_fines is null)
and
(
( duration_rule='7_days_0_renew_1_graceday'
and due_date < pg_catalog.interval_pl_timestamptz( '-1 days', 'now' )
)
or
( duration_rule!='7_days_0_renew_1_graceday'
and due_date < pg_catalog.interval_pl_timestamptz( '-14 days', 'now' )
)
)
But maybe I need to restructure it so there is only one main "-or" group?
where
checkin_time is null
and
(
( duration_rule='7_days_0_renew_1_graceday'
and due_date < pg_catalog.interval_pl_timestamptz( '-1 days', 'now' )
and (stop_fines='MAXFINES' OR stop_fines is null)
)
or
( duration_rule!='7_days_0_renew_1_graceday'
and due_date < pg_catalog.interval_pl_timestamptz( '-14 days', 'now' )
and (stop_fines='MAXFINES' OR stop_fines is null)
)
)
Josh Stompro - LARL IT Director
-----Original Message-----
From: Open-ils-dev [mailto:open-ils-dev-bounces at list.georgialibraries.org] On Behalf Of Mike Rylander
Sent: Saturday, October 15, 2016 1:57 PM
To: Evergreen Development Discussion List
Subject: Re: [OPEN-ILS-DEV] Action Trigger - json filter - Joins
Josh,
JOINs in the FROM clause are explicitly restricted, because they can lead to multiple copies of a target object being retrieved. Instead of adding contortions to the code to avoid that, there are other ways to test "out" from the target. You probably want to use a correlated EXISTS subquery, a la https://wiki.evergreen-ils.org/doku.php?id=documentation:tutorials:json_query#exists_with_subqueries
(second example). In fact, it looks like there's a good example of the syntax in that sub, right around line 489:
http://git.evergreen-ils.org/?p=Evergreen.git;a=blob;f=Open-ILS/src/perlmods/lib/OpenILS/Application/Trigger.pm;hb=HEAD#l489
HTH,
--
Mike Rylander
| President
| Equinox Software, Inc. / Open Your Library | phone: 1-877-OPEN-ILS (673-6457) | email: miker at esilibrary.com | web: http://www.esilibrary.com
On Fri, Jun 3, 2016 at 4:17 PM, Josh Stompro <stomproj at exchange.larl.org> wrote:
> Hello all, is it currently possible to do a join with the json filter
> file that the action_trigger_runner.pl uses? I would like to join the
> actor.usr table in the checkout.due hook, so I can limit based on the
> first letter of the patron’s last name. I’m looking to gradually send
> out bills over the course of a week or two based on users last names.
>
>
>
> I think the answer is no, it looks like the filter key is only for the
> where clause.
>
>
>
> I tried adding in a join like this
>
> {
>
> "checkout.due" :
>
> { "context_org" : "circ_lib",
>
> "filter" :
>
> { "checkin_time" : null,
>
> "-or" :
>
> [ { "stop_fines" : ["MAXFINES"] },
>
> { "stop_fines" : null }
>
> ],
>
> "xact_start" : {"<":"2015-09-01 00:00:00-05"},
>
> "join" : { "au" :{ "field":"id",
>
> "fkey":"usr",
>
> "filter":{"family_name":
>
> {"~*":"^a"}
>
> }
>
> }
>
> }
>
> }
>
> }
>
> }
>
>
>
> But that threw an error, looks like the join needs to be up a level
> from what I can access.
>
>
>
> Would anyone else be interested in allowing joins in the json filter file?
> Maybe OpenILS/Application/Trigger.pm create_batch_events() could grab the
> join data from the filter hash and place it with the other join to
> allow this ability?
>
> http://git.evergreen-ils.org/?p=Evergreen.git;a=blob;f=Open-ILS/src/pe
> rlmods/lib/OpenILS/Application/Trigger.pm;hb=HEAD#l385
>
>
>
>
>
> Josh
>
>
>
>
>
>
>
>
>
> Lake Agassiz Regional Library - Moorhead MN larl.org
>
> Josh Stompro | Office 218.233.3757 EXT-139
>
> LARL IT Director | Cell 218.790.2110
>
>
More information about the Open-ils-dev
mailing list