diff options
author | Yorhel <git@yorhel.nl> | 2011-02-14 10:58:05 +0100 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2011-02-14 10:58:05 +0100 |
commit | 23c6f7c1dc584fab42d87f060a9faa033e04c8e2 (patch) | |
tree | 355c31e13d4b67afe9cce6ef8b2f7a07689fe172 /lib/VNDB/DB/Traits.pm | |
parent | f4b31e6d934bc93d678804ae7e4039031ff87760 (diff) |
chardb: Added trait index and search
Diffstat (limited to 'lib/VNDB/DB/Traits.pm')
-rw-r--r-- | lib/VNDB/DB/Traits.pm | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/VNDB/DB/Traits.pm b/lib/VNDB/DB/Traits.pm index 8b9849ed..d30477c6 100644 --- a/lib/VNDB/DB/Traits.pm +++ b/lib/VNDB/DB/Traits.pm @@ -25,11 +25,19 @@ sub dbTraitGet { @_, ); + $o{search} =~ s/%//g if $o{search}; + my %where = ( $o{id} ? ('t.id = ?' => $o{id}) : (), $o{noid} ? ('t.id <> ?' => $o{noid}) : (), $o{name} ? ( 't.id = (SELECT id FROM traits LEFT JOIN traits_aliases ON id = trait WHERE lower(name) = ? OR lower(alias) = ? LIMIT 1)' => [ lc $o{name}, lc $o{name} ]) : (), + defined $o{state} && $o{state} != -1 ? ( + 't.state = ?' => $o{state} ) : (), + !defined $o{state} && !$o{id} && !$o{name} ? ( + 't.state = 2' => 1 ) : (), + $o{search} ? ( + 't.id IN (SELECT id FROM traits LEFT JOIN traits_aliases ON id = trait WHERE name ILIKE ? OR alias ILIKE ?)' => [ "%$o{search}%", "%$o{search}%" ] ) : (), ); my @select = ( |