summaryrefslogtreecommitdiff
path: root/lib/VNWeb/Staff
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2020-07-07 09:49:51 +0200
committerYorhel <git@yorhel.nl>2020-07-07 09:49:51 +0200
commitcbcd0511dd220e456cb56469398fe4b37fbc7951 (patch)
treecd25c3c3da90ab7bf06c20475e70b595a001d3e7 /lib/VNWeb/Staff
parent10bdc72a6e74f53f512f6b7d3b553315354f6585 (diff)
VN::Edit: Add staff editing
Diffstat (limited to 'lib/VNWeb/Staff')
-rw-r--r--lib/VNWeb/Staff/Elm.pm25
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;