@@ -11,6 +11,7 @@ class Workflow
1111
1212 private static $ filePids ;
1313
14+ private static $ fileDb ;
1415 /** @var PDO */
1516 private static $ db ;
1617 /** @var PDOStatement[] */
@@ -48,17 +49,11 @@ public static function init($enterprise = false, $query = null, $hotkey = false)
4849
4950 self ::$ filePids = $ dataDir . '/pid ' ;
5051
51- $ fileDb = $ dataDir . '/db.sqlite ' ;
52- $ exists = file_exists ($ fileDb );
53- self ::$ db = new PDO ('sqlite: ' . $ fileDb , null , null );
52+ self :: $ fileDb = $ dataDir . '/db.sqlite ' ;
53+ $ exists = file_exists (self :: $ fileDb );
54+ self ::$ db = new PDO ('sqlite: ' . self :: $ fileDb , null , null );
5455 if (!$ exists ) {
55- self ::$ db ->exec ('
56- CREATE TABLE config (
57- key TEXT PRIMARY KEY,
58- value TEXT
59- )
60- ' );
61- self ::createRequestCacheTable ();
56+ self ::createTables ();
6257 }
6358
6459 if (self ::$ enterprise ) {
@@ -342,18 +337,33 @@ public static function checkUpdate()
342337 return version_compare ($ version , self ::VERSION ) > 0 ;
343338 }
344339
345- private static function createRequestCacheTable ()
340+ private static function createTables ()
346341 {
342+ self ::$ db ->exec ('
343+ CREATE TABLE config (
344+ key TEXT PRIMARY KEY NOT NULL,
345+ value TEXT
346+ ) WITHOUT ROWID
347+ ' );
348+
347349 self ::$ db ->exec ('
348350 CREATE TABLE request_cache (
349- url TEXT PRIMARY KEY,
350- timestamp INTEGER,
351+ url TEXT PRIMARY KEY NOT NULL ,
352+ timestamp INTEGER NOT NULL ,
351353 etag TEXT,
352354 content TEXT,
353355 refresh INTEGER,
354356 parent TEXT
355- )
357+ ) WITHOUT ROWID
356358 ' );
359+ self ::$ db ->exec ('CREATE INDEX parent_url ON request_cache(parent) WHERE parent IS NOT NULL ' );
360+ }
361+
362+ public static function deleteDatabase ()
363+ {
364+ self ::closeCursors ();
365+ self ::$ db = null ;
366+ unlink (self ::$ fileDb );
357367 }
358368
359369 public static function addItem (Item $ item , $ check = true )
0 commit comments