62 lines
1.5 KiB
Perl
62 lines
1.5 KiB
Perl
package BurguillosInfo::Schema;
|
|
|
|
use v5.36.0;
|
|
|
|
use strict;
|
|
use warnings;
|
|
use utf8;
|
|
|
|
our $VERSION = 1;
|
|
|
|
use feature 'signatures';
|
|
|
|
use BurguillosInfo;
|
|
|
|
use parent 'DBIx::Class::Schema';
|
|
|
|
__PACKAGE__->load_namespaces();
|
|
|
|
my $schema;
|
|
|
|
sub Schema ($class) {
|
|
if ( !defined $schema ) {
|
|
my $app = BurguillosInfo->new;
|
|
my $config = $app->{config};
|
|
my $database_config = $config->{db};
|
|
my $dbname = $database_config->{database};
|
|
my $host = $database_config->{host};
|
|
my $port = $database_config->{port};
|
|
my $user = $database_config->{user};
|
|
my $password = $database_config->{password};
|
|
my $dsn = 'dbi:Pg:';
|
|
|
|
if ( !defined $dbname ) {
|
|
die "The key database/dbname must be configured.";
|
|
}
|
|
$dsn .= "dbname=$dbname";
|
|
if ( defined $host ) {
|
|
$dsn .= ";host=$host";
|
|
}
|
|
if ( defined $port ) {
|
|
$dsn .= ";port=$port";
|
|
}
|
|
|
|
# Undef is perfectly fine for username and password.
|
|
$schema = $class->connect(
|
|
$dsn, $user,
|
|
$password,
|
|
{
|
|
auto_savepoint => 1,
|
|
Callbacks => {
|
|
connected => sub {
|
|
shift->do('set timezone = UTC');
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
);
|
|
}
|
|
return $schema;
|
|
}
|
|
1;
|