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;