<?php 
declare(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(); 
 
 |