App-LedgerSMB-Admin
view release on metacpan or search on metacpan
lib/App/LedgerSMB/Admin/Database/Setting.pm view on Meta::CPAN
=head1 NAME
App::LedgerSMB::Admin::Database::Setting - Access LSMB Settings from Admin Tools
=cut
package App::LedgerSMB::Admin::Database::Setting;
use Moo;
with 'PGObject::Simple::Role';
use PGObject::Util::DBMethod;
sub _get_dbh {
my ($self) = @_;
return $self->database->connect;
}
sub _get_prefix { 'setting_' };
=head1 SYNOPSIS
my $db = App::LedgerSMB::Admin::Database->new(
username => 'postgres',
password => 'secret',
host => 'localhost',
port => '5432',
);
my $setting = App::LedgerSMB::Admin::Database::Setting->new(
database => $db,
setting_key => 'separate_duties');
my $sep_duties = $setting->value;
=head1 PROPERTIES
=head2 database
The database for the associated setting. Must be a
App::LedgerSMB:Admin::Database object
=cut
has database => (
is => 'ro',
isa => sub { die 'Must be a Database Object'
unless eval { $_[0]->isa('App::LedgerSMB::Admin::Database')};
}
);
=head2 setting_key
The name of the setting
=cut
has setting_key => (is => 'ro');
=head2 value
The value of the setting. Is looked up lazily.
=cut
has value => (is => 'lazy');
sub _build_value {
my ($hash) = $_[0]->_get;
return $hash->{value};
}
sub _get {
my ($self) = @_;
my ($hash) = $self->call_procedure(funcname => 'get', args => [$self->setting_key]);
return $hash;
}
=head1 LICENSE AND COPYRIGHT
Copyright 2014 Chris Travers.
This program is distributed under the (Revised) BSD License:
L<http://www.opensource.org/licenses/BSD-3-Clause>
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
( run in 0.500 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )