1 package OpenILS::Utils::OfflineStore;
2 use strict; use warnings;
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';
14 use OpenSRF::Utils::Config;
33 return $_dbh if ($_dbh);
35 $_dbh = DBI->connect($_dsn,$_u,$_p,
37 RootClass => 'DBIx::ContextualFetch'
51 package OpenILS::Utils::OfflineStore::Session;
52 use parent 'OpenILS::Utils::OfflineStore';
56 $self->db_Main->do( <<" SQL" );
58 CREATE TABLE session (
59 key TEXT UNIQUE PRIMARY KEY,
62 creator INTEGER NOT NULL,
63 create_time INTEGER NOT NULL,
64 in_process INTEGER NOT NULL DEFAULT 0,
67 num_complete INTEGER NOT NULL DEFAULT 0
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);
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');
82 package OpenILS::Utils::OfflineStore::Script;
83 use parent 'OpenILS::Utils::OfflineStore';
87 $self->db_Main->do( <<" SQL" );
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
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);
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/);