105 lines
2.4 KiB
PL/PgSQL
105 lines
2.4 KiB
PL/PgSQL
-- 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 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,
|
|
name CHAR(50)
|
|
);
|
|
|
|
CREATE TABLE scene(
|
|
id SERIAL PRIMARY KEY,
|
|
name CHAR(50)
|
|
);
|
|
|
|
CREATE TABLE experiment(
|
|
id SERIAL PRIMARY KEY,
|
|
user_id SERIAL REFERENCES users (id),
|
|
scene_id SERIAL REFERENCES scene (id)
|
|
);
|
|
|
|
-- Init scene table
|
|
INSERT INTO scene(name) VALUES ('peachcastle');
|
|
INSERT INTO scene(name) VALUES ('bobomb');
|
|
INSERT INTO scene(name) VALUES ('coolcoolmountain');
|
|
INSERT INTO scene(name) VALUES ('whomp');
|
|
|
|
-- 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(),
|
|
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),
|
|
fps REAL
|
|
);
|