package Model; use SQL::Library; use DBIx::Simple; use Data::Printer; use FindBin qw($Bin); # warn $Bin; use Moo; has dbh => ( is => 'ro', required => 1 ); has dbix => ( is => 'lazy', builder => sub { DBIx::Simple->new(shift->dbh) } ); has sql_lib => ( is => 'lazy', builder => sub { SQL::Library->new( { lib => "$Bin/../src/queries.sql" } ) }, ); sub authenticate_user { # basic auth for demo - just checks for username my ($self, $params) = @_; # p $params; my $sql = $self->sql_lib->retr('user_details'); # p $sql; my $user = $self->_get_data($sql, $params->{username}); # p $user; return $user; } sub get_patient_data { my ($self, $user) = @_; # p $user; return {}; } # private subs ================================================================= sub _get_data { my $self = shift; my ($sql, @bind) = @_; # p $sql; p @bind; my $data = $self->dbix->query($sql, @bind)->hashes; # p $data; # return ref to array of hashrefs or single hashref: return @$data > 1 ? $data # AoH : $data->[0]; # href } =begin sub _build_dbix { # warn 'building dbix object'; my $dsn = 'dbi:mysql:database=hilis4;mysql_read_default_file=~/.local/mysql.cnf'; DBIx::Simple->connect($dsn); } =cut 1;