pedal/db/init.sql
2026-01-03 15:11:11 -05:00

42 lines
1.3 KiB
SQL

CREATE TABLE IF NOT EXISTS users (
id SERIAL PRIMARY KEY,
username TEXT UNIQUE NOT NULL,
password_hash TEXT NOT NULL,
is_admin BOOLEAN NOT NULL DEFAULT FALSE,
is_approved BOOLEAN NOT NULL DEFAULT FALSE,
created_at TIMESTAMP NOT NULL DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS pads (
id SERIAL PRIMARY KEY,
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
name TEXT NOT NULL,
brand TEXT,
description TEXT,
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
UNIQUE (user_id, name)
);
CREATE TABLE IF NOT EXISTS reviews (
id SERIAL PRIMARY KEY,
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
pad_id INTEGER NOT NULL REFERENCES pads(id) ON DELETE CASCADE,
overall INTEGER CHECK (overall BETWEEN 1 AND 5),
fit INTEGER NOT NULL CHECK (fit BETWEEN 1 AND 5),
comfort INTEGER NOT NULL CHECK (comfort BETWEEN 1 AND 5),
absorbency INTEGER NOT NULL CHECK (absorbency BETWEEN 1 AND 5),
notes TEXT,
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
updated_at TIMESTAMP NOT NULL DEFAULT NOW(),
UNIQUE (user_id, pad_id)
);
CREATE TABLE IF NOT EXISTS photos (
id SERIAL PRIMARY KEY,
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
pad_id INTEGER NOT NULL REFERENCES pads(id) ON DELETE CASCADE,
filename TEXT UNIQUE NOT NULL,
original_name TEXT,
created_at TIMESTAMP NOT NULL DEFAULT NOW()
);