summaryrefslogtreecommitdiff
path: root/lib/VNWeb/Misc
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2020-12-31 09:35:07 +0100
committerYorhel <git@yorhel.nl>2021-01-03 10:39:57 +0100
commit65e36750ec6ed95d82529146887dd82b2e9dde1c (patch)
treee28d26909bf2e0f94cebbca54ca9d96306b53253 /lib/VNWeb/Misc
parent61cb7cd185fbf9203041ca366a2eb915e746d6f4 (diff)
AdvSearch: Add feature to save/load/delete queries
Diffstat (limited to 'lib/VNWeb/Misc')
-rw-r--r--lib/VNWeb/Misc/AdvSearch.pm40
1 files changed, 40 insertions, 0 deletions
diff --git a/lib/VNWeb/Misc/AdvSearch.pm b/lib/VNWeb/Misc/AdvSearch.pm
new file mode 100644
index 00000000..61b9af48
--- /dev/null
+++ b/lib/VNWeb/Misc/AdvSearch.pm
@@ -0,0 +1,40 @@
+package VNWeb::Misc::AdvSearch;
+
+use VNWeb::Prelude;
+use VNWeb::AdvSearch;
+
+
+elm_api 'AdvSearchSave' => undef, {
+ name => { length => [1,50] },
+ qtype => { enum => \%VNWeb::AdvSearch::FIELDS },
+ query => {},
+}, sub {
+ my($d) = @_;
+ my $q = tuwf->compile({ advsearch => $d->{qtype} })->validate($d->{query})->data->query_encode;
+ tuwf->dbExeci(
+ 'INSERT INTO saved_queries', { uid => auth->uid, qtype => $d->{qtype}, name => $d->{name}, query => $q },
+ 'ON CONFLICT (uid, qtype, name) DO UPDATE SET query =', \$q
+ );
+ elm_Success
+};
+
+
+elm_api 'AdvSearchDel' => undef, {
+ name => { type => 'array', minlength => 1, values => { length => [1,50] } },
+ qtype => { enum => \%VNWeb::AdvSearch::FIELDS },
+}, sub {
+ my($d) = @_;
+ tuwf->dbExeci('DELETE FROM saved_queries WHERE uid =', \auth->uid, 'AND qtype =', \$d->{qtype}, 'AND name IN', $d->{name});
+ elm_Success
+};
+
+
+elm_api 'AdvSearchLoad' => undef, {
+ qtype => { enum => \%VNWeb::AdvSearch::FIELDS },
+ query => {},
+}, sub {
+ my($d) = @_;
+ elm_AdvSearchQuery tuwf->compile({ advsearch => $d->{qtype} })->validate($d->{query})->data->elm_search_query;
+};
+
+1;