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/Users.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/Users.pm')
-rw-r--r-- | lib/VNDB/DB/Users.pm | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/lib/VNDB/DB/Users.pm b/lib/VNDB/DB/Users.pm index 39429a02..f8fdfe3f 100644 --- a/lib/VNDB/DB/Users.pm +++ b/lib/VNDB/DB/Users.pm @@ -8,12 +8,12 @@ use Exporter 'import'; our @EXPORT = qw|dbUserGet dbUserEdit dbUserAdd dbUserDel dbUserMessageCount dbSessionAdd dbSessionDel|; -# %options->{ username passwd mail session order uid ip registered search results page what } +# %options->{ username passwd mail session uid ip registered search results page what sort reverse } # what: stats extended +# sort: username registered votes changes tags sub dbUserGet { my $s = shift; my %o = ( - order => 'username ASC', page => 1, results => 10, what => '', @@ -65,13 +65,21 @@ sub dbUserGet { $o{session} ? 'JOIN sessions s ON s.uid = u.id' : (), ); + my $order = sprintf { + username => 'u.username %s', + registered => 'u.registered %s', + votes => 'NOT u.show_list, u.c_votes %s', + changes => 'u.c_changes %s', + tags => 'u.c_tags %s', + }->{ $o{sort}||'username' }, $o{reverse} ? 'DESC' : 'ASC'; + my($r, $np) = $s->dbPage(\%o, q| SELECT !s FROM users u !s !W ORDER BY !s|, - join(', ', @select), join(' ', @join), \%where, $o{order} + join(', ', @select), join(' ', @join), \%where, $order ); return wantarray ? ($r, $np) : $r; } |