diff options
author | Yorhel <git@yorhel.nl> | 2020-02-21 09:31:17 +0100 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2020-02-21 09:31:19 +0100 |
commit | ef967d168848d7110841f3e31e50e5a5c3bd1ac6 (patch) | |
tree | c70441ea29054ef7bbcbf3293f8beaa8c272f7bb /lib/VNDB | |
parent | 624ad4124cc3e49acd3903b9c9062a03f3616ad8 (diff) |
SQL: Allow tags_vn.uid to be NULL for deleted users
This fixes the issue of tag votes getting deleted when a user account is
deleted, despite these votes being part of the kept "database
contributions" mentioned in the privacy policy.
Diffstat (limited to 'lib/VNDB')
-rw-r--r-- | lib/VNDB/DB/Tags.pm | 43 |
1 files changed, 1 insertions, 42 deletions
diff --git a/lib/VNDB/DB/Tags.pm b/lib/VNDB/DB/Tags.pm index ed3ea9fe..e412e10f 100644 --- a/lib/VNDB/DB/Tags.pm +++ b/lib/VNDB/DB/Tags.pm @@ -5,7 +5,7 @@ use strict; use warnings; use Exporter 'import'; -our @EXPORT = qw|dbTagGet dbTTTree dbTagEdit dbTagAdd dbTagMerge dbTagLinks dbTagStats dbTagWipeVotes|; +our @EXPORT = qw|dbTagGet dbTTTree dbTagEdit dbTagAdd dbTagMerge dbTagStats dbTagWipeVotes|; # %options->{ id noid name search state searchable applicable page results what sort reverse } @@ -170,47 +170,6 @@ sub dbTagMerge { } -# Directly fetch rows from tags_vn -# Options: vid uid tag page results what sort reverse -# What: details -sub dbTagLinks { - my($self, %o) = @_; - $o{results} ||= 999; - $o{page} ||= 1; - $o{what} ||= ''; - - my %where = ( - $o{vid} ? ('tv.vid = ?' => $o{vid}) : (), - $o{uid} ? ('tv.uid = ?' => $o{uid}) : (), - $o{tag} ? ('tv.tag = ?' => $o{tag}) : (), - ); - - my @select = ( - qw|tv.tag tv.vid tv.uid tv.vote tv.spoiler tv.ignore|, "EXTRACT('epoch' from tv.date) AS date", - $o{what} =~ /details/ ? (qw|v.title t.name|, VNWeb::DB::sql_user()) : (), - ); - - my @join = $o{what} =~ /details/ ? ( - 'JOIN vn v ON v.id = tv.vid', - 'JOIN users u ON u.id = tv.uid', - 'JOIN tags t ON t.id = tv.tag' - ) : (); - - my $order = !$o{sort} ? '' : 'ORDER BY '.{ - username => 'u.username', - date => 'tv.date', - title => 'v.title', - tag => 't.name', - }->{$o{sort}}.($o{reverse} ? ' DESC' : ' ASC'); - - my($r, $np) = $self->dbPage(\%o, - 'SELECT !s FROM tags_vn tv !s !W !s', - join(', ', @select), join(' ', @join), \%where, $order - ); - return wantarray ? ($r, $np) : $r; -} - - # Fetch all tags related to a VN # Argument: %options->{ vid minrating state results what page sort reverse } # sort: name, rating |