teach/db/023_live_classroom_interaction.sql
Ramon 131ffc2f38
All checks were successful
dev - build & deploy naar test / build-and-deploy (push) Successful in 47s
feat: breid live klasinteractie grafisch uit
2026-07-24 13:40:18 +02:00

25 lines
1.2 KiB
SQL

-- Bidirectionele live klasinteractie. Sessies onthouden het laatste echte
-- voortgangsmoment en een eventuele pauze. Leerkrachtacties worden duurzaam
-- opgeslagen, zodat een korte netwerkonderbreking geen hint of aanmoediging
-- laat verdwijnen.
ALTER TABLE live_learning_sessions
ADD COLUMN IF NOT EXISTS last_progress_at TIMESTAMPTZ,
ADD COLUMN IF NOT EXISTS paused_at TIMESTAMPTZ;
CREATE TABLE IF NOT EXISTS teacher_pupil_actions (
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
class_id BIGINT NOT NULL REFERENCES classes(id) ON DELETE CASCADE,
pupil_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
teacher_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
kind TEXT NOT NULL CHECK (kind IN ('hint', 'encourage', 'pause', 'resume', 'easier')),
message TEXT,
payload JSONB NOT NULL DEFAULT '{}'::jsonb,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
acknowledged_at TIMESTAMPTZ,
CHECK (message IS NULL OR char_length(message) <= 160)
);
CREATE INDEX IF NOT EXISTS idx_teacher_pupil_actions_pending
ON teacher_pupil_actions (pupil_id, acknowledged_at, created_at DESC);
CREATE INDEX IF NOT EXISTS idx_teacher_pupil_actions_class
ON teacher_pupil_actions (class_id, created_at DESC);