init
This commit is contained in:
commit
4f6d7cfe60
16 changed files with 1341 additions and 0 deletions
29
db/schema.sql
Normal file
29
db/schema.sql
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
CREATE TABLE IF NOT EXISTS users (
|
||||
sub TEXT PRIMARY KEY,
|
||||
email TEXT NOT NULL DEFAULT '',
|
||||
name TEXT NOT NULL DEFAULT '',
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS skills (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
owner_sub TEXT NOT NULL REFERENCES users(sub) ON DELETE CASCADE,
|
||||
title TEXT NOT NULL,
|
||||
description TEXT NOT NULL,
|
||||
price_cents INTEGER NOT NULL CHECK (price_cents >= 0),
|
||||
file_path TEXT NOT NULL,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS purchases (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
buyer_sub TEXT NOT NULL REFERENCES users(sub) ON DELETE CASCADE,
|
||||
skill_id BIGINT NOT NULL REFERENCES skills(id) ON DELETE CASCADE,
|
||||
purchased_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
UNIQUE (buyer_sub, skill_id)
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_skills_owner_sub ON skills(owner_sub);
|
||||
CREATE INDEX IF NOT EXISTS idx_purchases_buyer_sub ON purchases(buyer_sub);
|
||||
CREATE INDEX IF NOT EXISTS idx_purchases_skill_id ON purchases(skill_id);
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue