Martin Berg Alstad 5d5e6393ac First working API.
Simple auth by creating sessions and storing in db
2024-08-29 16:43:04 +02:00

52 lines
1.3 KiB
SQL

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
)