<?php

// matches version in scheme.sql

$db_version=2;

// Initialise a new DB with latest version

function init_db() {
    global $authdb, $db;

    is_dir(dirname($authdb)) || mkdir(dirname($authdb));
    $db = new SQLite3($authdb, SQLITE3_OPEN_CREATE|SQLITE3_OPEN_READWRITE);
    $createsql = file_get_contents('includes/scheme.sql');
    $db->exec($createsql);
    $salt = bin2hex(openssl_random_pseudo_bytes(16));
    $db->exec("INSERT INTO users (emailaddress, password, isadmin) VALUES ('admin', '".crypt("admin", '$6$'.$salt)."', 1)");

    return $db;
}

function open_db() {
    global $authdb, $db, $db_version;

    if (!isset($db)) {
        $db = new SQLite3($authdb, SQLITE3_OPEN_READWRITE);
        $db->exec('PRAGMA foreign_keys = 1');
    }

    $version = intval($db->querySingle('SELECT value FROM metadata WHERE name = "version"'));

    switch($version) {
      case 0:
        $sql = file_get_contents('includes/upgrade-0-1.sql');
        $db->exec($sql);
        writelog("Upgraded schema to version 1","system");
        // continue
      case 1: // never existed
        $sql = file_get_contents('includes/upgrade-1-2.sql');
        $db->exec($sql);
        writelog("Upgraded schema to version 2","system");
        // continue
      case $db_version:
        break;
    }

    return $db;
}

function get_db() {
    global $authdb, $db;

    if (!isset($db)) {
        open_db();
    }

    return $db;
}

?>