| 
<?phpdeclare(strict_types=1);
 
 /**
 * This nukes the local Keyggdrasil cache.
 */
 \ignore_user_abort(true);
 \set_time_limit(0);
 
 require_once \dirname(__DIR__).'/bootstrap.php';
 
 
 $db = \Airship\get_database();
 
 $db->beginTransaction();
 
 $db->exec("DROP TABLE airship_package_versions;");
 $db->exec("DROP TABLE airship_package_cache;");
 $db->exec("DROP TABLE airship_tree_updates;");
 
 $db->exec("CREATE TABLE IF NOT EXISTS airship_tree_updates (
 treeupdateid BIGSERIAL PRIMARY KEY,
 channel TEXT,
 channelupdateid BIGINT,
 data TEXT,
 merkleroot TEXT,
 created TIMESTAMP DEFAULT NOW(),
 modified TIMESTAMP DEFAULT NOW()
 );");
 $db->exec("CREATE INDEX ON airship_tree_updates (channel);");
 $db->exec("CREATE INDEX ON airship_tree_updates (channelupdateid);");
 $db->exec("CREATE UNIQUE INDEX ON airship_tree_updates (channel, channelupdateid);");
 $db->exec("CREATE INDEX ON airship_tree_updates (merkleroot);");
 
 $db->exec("DROP TRIGGER IF EXISTS update_airship_tree_updates_modtime ON airship_tree_updates;");
 $db->exec("CREATE TRIGGER update_airship_tree_updates_modtime
 BEFORE UPDATE ON airship_tree_updates
 FOR EACH ROW EXECUTE PROCEDURE update_modtime();");
 
 $db->exec("CREATE TABLE IF NOT EXISTS airship_package_cache (
 packageid BIGSERIAL PRIMARY KEY,
 packagetype type_airship_package,
 supplier TEXT,
 name TEXT,
 installed BOOLEAN DEFAULT FALSE,
 current_version TEXT,
 skyport_metadata JSONB,
 created TIMESTAMP DEFAULT NOW(),
 modified TIMESTAMP DEFAULT NOW()
 );");
 $db->exec("CREATE INDEX ON airship_package_cache (packagetype);");
 $db->exec("CREATE INDEX ON airship_package_cache (supplier);");
 $db->exec("CREATE INDEX ON airship_package_cache (name);");
 $db->exec("CREATE UNIQUE INDEX ON airship_package_cache(packagetype, supplier, name);");
 
 $db->exec("CREATE TABLE IF NOT EXISTS airship_package_versions (
 versionid BIGSERIAL PRIMARY KEY,
 package BIGINT REFERENCES airship_package_cache(packageid),
 version TEXT,
 checksum TEXT,
 commithash TEXT,
 date_released TIMESTAMP,
 treeupdateid BIGINT REFERENCES airship_tree_updates(treeupdateid),
 created TIMESTAMP DEFAULT NOW(),
 modified TIMESTAMP DEFAULT NOW()
 );");
 
 $db->exec("CREATE INDEX ON airship_package_versions (version);");
 $db->exec("CREATE INDEX ON airship_package_versions (checksum);");
 $db->exec("CREATE UNIQUE INDEX ON airship_package_versions (package, version);");
 
 $db->exec("DROP TRIGGER IF EXISTS update_airship_package_versions_modtime ON airship_package_versions;");
 $db->exec("CREATE TRIGGER update_airship_package_versions_modtime
 BEFORE UPDATE ON airship_package_versions
 FOR EACH ROW EXECUTE PROCEDURE update_modtime();");
 
 $db->exec("DROP TRIGGER IF EXISTS update_airship_package_cache_modtime ON airship_package_cache;");
 $db->exec("CREATE TRIGGER update_airship_package_cache_modtime
 BEFORE UPDATE ON airship_package_cache
 FOR EACH ROW EXECUTE PROCEDURE update_modtime();");
 
 
 $db->exec("INSERT INTO airship_tree_updates (channel, channelupdateid, data, merkleroot) VALUES
 (
 'paragonie',
 1,
 '{\"action\":\"CREATE\",\"date_generated\":\"2016-06-04T16:00:00\",\"public_key\":\"1d9b44a5ec7be970dcb07efa81e661cb493f700953c0c26e5161b9cf0637e7f1\",\"supplier\":\"pragonie\",\"type\":\"master\",\"master\":null}',
 '99b4556c9506fd1742ca837e534553c9dcff5cdfae3ef57c74eb6175c6c8ffb9da04102a6a83c5139efd83c5e6f52cabc557ed0726652e041e214b8a677247ea'
 )");
 $db->exec("INSERT INTO airship_tree_updates (channel, channelupdateid, data, merkleroot) VALUES(
 'paragonie',
 2,
 '{\"action\":\"CREATE\",\"date_generated\":\"2016-06-04T16:05:00\",\"public_key\":\"6731558f53c6edf15c7cc1e439b15c18d6dfc1fd2c66f9fda8c56cfe7d37110b\",\"supplier\":\"pragonie\",\"type\":\"signing\",\"master\":\"{\\\"public_key\\\":\\\"1d9b44a5ec7be970dcb07efa81e661cb493f700953c0c26e5161b9cf0637e7f1\\\",\\\"signature\\\":\\\"017bb2dbe6fa75d3240f330be532bf8d9aced0654f257b5670edbd44c52f892459b5b314f095cd1df65346035a4b927dd4edbcfee677d4ebd5f861d6789fc301\\\"}\"}',
 '940c0456c19d3606b27c89d15a82523f8fdb83928b4d27e027058a279665b124afc7af4188098704058bf067f0349b32c9a8c7f244499623d5d9f7b6e1fa986d'
 )");
 
 $db->commit();
 
 |