package Reporter::DB;
# turn on command-line query debug using export SQL_TRACE=1
use Reporter::Class; # provides Moo, Modern::Perl & Data::Printer::p
use lib '/home/raj/perl-lib';
use Local::DB;
has dbname => ( is => 'ro', isa => String, required => 1 ); # hilis4, test, etc
has dbix => ( is => 'lazy' ); # returns DBIx::Simple object
sub get_user {
my ($self, $userid) = @_; # p $userid;
my @cols = qw(username last_name first_name password);
my %where = ( # active = 'yes' AND ( username = $userid OR email = $userid ):
-and => [
{ active => 'yes' },
-or => [ { username => $userid }, { email => $userid } ]
]
);
my $user = $self->dbix->select('users', \@cols, \%where)->hash; # p $user;
return $user || 0;
}
sub get_request_data {
my ($self, $request_number, $yr) = @_;
my $sql = _build_sql();
my $data = $self->dbix->query($sql, $request_number, $yr + 2000)->hash; # p $data;
return $data;
}
sub _build_dbix {
my $self = shift;
my $db = $self->dbname; # dbname = test, hilis4, etc
my $dbix = ( $db eq 'test' ) # return in memory sqlite dbix object
? Local::DB->dbix({ dsn => 'dbi:SQLite:dbname=:memory:' })
: Local::DB->dbix($db);
return $dbix;
}
sub _build_sql {
return q!
select *
from requests
where request_number = ? and year = ?
!;
}
1;