diff options
Diffstat (limited to 'lib/VNDB/DB/Traits.pm')
-rw-r--r-- | lib/VNDB/DB/Traits.pm | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/lib/VNDB/DB/Traits.pm b/lib/VNDB/DB/Traits.pm index f2eadaba..728e4e85 100644 --- a/lib/VNDB/DB/Traits.pm +++ b/lib/VNDB/DB/Traits.pm @@ -15,7 +15,7 @@ our @EXPORT = qw|dbTraitGet dbTraitEdit dbTraitAdd|; # Options: id noid search name state what results page sort reverse # what: parents childs(n) addedby -# sort: id name name added items +# sort: id name name added items search sub dbTraitGet { my $self = shift; my %o = ( @@ -30,8 +30,7 @@ sub dbTraitGet { my %where = ( $o{id} ? ( 't.id IN(!l)' => [ ref($o{id}) ? $o{id} : [$o{id}] ]) : (), $o{group} ? ( 't.group = ?' => $o{group} ) : (), - $o{noid} && ref($o{noid}) && @{$o{noid}} ? ('t.id NOT IN(!l)', [$o{noid}]) : (), - $o{noid} && !ref($o{noid}) ? ('t.id <> ?' => $o{noid}) : (), + $o{noid} ? ( 't.id <> ?' => $o{noid} ) : (), defined $o{state} && $o{state} != -1 ? ( 't.state = ?' => $o{state} ) : (), !defined $o{state} && !$o{id} && !$o{name} ? ( @@ -56,15 +55,17 @@ sub dbTraitGet { group => 'tg."order" %s, t.name %1$s', added => 't.added %s', items => 't.c_items %s', + search=> 'substr_score(t.name, ?) ASC, t.name %s', # Can't score aliases at the moment }->{ $o{sort}||'id' }, $o{reverse} ? 'DESC' : 'ASC'; + my @order = $o{sort} && $o{sort} eq 'search' ? ($o{search}) : (); - my($r, $np) = $self->dbPage(\%o, q| + my($r, $np) = $self->dbPage(\%o, qq| SELECT !s FROM traits t !s !W - ORDER BY !s|, - join(', ', @select), join(' ', @join), \%where, $order + ORDER BY $order|, + join(', ', @select), join(' ', @join), \%where, @order, ); if($o{what} =~ /parents\((\d+)\)/) { |