<?php
require_once(__DIR__ . "/knowledge-space-database.php");

function ks_insert_or_update_graph($name, $graph)
{
    // Delete old graph and insert new
    global $SPACES_TABLE;
    global $wpdb;
    $wpdb->delete($SPACES_TABLE, array("name" => $name), array("%s"));

    return ks_insert_space($name, $graph);
}

function ks_select_all_spaces()
{
    global $SPACES_TABLE;
    return ks_select("SELECT * FROM $SPACES_TABLE");
}

function ks_select_space($space_name)
{
    global $SPACES_TABLE;
    return ks_select_single("SELECT * FROM $SPACES_TABLE WHERE name = %s", $space_name);
}

function ks_insert_space($name = null, $graph = "")
{
    // If no name given, set default name
    if ($name == null) {
        // Adding current time to make it somewhat unique
        $now = new DateTime();
        $name = "New space - " . $now->format('Y-m-d H:i:s');
    }

    $data = array(
        "name" => $name,
        "graph" => $graph
    );
    $format = array("%s", "%s");

    global $SPACES_TABLE;
    global $wpdb;
    $wpdb->insert($SPACES_TABLE, $data, $format);

    return $wpdb->insert_id;
}

function ks_select($query, $parameters = array())
{
    global $wpdb;
    $sql = $wpdb->prepare($query, $parameters);
    return $wpdb->get_results($sql);
}

function ks_select_single($query, $parameters = array())
{
    $result = ks_select($query, $parameters);

    if ($result) {
        return $result[0];
    } else {
        return null;
    }
}

function ks_insert($table, $data)
{
    global $wpdb;
    $wpdb->insert($table, $data);

    return $wpdb->insert_id;
}