App-Dochazka-REST
view release on metacpan or search on metacpan
lib/App/Dochazka/REST/Model/Lock.pm view on Meta::CPAN
# used to endorse or promote products derived from this software without
# specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
# *************************************************************************
package App::Dochazka::REST::Model::Lock;
use 5.012;
use strict;
use warnings;
use App::CELL qw( $CELL $log $meta $site );
use App::Dochazka::REST::Model::Shared qw( cud load load_multiple );
use Data::Dumper;
use Params::Validate qw( :all );
# we get 'spawn', 'reset', and accessors from parent
use parent 'App::Dochazka::Common::Model::Lock';
=head1 NAME
App::Dochazka::REST::Model::Lock - lock data model
=head1 SYNOPSIS
use App::Dochazka::REST::Model::Lock;
...
=head1 DESCRIPTION
A description of the lock data model follows.
=head2 Locks in the database
CREATE TABLE locks (
lid serial PRIMARY KEY,
eid integer REFERENCES Employees (EID),
intvl tsrange NOT NULL,
remark text
)
There is also a stored procedure, C<fully_locked>, that takes an EID
and a tsrange, and returns a boolean value indicating whether or not
that period is fully locked for the given employee.
=head3 Locks in the Perl API
# FIXME: MISSING VERBIAGE
=head1 EXPORTS
This module provides the following exports:
=cut
use Exporter qw( import );
our @EXPORT_OK = qw(
count_locks_in_tsrange
fetch_locks_by_eid_and_tsrange
lid_exists
);
=head1 METHODS
=head2 load_by_lid
Instance method. Given an LID, loads a single lock into the object, rewriting
whatever was there before. Returns a status object.
=cut
sub load_by_lid {
my $self = shift;
my ( $conn, $lid ) = validate_pos( @_,
{ isa => 'DBIx::Connector' },
{ type => SCALAR },
);
return load(
conn => $conn,
class => __PACKAGE__,
sql => $site->SQL_LOCK_SELECT_BY_LID,
keys => [ $lid ],
);
}
=head2 insert
Instance method. Attempts to INSERT a record. Field values are taken from the
object. Returns a status object.
=cut
sub insert {
my $self = shift;
( run in 0.539 second using v1.01-cache-2.11-cpan-524268b4103 )