diff options
author | Yorhel <git@yorhel.nl> | 2020-07-07 09:49:51 +0200 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2020-07-07 09:49:51 +0200 |
commit | cbcd0511dd220e456cb56469398fe4b37fbc7951 (patch) | |
tree | cd25c3c3da90ab7bf06c20475e70b595a001d3e7 /lib/VNWeb/Staff | |
parent | 10bdc72a6e74f53f512f6b7d3b553315354f6585 (diff) |
VN::Edit: Add staff editing
Diffstat (limited to 'lib/VNWeb/Staff')
-rw-r--r-- | lib/VNWeb/Staff/Elm.pm | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/lib/VNWeb/Staff/Elm.pm b/lib/VNWeb/Staff/Elm.pm new file mode 100644 index 00000000..da40f8a5 --- /dev/null +++ b/lib/VNWeb/Staff/Elm.pm @@ -0,0 +1,25 @@ +package VNWeb::Staff::Elm; + +use VNWeb::Prelude; + +elm_api Staff => undef, { search => {} }, sub { + my $q = shift->{search}; + my $qs = $q =~ s/[%_]//gr; + + elm_StaffResult tuwf->dbPagei({ results => 15, page => 1 }, + 'SELECT s.id, sa.aid, sa.name, sa.original + FROM (', + sql_join('UNION ALL', + $q =~ /^$RE{sid}$/ ? sql('SELECT 0, aid FROM staff_alias WHERE id =', \"$+{id}") : (), + sql('SELECT 1+substr_score(lower(name),', \$qs, ')+substr_score(lower(original),', \$qs, '), aid + FROM staff_alias WHERE name ILIKE', \"%$qs%", 'OR original ILIKE', \"%$qs%"), + ), ') x(prio, aid) + JOIN staff_alias sa ON sa.aid = x.aid + JOIN staff s ON s.id = sa.id + WHERE NOT s.hidden + GROUP BY s.id, sa.aid, sa.name, sa.original + ORDER BY MIN(x.prio), sa.name + '); +}; + +1; |