-- 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);