]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/perlmods/OpenILS/Utils/OfflineStore.pm
adding hold verification support per copy_location
[Evergreen.git] / Open-ILS / src / perlmods / OpenILS / Utils / OfflineStore.pm
1 package OpenILS::Utils::OfflineStore;
2 use strict; use warnings;
3 use base 'Class::DBI';
4 use DBI;
5 use OpenSRF::Utils::Config;
6
7 our ($_dsn,$_u,$_p);
8 sub DBFile {
9         my $class = shift;
10         my $dsn = shift;
11         my $u = shift;
12         my $p = shift;
13         if ($dsn) {
14                 $_dsn = $dsn;
15                 $_u = $u;
16                 $_p = $p;
17         }
18         return $_dsn;
19 }
20
21 our $_dbh;
22 sub db_Main {
23         my $self = shift;
24         return $_dbh if ($_dbh);
25
26         $_dbh = DBI->connect($_dsn,$_u,$_p,
27                 {
28                         RootClass => 'DBIx::ContextualFetch' 
29                 }
30         );
31
32         return $_dbh;
33 }
34
35
36 sub disconnect {
37         $_dbh->disconnect;
38         $_dbh = undef;
39 }
40
41
42 package OpenILS::Utils::OfflineStore::Session;
43 use base 'OpenILS::Utils::OfflineStore';
44
45 sub _create_table {
46         my $self = shift;
47         $self->db_Main->do( <<" SQL" );
48
49 CREATE TABLE session (
50         key                             TEXT    UNIQUE PRIMARY KEY,
51         org                             INTEGER NOT NULL,
52         description             TEXT,
53         creator                 INTEGER NOT NULL,
54         create_time             INTEGER NOT NULL,
55         in_process              INTEGER NOT NULL DEFAULT 0,
56         start_time              INTEGER,
57         end_time                        INTEGER,
58         num_complete    INTEGER NOT NULL DEFAULT 0
59 );
60 CREATE INDEX IF NOT EXISTS session_pkey ON session (key);
61 CREATE INDEX IF NOT EXISTS session_org ON session (org);
62 CREATE INDEX IF NOT EXISTS session_creation ON session (create_time);
63
64         SQL
65 }
66
67 __PACKAGE__->table('offline.session');
68 __PACKAGE__->columns( Essential => qw/key org description 
69                 creator create_time in_process start_time end_time num_complete/);
70 __PACKAGE__->has_many(scripts => 'OpenILS::Utils::OfflineStore::Script');
71
72
73 package OpenILS::Utils::OfflineStore::Script;
74 use base 'OpenILS::Utils::OfflineStore';
75
76 sub _create_table {
77         my $self = shift;
78         $self->db_Main->do( <<" SQL" );
79
80 CREATE TABLE script (
81         id              INTEGER UNIQUE PRIMARY KEY AUTOINCREMENT,
82         session         TEXT    NOT NULL,
83         requestor       INTEGER NOT NULL,
84         create_time     INTEGER NOT NULL,
85         workstation     TEXT    NOT NULL,
86         logfile         TEXT    NOT NULL,
87         time_delta      INTEGER NOT NULL DEFAULT 0,
88         count                   INTEGER NOT NULL DEFAULT 0
89 );
90 CREATE INDEX IF NOT EXISTS script_pkey ON script (id);
91 CREATE INDEX IF NOT EXISTS script_ws ON script (workstation);
92 CREATE INDEX IF NOT EXISTS script_session ON script (session);
93
94         SQL
95 }
96
97 __PACKAGE__->table('offline.script');
98 __PACKAGE__->columns( Essential => qw/id session requestor create_time workstation logfile time_delta count/);
99 __PACKAGE__->has_a(session => 'OpenILS::Utils::OfflineStore::Session');
100 __PACKAGE__->sequence(qw/offline.script_id_seq/);
101
102
103
104
105