use Newslash::Model::Base -base;
use Data::Dumper;
-use Mojo::Log;
#========================================================================
my $sth = $dbh->prepare($sql);
$sth->execute($limit);
- my $rs = $sth->fetchall_arrayref(+{});
- $sth->finish;
+ my $rs = $sth->fetchall_arrayref({});
$dbh->disconnect();
if (@$rs == 0) {
=cut
sub select {
- my ($self, $query_type, $value) = @_;
+ my $self = shift;
+ my $params = {@_};
+ my $query_type;
+ my @query_params;
+
+ if (defined $params->{uid}) {
+ $query_type = 'uid';
+ push @query_params, $params->{uid};
+ }
+ elsif (defined $params->{id}) {
+ $query_type = 'id';
+ push @query_params, $params->{id};
+ }
- if ($query_type !~ m/\A(id)\z/) {
- return undef;
- }
+ if (!$query_type) {
+ return;
+ }
+
+ my $limit_clause = "";
+ if (defined $params->{limit}) {
+ $limit_clause = "LIMIT ?";
+ push @query_params, $params->{limit};
+ }
+ my $offset_clause = "";
+ if (defined $params->{offset}) {
+ $offset_clause = "OFFSET ?";
+ push @query_params, $params->{offset};
+ }
- my $dbh = $self->connect_db;
- my $sql = <<"EOSQL";
+ my $dbh = $self->connect_db;
+ my $sql = <<"EOSQL";
SELECT journals.*, journals_text.*, users.nickname as author, firehose.toptags, topics.*
FROM journals
LEFT JOIN journals_text ON journals.id = journals_text.id
LEFT JOIN firehose ON journals.id = srcid
LEFT JOIN topics ON journals.tid = topics.tid
WHERE journals.$query_type = ? AND firehose.type = 'journal'
+ ORDER BY date DESC
+ $limit_clause
+ $offset_clause
EOSQL
- my $sth = $dbh->prepare($sql);
- $sth->execute($value);
- my $journal = $sth->fetchrow_hashref;
- $sth->finish;
- $dbh->disconnect();
+ my $sth = $dbh->prepare($sql);
+ $sth->execute(@query_params);
+ my $rs = $sth->fetchall_arrayref({});
+ $dbh->disconnect();
- if (!$journal) {
- return undef;
- }
+ if (@$rs == 0) {
+ return [];
+ }
- $self->_generalize($journal);
- return $journal;
+ for my $j (@$rs) {
+ $self->_generalize($j);
+ }
+
+ if ($query_type eq 'id') {
+ return $rs->[0];
+ }
+ return $rs;
}
sub _generalize {