DROP DATABASE IF EXISTS `territory-walker`;
CREATE DATABASE `territory-walker`;
USE `territory-walker`;

CREATE TABLE `gameInstances` (
    gameID VARCHAR(6) UNIQUE NOT NULL,
    PRIMARY KEY (gameID)
);

CREATE TABLE `users` (
    userID VARCHAR(6) UNIQUE NOT NULL,
    nickname VARCHAR (40) NOT NULL,
    PRIMARY KEY (userID)
);

CREATE TABLE `userJoinedGames` (
    userID VARCHAR(6) NOT NULL,
    gameID VARCHAR(6) NOT NULL,
    colour VARCHAR(6) NOT NULL,
    FOREIGN KEY (userID) REFERENCES users(userID),
    FOREIGN KEY (gameID) REFERENCES gameInstances(gameID),
    PRIMARY KEY (userID, gameID)
);

CREATE TABLE `polygonArea` (
    gameID VARCHAR(6) UNIQUE NOT NULL,
    polygonID VARCHAR(36) UNIQUE NOT NULL,
    userID VARCHAR(6) NOT NULL,
    area DOUBLE(30,4) NOT NULL,
    PRIMARY KEY (polygonID),
    FOREIGN KEY (gameID) REFERENCES gameInstances(gameID),
    FOREIGN KEY (userID) REFERENCES users(userID)
);

CREATE TABLE `polygonPoints` (
    polygonID VARCHAR(36) NOT NULL,
    lat DOUBLE(11,8) NOT NULL,
    lng DOUBLE(11,8) NOT NULL,
    FOREIGN KEY (polygonID) REFERENCES polygonArea(polygonID)
);

INSERT INTO `gameInstances` (gameID) VALUES ("samdum");
INSERT INTO `users` (userID, nickname) VALUES ("samded", "Lesmaux");
INSERT INTO `users` (userID, nickname) VALUES ("fanded", "Umbra Sheep");
-- TODO CREATE PROCEDURE FOR GENERATING GAME ID
-- concat(substring('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', rand()*36+1, 1),
-- substring('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', rand()*36+1, 1),
-- substring('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', rand()*36+1, 1),
-- substring('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', rand()*36+1, 1),
-- substring('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', rand()*36+1, 1),
-- substring('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', rand()*36+1, 1))