teach/db/001_init.sql
bes-r 516a048ce7
Some checks are pending
dev - build & deploy naar test / build-and-deploy (push) Waiting to run
Initiële opzet: Fastify + static, Docker, Postgres, Forgejo Actions
2026-07-07 22:41:05 +02:00

34 lines
1.4 KiB
SQL

-- Initieel schema voor teach.
-- Dit bestand wordt bij een verse Postgres-container automatisch uitgevoerd
-- (docker-entrypoint-initdb.d). Bij bestaande databases draai je migraties apart.
--
-- Onderstaande tabellen zijn een startpunt: ze weerspiegelen wat nu in
-- localStorage zit (gebruikers en borden). Pas ze aan zodra de API-vorm vaststaat.
CREATE TABLE IF NOT EXISTS users (
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
username TEXT NOT NULL UNIQUE,
role TEXT NOT NULL DEFAULT 'teacher',
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
CREATE TABLE IF NOT EXISTS folders (
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
owner_id BIGINT REFERENCES users(id) ON DELETE CASCADE,
name TEXT NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
CREATE TABLE IF NOT EXISTS boards (
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
folder_id BIGINT REFERENCES folders(id) ON DELETE SET NULL,
owner_id BIGINT REFERENCES users(id) ON DELETE CASCADE,
name TEXT NOT NULL,
-- De volledige bordinhoud (tekeningen, widgets, blokken) als JSON.
content JSONB NOT NULL DEFAULT '{}'::jsonb,
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
CREATE INDEX IF NOT EXISTS idx_boards_owner ON boards(owner_id);
CREATE INDEX IF NOT EXISTS idx_boards_folder ON boards(folder_id);