1 package OpenILS::Utils::OfflineStore;
2 use strict; use warnings;
5 use OpenSRF::Utils::Config;
11 $_file = $file if ($file);
18 return $_dbh if ($_dbh);
20 $_dbh = DBI->connect('dbi:SQLite:dbname='.$self->DBFile,'','',
22 RootClass => 'DBIx::ContextualFetch'
26 if( -s $self->DBFile < 1 ) { # tables have not been created
27 OpenILS::Utils::OfflineStore::Session->_create_table;
28 OpenILS::Utils::OfflineStore::Script->_create_table;
40 package OpenILS::Utils::OfflineStore::Session;
41 use base 'OpenILS::Utils::OfflineStore';
45 $self->db_Main->do( <<" SQL" );
47 CREATE TABLE session (
48 key TEXT UNIQUE PRIMARY KEY,
51 creator INTEGER NOT NULL,
52 create_time INTEGER NOT NULL,
53 in_process INTEGER NOT NULL DEFAULT 0,
56 num_complete INTEGER NOT NULL DEFAULT 0
58 CREATE INDEX IF NOT EXISTS session_pkey ON session (key);
59 CREATE INDEX IF NOT EXISTS session_org ON session (org);
60 CREATE INDEX IF NOT EXISTS session_creation ON session (create_time);
65 __PACKAGE__->table('session');
66 __PACKAGE__->columns( Essential => qw/key org description
67 creator create_time in_process start_time end_time num_complete/);
68 __PACKAGE__->has_many(scripts => 'OpenILS::Utils::OfflineStore::Script');
71 package OpenILS::Utils::OfflineStore::Script;
72 use base 'OpenILS::Utils::OfflineStore';
76 $self->db_Main->do( <<" SQL" );
79 id INTEGER UNIQUE PRIMARY KEY AUTOINCREMENT,
80 session TEXT NOT NULL,
81 requestor INTEGER NOT NULL,
82 create_time INTEGER NOT NULL,
83 workstation TEXT NOT NULL,
84 logfile TEXT NOT NULL,
85 time_delta INTEGER NOT NULL DEFAULT 0,
86 count INTEGER NOT NULL DEFAULT 0
88 CREATE INDEX IF NOT EXISTS script_pkey ON script (id);
89 CREATE INDEX IF NOT EXISTS script_ws ON script (workstation);
90 CREATE INDEX IF NOT EXISTS script_session ON script (session);
95 __PACKAGE__->table('script');
96 __PACKAGE__->columns( Essential => qw/id session requestor create_time workstation logfile time_delta count/);
97 __PACKAGE__->has_a(session => 'OpenILS::Utils::OfflineStore::Session');