From 21ce1b44379f914a36c3b8335cc93aa21d96c9b3 Mon Sep 17 00:00:00 2001 From: Yorhel Date: Sun, 28 Nov 2010 10:17:23 +0100 Subject: Release filter selector: Added original language filter I'm surprised I haven't been able to find a combination of filters that would generate an SQL query that would run more than 300ms or so. PostgreSQL is amazing! --- lib/VNDB/DB/Releases.pm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'lib/VNDB/DB/Releases.pm') diff --git a/lib/VNDB/DB/Releases.pm b/lib/VNDB/DB/Releases.pm index 04ced9a1..b0fb9a89 100644 --- a/lib/VNDB/DB/Releases.pm +++ b/lib/VNDB/DB/Releases.pm @@ -11,7 +11,7 @@ our @EXPORT = qw|dbReleaseGet dbReleaseRevisionInsert|; # Options: id vid pid rev unreleased page results what med sort reverse date_before date_after -# plat lang type minage search resolution freeware doujin voiced ani_story ani_ero +# plat lang olang type minage search resolution freeware doujin voiced ani_story ani_ero # What: extended changes vn producers platforms media # Sort: title released minage sub dbReleaseGet { @@ -38,7 +38,9 @@ sub dbReleaseGet { defined $o{ani_ero} ? ( 'rr.ani_ero IN(!l)' => [ ref $o{ani_ero} ? $o{ani_ero} : [$o{ani_ero}] ] ) : (), defined $o{unreleased} ? ( 'rr.released !s ?' => [ $o{unreleased} ? '>' : '<=', strftime('%Y%m%d', gmtime) ] ) : (), $o{lang} ? ( - 'rr.id IN(SELECT irl.rid FROM releases_lang irl JOIN releases ir ON ir.latest = irl.rid WHERE irl.lang IN(!l))', => [ ref $o{lang} ? $o{lang} : [ $o{lang} ] ] ) : (), + 'rr.id IN(SELECT irl.rid FROM releases_lang irl JOIN releases ir ON ir.latest = irl.rid WHERE irl.lang IN(!l))' => [ ref $o{lang} ? $o{lang} : [ $o{lang} ] ] ) : (), + $o{olang} ? ( + 'rr.id IN(SELECT irv.rid FROM releases_vn irv JOIN releases ir ON ir.latest = irv.rid JOIN vn v ON irv.vid = v.id WHERE v.c_olang && ARRAY[!l]::language[])' => [ ref $o{olang} ? $o{olang} : [ $o{olang} ] ] ) : (), $o{plat} ? ( 'rr.id IN(SELECT irp.rid FROM releases_platforms irp JOIN releases ir ON ir.latest = irp.rid WHERE irp.platform IN(!l))' => [ ref $o{plat} ? $o{plat} : [ $o{plat} ] ] ) : (), $o{med} ? ( -- cgit v1.2.3