summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2022-07-30 07:25:12 +0200
committerYorhel <git@yorhel.nl>2022-07-30 07:25:12 +0200
commit23c6278b00e51b1e999c16683e01ba5b05c8c6c2 (patch)
treeb4afcf7c44864ea8649a2de71a4b23d8b99b348f /lib
parentba4f0b483ef83a2e3c41c506f8f94d5e06dc0baf (diff)
Add duplicate entry check when creating new staff entry
Diffstat (limited to 'lib')
-rw-r--r--lib/VNWeb/Staff/Elm.pm18
1 files changed, 11 insertions, 7 deletions
diff --git a/lib/VNWeb/Staff/Elm.pm b/lib/VNWeb/Staff/Elm.pm
index c95e84fd..3f2850ec 100644
--- a/lib/VNWeb/Staff/Elm.pm
+++ b/lib/VNWeb/Staff/Elm.pm
@@ -2,17 +2,21 @@ package VNWeb::Staff::Elm;
use VNWeb::Prelude;
-elm_api Staff => undef, { search => {} }, sub {
- my $q = shift->{search};
+elm_api Staff => undef, {
+ search => { type => 'array', values => { required => 0, default => '' } },
+}, sub {
+ my @q = grep length $_, shift->{search}->@*;
+ die "No query" if !@q;
elm_StaffResult tuwf->dbPagei({ results => 15, page => 1 },
'SELECT s.id, s.lang, 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),', \sql_like($q), ')+substr_score(lower(original),', \sql_like($q), '), aid
- FROM staff_alias WHERE c_search LIKE ALL (search_query(', \$q, '))'),
- ), ') x(prio, aid)
+ sql_join('UNION ALL', map +(
+ /^$RE{sid}$/ ? sql('SELECT 0, aid FROM staff_alias WHERE id =', \"$+{id}") : (),
+ sql('SELECT 1+substr_score(lower(name),', \sql_like($_), ')+substr_score(lower(original),', \sql_like($_), '), aid
+ FROM staff_alias WHERE c_search LIKE ALL (search_query(', \$_, '))'),
+ ), @q),
+ ') x(prio, aid)
JOIN staff_alias sa ON sa.aid = x.aid
JOIN staff s ON s.id = sa.id
WHERE NOT s.hidden