diff options
author | Yorhel <git@yorhel.nl> | 2009-11-27 14:48:20 +0100 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2009-11-27 14:52:20 +0100 |
commit | 9613533da2c58af3c64e3bd4ed7b92b22ffd442f (patch) | |
tree | 425ee689a98a555638431f92d1bc76cbef22eedd /lib/VNDB/DB/Releases.pm | |
parent | 542c1e22daf2648b3babce2ab2050120eec0a9b9 (diff) |
DB: Abstracted all ORDER BY clauses in the DB abstraction layer
The ORDER BY was previously specified using an 'order' argument, which
would then be directly inserted into the query. The new method is the
same as what I used for the public API: two 'sort' and 'reverse'
arguments. This should be less error-prone and more readable.
This changes quite a lot of code, so I hope I haven't forgotten to
update something along the way.
Diffstat (limited to 'lib/VNDB/DB/Releases.pm')
-rw-r--r-- | lib/VNDB/DB/Releases.pm | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/VNDB/DB/Releases.pm b/lib/VNDB/DB/Releases.pm index d7bddaab..c57b7bc2 100644 --- a/lib/VNDB/DB/Releases.pm +++ b/lib/VNDB/DB/Releases.pm @@ -10,15 +10,15 @@ use VNDB::Func 'gtintype'; our @EXPORT = qw|dbReleaseGet dbReleaseAdd dbReleaseEdit|; -# Options: id vid rev order unreleased page results what date media +# Options: id vid rev unreleased page results what date media sort reverse # platforms languages type minage search resolutions freeware doujin # What: extended changes vn producers platforms media +# Sort: title released minage sub dbReleaseGet { my($self, %o) = @_; $o{results} ||= 50; $o{page} ||= 1; $o{what} ||= ''; - $o{order} ||= 'rr.released ASC'; my @where = ( !$o{id} && !$o{rev} ? ( 'r.hidden = FALSE' => 0 ) : (), @@ -77,13 +77,19 @@ sub dbReleaseGet { (qw|c.requester c.comments r.latest u.username c.rev|, q|extract('epoch' from c.added) as added|) : (), ); + my $order = sprintf { + title => 'rr.title %s', + minage => 'rr.minage %s', + released => 'rr.released %s', + }->{ $o{sort}||'released' }, $o{reverse} ? 'DESC' : 'ASC'; + my($r, $np) = $self->dbPage(\%o, q| SELECT !s FROM releases_rev rr !s !W ORDER BY !s|, - join(', ', @select), join(' ', @join), \@where, $o{order} + join(', ', @select), join(' ', @join), \@where, $order ); if(@$r) { |