52 lines
1.3 KiB
MySQL
Raw Normal View History

CREATE TABLE hotel
(
id SERIAL PRIMARY KEY,
name VARCHAR(255) NOT NULL,
address VARCHAR(255) NOT NULL
);
CREATE TABLE room
(
id INTEGER PRIMARY KEY,
hotel_id INTEGER NOT NULL,
beds INTEGER NOT NULL CHECK (beds > 0),
size INTEGER NOT NULL CHECK (size > 0),
FOREIGN KEY (hotel_id) REFERENCES hotel (id)
);
CREATE TABLE "user"
(
email VARCHAR(255) PRIMARY KEY,
hash VARCHAR(255) NOT NULL,
salt VARCHAR(255) NOT NULL,
role SMALLINT NOT NULL CHECK ( role IN (0, 3) )
);
CREATE TABLE reservation
(
id SERIAL PRIMARY KEY,
room_id INTEGER NOT NULL,
start TIMESTAMP NOT NULL,
"end" TIMESTAMP NOT NULL,
"user" VARCHAR(255) NOT NULL,
checked_in BOOLEAN NOT NULL DEFAULT FALSE,
FOREIGN KEY (room_id) REFERENCES room (id),
FOREIGN KEY ("user") REFERENCES "user" (email)
);
CREATE TABLE task
(
id SERIAL PRIMARY KEY,
room_id INTEGER NOT NULL,
description TEXT NOT NULL,
status VARCHAR(12) NOT NULL CHECK ( status IN ('todo', 'in_progress', 'done') ),
FOREIGN KEY (room_id) REFERENCES room (id)
);
CREATE TABLE session
(
id VARCHAR(128) PRIMARY KEY,
data JSONB NOT NULL,
expiry_date TIMESTAMP NOT NULL
)