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