All checks were successful
dev - build & deploy naar test / build-and-deploy (push) Successful in 47s
25 lines
1.2 KiB
SQL
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);
|