144 lines
4.2 KiB
SQL
144 lines
4.2 KiB
SQL
-- +goose Up
|
|
-- SQL in section 'Up' is executed when this migration is applied.
|
|
CREATE TABLE users
|
|
(
|
|
ID INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
Username TEXT UNIQUE NOT NULL
|
|
);
|
|
|
|
CREATE TABLE userlogin_provider
|
|
(
|
|
ID INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
user_ID INTEGER NOT NULL,
|
|
login_stub TEXT UNIQUE NOT NULL,
|
|
FOREIGN KEY (user_ID) REFERENCES users (ID)
|
|
);
|
|
|
|
CREATE TABLE user_sessions
|
|
(
|
|
ID INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
user_ID INTEGER NOT NULL,
|
|
session_token TEXT UNIQUE NOT NULL,
|
|
created_at TEXT NOT NULL,
|
|
valid_until TEXT NOT NULL,
|
|
name TEXT,
|
|
FOREIGN KEY (user_ID) REFERENCES users (ID)
|
|
);
|
|
|
|
CREATE TABLE storagespace
|
|
(
|
|
ID INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
Parent INTEGER,
|
|
Location TEXT,
|
|
FOREIGN KEY (Parent) REFERENCES storagespace (ID)
|
|
);
|
|
|
|
CREATE TABLE objects
|
|
(
|
|
ID INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
storagespace_ID INTEGER NOT NULL,
|
|
Name TEXT NOT NULL,
|
|
Description TEXT,
|
|
Serialnumber TEXT UNIQUE,
|
|
created DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (storagespace_ID) REFERENCES storagespace (ID)
|
|
);
|
|
|
|
CREATE TABLE events
|
|
(
|
|
ID INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
user_ID INTEGER NOT NULL,
|
|
Name TEXT NOT NULL,
|
|
Description TEXT,
|
|
Location TEXT,
|
|
Start_Date TEXT NOT NULL,
|
|
End_Date TEXT NOT NULL,
|
|
FOREIGN KEY (user_ID) REFERENCES users (ID)
|
|
);
|
|
|
|
CREATE TABLE pictures
|
|
(
|
|
ID INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
user_ID INTEGER NOT NULL,
|
|
storagespace_ID INTEGER,
|
|
object_ID INTEGER,
|
|
event_ID INTEGER,
|
|
check_in_ID INTEGER,
|
|
Path TEXT NOT NULL,
|
|
Description TEXT,
|
|
datetime TEXT NOT NULL,
|
|
FOREIGN KEY (user_ID) REFERENCES users (ID),
|
|
FOREIGN KEY (storagespace_ID) REFERENCES storagespace (ID),
|
|
FOREIGN KEY (object_ID) REFERENCES objects (ID),
|
|
FOREIGN KEY (event_ID) REFERENCES events (ID),
|
|
FOREIGN KEY (check_in_ID) REFERENCES check_in (ID)
|
|
);
|
|
|
|
CREATE TABLE events_objects
|
|
(
|
|
ID INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
event_ID INTEGER NOT NULL,
|
|
object_ID INTEGER NOT NULL,
|
|
FOREIGN KEY (event_ID) REFERENCES events (ID),
|
|
FOREIGN KEY (object_ID) REFERENCES objects (ID)
|
|
);
|
|
|
|
CREATE TABLE checkin_events
|
|
(
|
|
ID INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
Name TEXT NOT NULL
|
|
);
|
|
|
|
CREATE TABLE checkin_states
|
|
(
|
|
ID INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
Name TEXT NOT NULL
|
|
);
|
|
|
|
CREATE TABLE check_in
|
|
(
|
|
ID INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
user_ID INTEGER NOT NULL,
|
|
checkin_event_ID INTEGER NOT NULL,
|
|
event_ID INTEGER,
|
|
object_ID INTEGER,
|
|
checkin_state_ID INTEGER NOT NULL,
|
|
datetime TEXT NOT NULL,
|
|
FOREIGN KEY (user_ID) REFERENCES users (ID),
|
|
FOREIGN KEY (checkin_event_ID) REFERENCES checkin_events (ID),
|
|
FOREIGN KEY (event_ID) REFERENCES events (ID),
|
|
FOREIGN KEY (object_ID) REFERENCES objects (ID),
|
|
FOREIGN KEY (checkin_state_ID) REFERENCES checkin_states (ID)
|
|
);
|
|
|
|
CREATE TABLE annotations
|
|
(
|
|
ID INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
user_ID INTEGER NOT NULL,
|
|
object_ID INTEGER,
|
|
event_ID INTEGER,
|
|
check_in_ID INTEGER,
|
|
events_object_ID INTEGER,
|
|
text TEXT NOT NULL,
|
|
datetime TEXT NOT NULL,
|
|
FOREIGN KEY (user_ID) REFERENCES users (ID),
|
|
FOREIGN KEY (object_ID) REFERENCES objects (ID),
|
|
FOREIGN KEY (event_ID) REFERENCES events (ID),
|
|
FOREIGN KEY (check_in_ID) REFERENCES check_in (ID),
|
|
FOREIGN KEY (events_object_ID) REFERENCES events_objects (ID)
|
|
);
|
|
|
|
-- +goose Down
|
|
-- SQL in section 'Down' is executed when this migration is rolled back.
|
|
DROP TABLE IF EXISTS annotations;
|
|
DROP TABLE IF EXISTS check_in;
|
|
DROP TABLE IF EXISTS checkin_states;
|
|
DROP TABLE IF EXISTS checkin_events;
|
|
DROP TABLE IF EXISTS events_objects;
|
|
DROP TABLE IF EXISTS pictures;
|
|
DROP TABLE IF EXISTS events;
|
|
DROP TABLE IF EXISTS objects;
|
|
DROP TABLE IF EXISTS storagespace;
|
|
DROP TABLE IF EXISTS user_sessions;
|
|
DROP TABLE IF EXISTS userlogin_provider;
|
|
DROP TABLE IF EXISTS users;
|