]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/perlmods/OpenILS/Utils/OfflineStore.pm
getting closer..
[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         in_process      INTEGER NOT NULL DEFAULT 0,
40         start_time      INTEGER,
41         end_time                INTEGER
42 );
43 CREATE INDEX IF NOT EXISTS session_pkey ON session (key);
44 CREATE INDEX IF NOT EXISTS session_org ON session (org);
45 CREATE INDEX IF NOT EXISTS session_creation ON session (create_time);
46
47         SQL
48 }
49
50 __PACKAGE__->table('session');
51 __PACKAGE__->columns( Essential => qw/key org description 
52                 creator create_time in_process start_time end_time/);
53 __PACKAGE__->has_many(scripts => 'OpenILS::Utils::OfflineStore::Script');
54
55
56 package OpenILS::Utils::OfflineStore::Script;
57 use base 'OpenILS::Utils::OfflineStore';
58
59 sub _create_table {
60         my $self = shift;
61         $self->db_Main->do( <<" SQL" );
62
63 CREATE TABLE script (
64         id              INTEGER UNIQUE PRIMARY KEY AUTOINCREMENT,
65         session         TEXT    NOT NULL,
66         requestor       INTEGER NOT NULL,
67         create_time     INTEGER NOT NULL,
68         workstation     TEXT    NOT NULL,
69         logfile         TEXT    NOT NULL,
70         time_delta      INTEGER NOT NULL DEFAULT 0,
71         count                   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 create_time workstation logfile time_delta count/);
82 __PACKAGE__->has_a(session => 'OpenILS::Utils::OfflineStore::Session');
83
84
85
86
87