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 )