| 
<?phpdeclare(strict_types=1);
 
 require_once \dirname(__DIR__).'/src/bootstrap.php';
 
 /**
 * This will nuke and reset the local update tree. Essentially,
 * only use it if Keyggdrasil ends up in an invalid state (e.g.
 * hard fork).
 */
 
 $db = \Airship\get_database();
 
 $db->beginTransaction();
 
 $db->query('TRUNCATE TABLE airship_tree_updates;');
 
 $query = $db->query(<<<EOSQL
 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'
 ),
 (
 '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'
 );
 EOSQL
 );
 
 
 // Reset the sequence value:
 $db->query("SELECT setval('airship_tree_updates_treeupdateid_seq', 2);");
 
 /* More generally:
 SELECT setval(
 'airship_tree_updates_treeupdateid_seq',
 COALESCE(
 (SELECT MAX(treeupdateid) FROM airship_tree_updates),
 1
 )
 );
 */
 
 if ($db->commit()) {
 echo 'OK', PHP_EOL;
 exit(0);
 }
 
 |