51 lines
2.1 KiB
JavaScript
51 lines
2.1 KiB
JavaScript
'use strict';
|
|
|
|
const OLD_QUESTION = 'Erzähle einen Tagesplan mit drei Schritten und einem Wunsch.';
|
|
const REPAIRED_QUESTION = 'Schreibe vier kurze Sätze auf Bisaya. Verwende dabei alle diese Bausteine: Una, Pagkahuman, Unya und Gusto ko nga.';
|
|
const KEYWORDS = ['una', 'pagkahuman', 'unya', 'gusto ko nga'];
|
|
const MODEL_ANSWER = 'Una, moadto ko sa merkado. Pagkahuman, kuhaon nako ang bata. Unya, mouli mi sa balay. Gusto ko nga magkita ta ugma.';
|
|
|
|
module.exports = {
|
|
async up(queryInterface) {
|
|
await queryInterface.sequelize.transaction(async (transaction) => {
|
|
// This was an open-ended production prompt, but the checker required four
|
|
// hidden words. Make both the expected language and the four criteria
|
|
// explicit, while still accepting every answer that fulfils them.
|
|
await queryInterface.sequelize.query(`
|
|
UPDATE community.vocab_grammar_exercise AS exercise
|
|
SET question_data = JSONB_SET(
|
|
JSONB_SET(
|
|
JSONB_SET(exercise.question_data, '{question}', TO_JSONB(CAST(:repairedQuestion AS text))),
|
|
'{keywords}', CAST(:keywords AS jsonb)
|
|
),
|
|
'{minKeywordMatches}', '4'::jsonb
|
|
),
|
|
answer_data = JSONB_SET(
|
|
JSONB_SET(
|
|
JSONB_SET(COALESCE(exercise.answer_data, '{}'::jsonb), '{modelAnswer}', TO_JSONB(CAST(:modelAnswer AS text))),
|
|
'{keywords}', CAST(:keywords AS jsonb)
|
|
),
|
|
'{minKeywordMatches}', '4'::jsonb
|
|
)
|
|
FROM community.vocab_course_lesson AS lesson
|
|
WHERE exercise.lesson_id = lesson.id
|
|
AND (lesson.id = 39 OR (lesson.course_id = 1 AND lesson.lesson_number = 39))
|
|
AND exercise.question_data->>'type' = 'situational_response'
|
|
AND exercise.question_data->>'question' = :oldQuestion;
|
|
`, {
|
|
replacements: {
|
|
oldQuestion: OLD_QUESTION,
|
|
repairedQuestion: REPAIRED_QUESTION,
|
|
keywords: JSON.stringify(KEYWORDS),
|
|
modelAnswer: MODEL_ANSWER
|
|
},
|
|
transaction
|
|
});
|
|
});
|
|
},
|
|
|
|
async down() {
|
|
// Keep the unambiguous exercise wording once deployed.
|
|
}
|
|
};
|