App::Dochazka::REST::Model::Schedhistory - schedule history functions
Version 0.115
use App::Dochazka::REST::Model::Schedhistory; ...
A description of the schedhistory data model follows.
Once we know the SID of the schedule we would like to assign to a given employee, it is time to insert a record into the schedhistory table:
schedhistory
CREATE TABLE IF NOT EXISTS schedhistory ( shid serial PRIMARY KEY, eid integer REFERENCES employees (eid) NOT NULL, sid integer REFERENCES schedules (sid) NOT NULL, effective timestamp NOT NULL, remark text, stamp json );
This table also includes two stored procedures -- schedule_at_timestamp and current_schedule -- which will return an employee's schedule as of a given date/time and as of 'now', respectively. For the procedure definitions, see dbinit_Config.pm
schedule_at_timestamp
current_schedule
dbinit_Config.pm
See also "When history changes take effect".
constructor (spawn)
reset method (recycles an existing object)
basic accessors (shid, eid, sid, effective, remark)
load method (load schedhistory record from EID and optional timestamp)
insert method (straightforward)
delete method (straightforward) -- not tested yet # FIXME
For basic workflow, see t/007-schedule.t.
t/007-schedule.t
This module provides the following exports:
Constructor. See Employee.pm->spawn for general comments.
Instance method. Resets object, either to its primal state (no arguments) or to the state given in PARAMHASH.
Basic accessor methods for all the fields of Schedhistory table. These functions return whatever value happens to be associated with the object, with no guarantee that it matches the database.
Accessor method.
Instance method. Given an EID, and, optionally, a timestamp, loads a single Schedhistory record into the object, rewriting whatever was there before. Returns a status object.
Instance method. Attempts to INSERT a record into the 'Schedhistory' table. Field values are taken from the object. Returns a status object.
There is no update method for schedhistory records. Instead, delete and re-create.
Instance method. Deletes the record. Returns status object.
In this section, some examples are presented to give an idea of how this module is used.
Let's say Sam's initial schedule is 09:00-17:00, Monday to Friday. To reflect that, the schedintvls table might contain the following intervals for sid = 9
schedintvls
sid = 9
'[2014-06-02 09:00, 2014-06-02 17:00)' '[2014-06-03 09:00, 2014-06-03 17:00)' '[2014-06-04 09:00, 2014-06-04 17:00)' '[2014-06-05 09:00, 2014-06-05 17:00)' '[2014-06-06 09:00, 2014-06-06 17:00)'
and the schedhistory table would contain a record like this:
shid 848 (automatically assigned by PostgreSQL) eid 39 (Sam's Dochazka EID) sid 9 effective '2014-06-04 00:00'
(This is a straightfoward example.)
A few months later, Sam gets assigned to the night shift. A new schedhistory record is added:
shid 1215 (automatically assigned by PostgreSQL) eid 39 (Sam's Dochazka EID) sid 17 (link to Sam's new weekly work schedule) effective '2014-11-17 12:00'
And the schedule intervals for sid = 17 could be:
sid = 17
'[2014-06-02 23:00, 2014-06-03 07:00)' '[2014-06-03 23:00, 2014-06-04 07:00)' '[2014-06-04 23:00, 2014-06-05 07:00)' '[2014-06-05 23:00, 2014-06-06 07:00)' '[2014-06-06 23:00, 2014-06-07 07:00)'
(Remember: the date part in this case designates the day of the week)
Nathan Cutler, <presnypreklad@gmail.com>
<presnypreklad@gmail.com>
To install App::Dochazka::REST, copy and paste the appropriate command in to your terminal.
cpanm
cpanm App::Dochazka::REST
CPAN shell
perl -MCPAN -e shell install App::Dochazka::REST
For more information on module installation, please visit the detailed CPAN module installation guide.