3d-interface/sql/backup.pgsql

163 lines
3.9 KiB
PL/PgSQL
Executable File

#!/bin/sh
psql interface 3dinterface << E_O_SQL
-- Clear database from previous tables (just in case...)
DROP TABLE IF EXISTS Users CASCADE;
DROP TABLE IF EXISTS Arrowclicked CASCADE;
DROP TABLE IF EXISTS CoinClicked CASCADE;
DROP TABLE IF EXISTS KeyboardEvent CASCADE;
DROP TABLE IF EXISTS ResetClicked CASCADE;
DROP TABLE IF EXISTS PreviousNextClicked CASCADE;
DROP TABLE IF EXISTS Hovered CASCADE;
DROP TABLE IF EXISTS Scene CASCADE;
DROP TABLE IF EXISTS Experiment CASCADE;
DROP TABLE IF EXISTS FpsCounter CASCADE;
DROP TABLE IF EXISTS PointerLocked CASCADE;
DROP TABLE IF EXISTS SwitchedLockOption CASCADE;
DROP TABLE IF EXISTS Coin CASCADE;
DROP TABLE IF EXISTS CoinCombination CASCADE;
DROP TABLE IF EXISTS RecommendationStyle CASCADE;
DROP TYPE IF EXISTS VECTOR3 CASCADE;
DROP TYPE IF EXISTS CAMERA CASCADE;
DROP TYPE IF EXISTS PREVIOUSNEXT CASCADE;
-- Elementary types
CREATE TYPE PREVIOUSNEXT AS ENUM(
'p', 'n'
);
CREATE TYPE VECTOR3 AS(
x REAL,
y REAL,
z REAL
);
CREATE TYPE CAMERA AS(
position VECTOR3,
target VECTOR3
);
-- Base tables
CREATE TABLE Users(
id SERIAL PRIMARY KEY,
worker_id VARCHAR(50),
age VARCHAR(10),
rating INT,
lasttime INT,
male BOOLEAN,
valid BOOLEAN DEFAULT NULL
);
CREATE TABLE Scene(
id SERIAL PRIMARY KEY,
name CHAR(50),
coin_number INTEGER
);
CREATE TABLE RecommendationStyle(
id SERIAL PRIMARY KEY,
name CHAR(50)
);
CREATE TABLE CoinCombination(
id SERIAL PRIMARY KEY,
scene_id SERIAL REFERENCES Scene (id),
coin_1 INTEGER,
coin_2 INTEGER,
coin_3 INTEGER,
coin_4 INTEGER,
coin_5 INTEGER,
coin_6 INTEGER,
coin_7 INTEGER,
coin_8 INTEGER
);
CREATE TABLE Experiment(
id SERIAL PRIMARY KEY,
user_id SERIAL REFERENCES Users (id),
coin_combination_id SERIAL REFERENCES CoinCombination (id),
recommendation_style VARCHAR(30),
finished BOOLEAN DEFAULT(false)
);
-- Init scene table
INSERT INTO Scene(name, coin_number) VALUES ('peachcastle' , 41);
INSERT INTO Scene(name, coin_number) VALUES ('bobomb' , 44);
INSERT INTO Scene(name, coin_number) VALUES ('coolcoolmountain', 66);
INSERT INTO Scene(name, coin_number) VALUES ('whomp' , 50);
INSERT INTO RecommendationStyle(name) VALUES('L3D.BaseRecommendation');
INSERT INTO RecommendationStyle(name) VALUES('L3D.ArrowRecommendation');
INSERT INTO RecommendationStyle(name) VALUES('L3D.ViewportRecommendation');
-- Events
CREATE TABLE ArrowClicked(
id SERIAL PRIMARY KEY,
exp_id SERIAL REFERENCES Experiment (id),
time TIMESTAMP DEFAULT NOW(),
arrow_id INTEGER
);
CREATE TABLE CoinClicked(
id SERIAL PRIMARY KEY,
exp_id SERIAL REFERENCES Experiment (id),
time TIMESTAMP DEFAULT NOW(),
coin_id INTEGER
);
CREATE TABLE KeyboardEvent(
id SERIAL PRIMARY KEY,
exp_id SERIAL REFERENCES Experiment (id),
time TIMESTAMP DEFAULT NOW(),
keycode INTEGER,
keypressed BOOLEAN,
camera CAMERA
);
CREATE TABLE ResetClicked(
id SERIAL PRIMARY KEY,
exp_id SERIAL REFERENCES Experiment (id),
time TIMESTAMP DEFAULT NOW()
);
CREATE TABLE PreviousNextClicked(
id SERIAL PRIMARY KEY,
exp_id SERIAL REFERENCES Experiment (id),
previousnext PREVIOUSNEXT NOT NULL,
time TIMESTAMP DEFAULT NOW(),
camera CAMERA
);
CREATE TABLE Hovered(
id SERIAL PRIMARY KEY,
exp_id SERIAL REFERENCES Experiment (id),
start BOOLEAN NOT NULL,
time TIMESTAMP DEFAULT NOW(),
arrow_id INTEGER
);
CREATE TABLE FpsCounter(
id SERIAL PRIMARY KEY,
exp_id SERIAL REFERENCES Experiment (id),
time TIMESTAMP DEFAULT NOW(),
fps REAL
);
CREATE TABLE PointerLocked(
id SERIAL PRIMARY KEY,
exp_id SERIAL REFERENCES Experiment (id),
time TIMESTAMP DEFAULT NOW(),
locked BOOLEAN
);
CREATE TABLE SwitchedLockOption(
id SERIAL PRIMARY KEY,
exp_id SERIAL REFERENCES Experiment (id),
time TIMESTAMP DEFAULT NOW(),
locked BOOLEAN
);
E_O_SQL