54 lines
1.6 KiB
SQL
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;
|