]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/perlmods/OpenILS/Utils/OfflineStore.pm
adding
[Evergreen.git] / Open-ILS / src / perlmods / OpenILS / Utils / OfflineStore.pm
1 package OpenILS::Utils::OfflineStore;
2 use base 'Class::DBI';
3 use DBI;
4 use OpenSRF::Utils::Config;
5
6 our $_file;
7 sub DBFile {
8         my $class = shift;
9         my $file = shift;
10         $_file = $file if ($file);
11         return $_file;
12 }
13
14 our $_dbh;
15 sub db_Main {
16         my $self = shift;
17         return $_dbh if ($_dbh);
18         $_dbh = DBI->connect('dbi:SQLite:dbname='.$self->DBFile,'','');
19         OpenILS::Utils::OfflineStore::Session->_create_table;
20         OpenILS::Utils::OfflineStore::Script->_create_table;
21         return $_dbh;
22 }
23
24
25
26 package OpenILS::Utils::OfflineStore::Session;
27 use base 'OpenILS::Utils::OfflineStore';
28
29 sub _create_table {
30         my $self = shift;
31         $self->db_Main->do( <<" SQL" );
32
33 CREATE TABLE session (
34         key                     TEXT    UNIQUE PRIMARY KEY,
35         org                     INTEGER NOT NULL,
36         description     TEXT,
37         creator         INTEGER NOT NULL,
38         create_time     INTEGER NOT NULL,
39         complete                INTEGER NOT NULL DEFAULT 0,
40         in_process      INTEGER NOT NULL DEFAULT 0,
41         start_time      INTEGER,
42         end_time                INTEGER
43 );
44 CREATE INDEX IF NOT EXISTS session_pkey ON session (key);
45 CREATE INDEX IF NOT EXISTS session_org ON session (org);
46 CREATE INDEX IF NOT EXISTS session_creation ON session (create_time);
47
48         SQL
49 }
50
51 __PACKAGE__->table('session');
52 __PACKAGE__->columns( Essential => qw/key org description 
53         creator create_time complete in_process start_time end_time/);
54 __PACKAGE__->has_many(scripts => 'OpenILS::Utils::OfflineStore::Script');
55
56
57 package OpenILS::Utils::OfflineStore::Script;
58 use base 'OpenILS::Utils::OfflineStore';
59
60 sub _create_table {
61         my $self = shift;
62         $self->db_Main->do( <<" SQL" );
63
64 CREATE TABLE script (
65         id              INTEGER UNIQUE PRIMARY KEY AUTOINCREMENT,
66         session         TEXT    NOT NULL,
67         requestor       INTEGER NOT NULL,
68         timestamp       INTEGER NOT NULL,
69         workstation     TEXT    NOT NULL,
70         logfile         TEXT    NOT NULL,
71         time_delta      INTEGER NOT NULL DEFAULT 0
72 );
73 CREATE INDEX IF NOT EXISTS script_pkey ON script (id);
74 CREATE INDEX IF NOT EXISTS script_ws ON script (workstation);
75 CREATE INDEX IF NOT EXISTS script_session ON script (session);
76
77         SQL
78 }
79
80 __PACKAGE__->table('script');
81 __PACKAGE__->columns( Essential => qw/id session requestor timestamp workstation logfile time_delta/);
82 __PACKAGE__->has_a(session => 'OpenILS::Utils::OfflineStore::Session');
83
84
85
86
87