All checks were successful
dev - build & deploy naar test / build-and-deploy (push) Successful in 9s
- Nieuwe tabel `assignments`: een leerkracht koppelt één van haar eigen borden aan een klas (standaard) of een individuele leerling (uitzondering, voor wie op een ander niveau werkt). - Geen momentopname: /my/assignment zoekt het bord live op bij de leerkracht, dus nieuwe woorden die zij toevoegt komen vanzelf door zodra de leerling-pagina opnieuw pollt (elke 20s). - Leerlingen loggen in op een vereenvoudigde pagina zonder whiteboard/ tekengereedschap: enkel de toegewezen taal-/rekenwidgets, als vaste (niet-sleepbare) kaarten in speelmodus. - Speelmodus verbergt bewerkfuncties in Ankerwoorden (plaatje kiezen, woord typen, kleur wijzigen) en Letterblokken (thema/woordbeheer) - overige widgets waren al zuiver speelgericht. - Elk bord krijgt een stabiel id (board.js) zodat een toewijzing een bord blijft vinden ook na hernoemen of herordenen. - Nieuw tabblad "Toewijzingen" in het beheerpaneel: per klas of leerling een eigen bord kiezen, met een expliciete toewijs-stap. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DuxHJtk5aHe2pA3xwCLEAk
16 lines
1 KiB
SQL
16 lines
1 KiB
SQL
-- Toewijzingen: een leerkracht koppelt één van haar eigen borden (via het
|
|
-- stabiele board-id uit users.data) aan een klas of een individuele leerling.
|
|
-- Puur additief, leeg bij aanmaak. Precies één van class_id/pupil_id gezet:
|
|
-- een klas-toewijzing (standaard voor iedereen in de klas) of een leerling-
|
|
-- toewijzing (uitzondering, voor een leerling op een ander niveau).
|
|
CREATE TABLE IF NOT EXISTS assignments (
|
|
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
class_id BIGINT REFERENCES classes(id) ON DELETE CASCADE,
|
|
pupil_id BIGINT REFERENCES users(id) ON DELETE CASCADE,
|
|
teacher_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
board_id TEXT NOT NULL,
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
CHECK (num_nonnulls(class_id, pupil_id) = 1)
|
|
);
|
|
CREATE UNIQUE INDEX IF NOT EXISTS idx_assignments_class ON assignments(class_id) WHERE class_id IS NOT NULL;
|
|
CREATE UNIQUE INDEX IF NOT EXISTS idx_assignments_pupil ON assignments(pupil_id) WHERE pupil_id IS NOT NULL;
|