Files
BoostAI/Backend/db/migrations/006_assignment_level_feedback.sql
2026-05-25 17:05:06 +01:00

54 lines
1.6 KiB
SQL

-- +goose Up
ALTER TABLE assignment_assignees
ADD COLUMN ai_feedback TEXT,
ADD COLUMN teacher_feedback TEXT;
UPDATE assignment_assignees aa
SET ai_feedback = aggregated.ai_feedback
FROM (
SELECT
sa.assignment_id,
sa.student_id,
string_agg(
format('Question %s: %s', aq.position, btrim(sa.ai_feedback)),
E'\n\n'
ORDER BY aq.position ASC
) AS ai_feedback
FROM student_answers sa
JOIN assignment_questions aq
ON aq.assignment_id = sa.assignment_id
AND aq.question_id = sa.question_id
WHERE NULLIF(btrim(sa.ai_feedback), '') IS NOT NULL
GROUP BY sa.assignment_id, sa.student_id
) AS aggregated
WHERE aa.assignment_id = aggregated.assignment_id
AND aa.student_id = aggregated.student_id;
UPDATE assignment_assignees aa
SET teacher_feedback = aggregated.teacher_feedback
FROM (
SELECT
sa.assignment_id,
sa.student_id,
string_agg(
format('Question %s: %s', aq.position, btrim(sa.teacher_feedback)),
E'\n\n'
ORDER BY aq.position ASC
) AS teacher_feedback
FROM student_answers sa
JOIN assignment_questions aq
ON aq.assignment_id = sa.assignment_id
AND aq.question_id = sa.question_id
WHERE NULLIF(btrim(sa.teacher_feedback), '') IS NOT NULL
GROUP BY sa.assignment_id, sa.student_id
) AS aggregated
WHERE aa.assignment_id = aggregated.assignment_id
AND aa.student_id = aggregated.student_id;
-- +goose Down
ALTER TABLE assignment_assignees
DROP COLUMN IF EXISTS teacher_feedback,
DROP COLUMN IF EXISTS ai_feedback;