VEL-Connect/CreateDB.sql

52 lines
1.9 KiB
SQL

DROP TABLE IF EXISTS `Room`;
CREATE TABLE `Room` (
`room_id` VARCHAR(64) NOT NULL PRIMARY KEY,
`date_created` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`last_modified` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-- Can be null if no owner
`owner` VARCHAR(64),
-- array of hw_ids of users allowed. Always includes the owner. Null for public
`whitelist` JSON,
CHECK (JSON_VALID(`whitelist`)),
`tv_url` VARCHAR(1024),
`carpet_color` VARCHAR(9),
`room_details` JSON,
CHECK (JSON_VALID(`room_details`))
);
DROP TABLE IF EXISTS `Headset`;
CREATE TABLE `Headset` (
`hw_id` VARCHAR(64) NOT NULL PRIMARY KEY,
-- The room_id of the owned room
`owned_room` VARCHAR(64),
-- The room_id of the current room. Can be null if room not specified
`current_room` VARCHAR(64) DEFAULT "0",
-- changes relatively often. Generated by the headset
`pairing_code` INT,
`date_created` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-- the last time this headset was actually seen
`last_used` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`user_color` VARCHAR(9),
`user_name` VARCHAR(64),
`avatar_url` VARCHAR(128),
-- Stuff like player color, nickname, whiteboard state
`user_details` JSON,
CHECK (JSON_VALID(`user_details`))
);
DROP TABLE IF EXISTS `APIKey`;
CREATE TABLE `APIKey` (
`key` VARCHAR(64) NOT NULL PRIMARY KEY,
-- 0 is all access, higher is less
-- 10 is for headset clients
`auth_level` INT,
`date_created` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`last_used` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`uses` INT DEFAULT 0
);
DROP TABLE IF EXISTS `UserCount`;
CREATE TABLE `UserCount` (
`timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP PRIMARY KEY,
`hw_id` VARCHAR(64) NOT NULL,
`room_id` VARCHAR(64) NOT NULL,
`total_users` INT NOT NULL DEFAULT 0,
`room_users` INT NOT NULL DEFAULT 0
);