diff options
author | Yorhel <git@yorhel.nl> | 2021-01-19 13:12:17 +0100 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2021-01-20 09:06:12 +0100 |
commit | 9d1727c77d4b00d2a861c2c31f93d3aebff2f2d9 (patch) | |
tree | 61d77e79edb2590c06cca80c8d029d8630a5aabc /lib/VNDB/DB/Producers.pm | |
parent | b35af5ba52f3bceb603e8c7dda10d4abb84c6bd9 (diff) |
v2rw: Rewrite done, time to clean up old v2 code
Yay!
There are no more request handlers in the VNDB::* namespace and no more
Javascript in data/js/. This cleans up a lot of old legacy code that
wasn't fun to maintain.
Diffstat (limited to 'lib/VNDB/DB/Producers.pm')
-rw-r--r-- | lib/VNDB/DB/Producers.pm | 108 |
1 files changed, 0 insertions, 108 deletions
diff --git a/lib/VNDB/DB/Producers.pm b/lib/VNDB/DB/Producers.pm deleted file mode 100644 index c9d4f95f..00000000 --- a/lib/VNDB/DB/Producers.pm +++ /dev/null @@ -1,108 +0,0 @@ - -package VNDB::DB::Producers; - -use strict; -use warnings; -use Exporter 'import'; - -our @EXPORT = qw|dbProducerGet dbProducerGetRev|; - - -# options: results, page, id, search, char, sort, inc_hidden -# what: extended relations -sub dbProducerGet { - my $self = shift; - my %o = ( - results => 10, - page => 1, - what => '', - @_ - ); - - $o{search} =~ s/%//g if $o{search}; - - my %where = ( - !$o{id} && !$o{inc_hidden} ? ( - 'p.hidden = FALSE' => 1 ) : (), - $o{id} ? ( - 'p.id IN(!l)' => [ ref $o{id} ? $o{id} : [$o{id}] ] ) : (), - $o{search} ? ( - '(p.name ILIKE ? OR p.original ILIKE ? OR p.alias ILIKE ?)', [ map '%'.$o{search}.'%', 1..3 ] ) : (), - $o{char} ? ( - 'LOWER(SUBSTR(p.name, 1, 1)) = ?' => $o{char} ) : (), - defined $o{char} && !$o{char} ? ( - '(ASCII(p.name) < 97 OR ASCII(p.name) > 122) AND (ASCII(p.name) < 65 OR ASCII(p.name) > 90)' => 1 ) : (), - ); - - my $select = 'p.id, p.type, p.name, p.original, p.lang'; - $select .= ', p.desc, p.alias, p.website, p.l_wp, p.l_wikidata, p.hidden, p.locked' if $o{what} =~ /extended/; - - my($order, @order) = ('p.name'); - if($o{sort} && $o{sort} eq 'search') { - $order = 'least(substr_score(p.name, ?), substr_score(p.original, ?)), p.name'; - @order = ($o{search}) x 2; - } - - my($r, $np) = $self->dbPage(\%o, qq| - SELECT !s - FROM producers p - !W - ORDER BY $order|, - $select, \%where, @order - ); - - return _enrich($self, $r, $np, 0, $o{what}); -} - - -# options: id, rev, what -# what: extended relations -sub dbProducerGetRev { - my $self = shift; - my %o = (what => '', @_); - - $o{rev} ||= $self->dbRow('SELECT MAX(rev) AS rev FROM changes WHERE type = \'p\' AND itemid = ?', $o{id})->{rev}; - - my $select = 'c.itemid AS id, p.type, p.name, p.original, p.lang'; - $select .= ', extract(\'epoch\' from c.added) as added, c.comments, c.rev, c.ihid, c.ilock, '.VNWeb::DB::sql_user(); - $select .= ', c.id AS cid, NOT EXISTS(SELECT 1 FROM changes c2 WHERE c2.type = c.type AND c2.itemid = c.itemid AND c2.rev = c.rev+1) AS lastrev'; - $select .= ', p.desc, p.alias, p.website, p.l_wp, p.l_wikidata, po.hidden, po.locked' if $o{what} =~ /extended/; - - my $r = $self->dbAll(q| - SELECT !s - FROM changes c - JOIN producers po ON po.id = c.itemid - JOIN producers_hist p ON p.chid = c.id - JOIN users u ON u.id = c.requester - WHERE c.type = 'p' AND c.itemid = ? AND c.rev = ?|, - $select, $o{id}, $o{rev} - ); - - return _enrich($self, $r, 0, 1, $o{what}); -} - - -sub _enrich { - my($self, $r, $np, $rev, $what) = @_; - - if(@$r && $what =~ /relations/) { - my($col, $hist, $colname) = $rev ? ('cid', '_hist', 'chid') : ('id', '', 'id'); - my %r = map { - $r->[$_]{relations} = []; - ($r->[$_]{$col}, $_) - } 0..$#$r; - - push @{$r->[$r{$_->{xid}}]{relations}}, $_ for(@{$self->dbAll(qq| - SELECT rel.$colname AS xid, rel.pid AS id, rel.relation, p.name, p.original - FROM producers_relations$hist rel - JOIN producers p ON rel.pid = p.id - WHERE rel.$colname IN(!l)|, - [ keys %r ] - )}); - } - - return wantarray ? ($r, $np) : $r; -} - -1; - |