diff options
author | Yorhel <git@yorhel.nl> | 2021-01-06 12:56:28 +0100 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2021-01-06 12:56:31 +0100 |
commit | 2248e3f68d8df54b0571c14158d522aa74c40d58 (patch) | |
tree | 46ab5524719e0ee58a4c96440c014f9ce31ed226 /util | |
parent | b3c79d8c9deada792377a57b5bf4e2c81455004c (diff) |
AdvSearch: Add script to convert old saved filters + check saved queries + improve compat
I'll use the conversion script when the new advanced search replaces
the old filter system. Seems to be working alright, but should not be
used in its current form because release filters don't have the
'original language' field yet.
Diffstat (limited to 'util')
-rwxr-xr-x | util/saved-queries.pl | 44 | ||||
-rwxr-xr-x | util/updates/wip-advsearch-convert-saved-filters.pl | 46 |
2 files changed, 90 insertions, 0 deletions
diff --git a/util/saved-queries.pl b/util/saved-queries.pl new file mode 100755 index 00000000..97b4073c --- /dev/null +++ b/util/saved-queries.pl @@ -0,0 +1,44 @@ +#!/usr/bin/perl + +# This script checks and updates all queries in the saved_queries table. + +use v5.24; +use warnings; +use Cwd 'abs_path'; +use TUWF; + +my $ROOT; +BEGIN { ($ROOT = abs_path $0) =~ s{/util/saved-queries\.pl$}{}; } + +use lib $ROOT.'/lib'; +use VNDB::Config; + +TUWF::set %{ config->{tuwf} }; + +require VNWeb::AdvSearch; + + +my($total, $updated, $err) = (0,0,0); + +for my $r (tuwf->dbAlli('SELECT uid, qtype, name, query FROM saved_queries')->@*) { + $total++; + my $q = eval { tuwf->compile({advsearch => $r->{qtype}})->validate($r->{query})->data }; + if(!$q) { + $err++; + warn "Invalid query: u$r->{uid}, $r->{qtype}, \"$r->{name}\": $r->{query}\n"; + next; + } + my $qs = $q->query_encode; + if(!$qs) { + warn "Empty query: u$r->{uid}, $r->{qtype}, \"$r->{name}\": $r->{query}\n"; + next; + } + if($qs ne $r->{query}) { + $updated++; + tuwf->dbExeci('UPDATE saved_queries SET query =', \$qs, 'WHERE', { uid => $r->{uid}, qtype => $r->{qtype}, name => $r->{name} }); + } +} + +tuwf->dbCommit; + +printf "Updated %d/%d saved queries, %d errors.\n", $updated, $total, $err; diff --git a/util/updates/wip-advsearch-convert-saved-filters.pl b/util/updates/wip-advsearch-convert-saved-filters.pl new file mode 100755 index 00000000..16e569b0 --- /dev/null +++ b/util/updates/wip-advsearch-convert-saved-filters.pl @@ -0,0 +1,46 @@ +#!/usr/bin/perl + +use v5.24; +use warnings; +use TUWF; +use Cwd 'abs_path'; + +my $ROOT; +BEGIN { ($ROOT = abs_path $0) =~ s{/util/updates/[^/]+.pl$}{}; } + +use lib $ROOT.'/lib'; +use VNDB::Config; + +BEGIN { TUWF::set %{ config->{tuwf} } }; + +use VNWeb::AdvSearch; +use VNWeb::Filters; + +for my $r (tuwf->dbAlli('SELECT id, filter_vn AS fil FROM users WHERE filter_vn <> \'\' AND NOT EXISTS(SELECT 1 FROM saved_queries WHERE uid = id AND name = \'\' AND qtype = \'v\') ORDER BY id')->@*) { + next if $r->{fil} =~ /^tagspoil-\d+$/; + + # HACK: trick VNWeb code into thinking we're logged in as the user owning the filter. + tuwf->{_TUWF}{request_data}{auth} = bless { user => { user_id => $r->{id} } }, 'VNWeb::Auth'; + + my $q = eval { tuwf->compile({advsearch => 'v'})->validate(filter_vn_adv filter_parse v => $r->{fil})->data }; + if(!$q) { + warn "Unable to convert VN filter for u$r->{id}, \"$r->{fil}\": $@"; + next; + } + my $qs = $q->query_encode; + tuwf->dbExeci('INSERT INTO saved_queries', { uid => $r->{id}, qtype => 'v', name => '', query => $qs }) if $qs; +} + +for my $r (tuwf->dbAlli('SELECT id, filter_release AS fil FROM users WHERE filter_release <> \'\' AND NOT EXISTS(SELECT 1 FROM saved_queries WHERE uid = id AND name = \'\' AND qtype = \'r\') ORDER BY id')->@*) { + tuwf->{_TUWF}{request_data}{auth} = bless { user => { user_id => $r->{id} } }, 'VNWeb::Auth'; + + my $q = eval { tuwf->compile({advsearch => 'r'})->validate(filter_release_adv filter_parse r => $r->{fil})->data }; + if(!$q) { + warn "Unable to convert release filter for u$r->{id}, \"$r->{fil}\": $@"; + next; + } + my $qs = $q->query_encode; + tuwf->dbExeci('INSERT INTO saved_queries', { uid => $r->{id}, qtype => 'r', name => '', query => $qs }) if $qs; +} + +tuwf->dbCommit; |