Skip to content

Commit

Permalink
add transactions on L&E webhook
Browse files Browse the repository at this point in the history
  • Loading branch information
Joao Pedro da Silva committed Jan 5, 2023
1 parent 587a710 commit 510fe41
Showing 1 changed file with 100 additions and 56 deletions.
156 changes: 100 additions & 56 deletions packages/core/src/services/learnAndEarn/syncRemote.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { PrismicDocument } from '@prismicio/types';
import { Op } from 'sequelize';

import { models } from '../../database';
import { models, sequelize } from '../../database';
import { BaseError } from '../../utils/baseError';
import { client as prismic } from '../../utils/prismic';

Expand All @@ -11,46 +11,57 @@ import { client as prismic } from '../../utils/prismic';
// }

async function getPrismicLearnAndEarn() {
try {
const categoryIds: number[] = [],
levelIds: number[] = [],
lessonIds: number[] = [],
quizIds: number[] = [];
const categoryIds: number[] = [],
levelIds: number[] = [],
lessonIds: number[] = [],
quizIds: number[] = [];

const response = await prismic.getAllByType('pwa-lae-category', {
lang: 'en-us',
fetchLinks: [
'pwa-lae-level.reward',
'pwa-lae-level.lessons',
'pwa-lae-lesson.questions',
],
});
for (
let categoryIndex = 0;
categoryIndex < response.length;
categoryIndex++
) {
const t = await sequelize.transaction();

const response = await prismic.getAllByType('pwa-lae-category', {
lang: 'en-us',
fetchLinks: [
'pwa-lae-level.reward',
'pwa-lae-level.lessons',
'pwa-lae-lesson.questions',
],
});
for (
let categoryIndex = 0;
categoryIndex < response.length;
categoryIndex++
) {
try {
const prismicCategory = response[categoryIndex];
// INSERT CATEGORY
const [category] = await models.learnAndEarnCategory.findOrCreate({
where: {
prismicId: prismicCategory.id,
active: true,
},
transaction: t,
});

categoryIds.push(category.id);
await category.update({
languages: prismicCategory.alternate_languages
.map(({ lang }) => {
const index_ = lang.indexOf('-');
return lang.substring(
0,
index_ !== -1 ? index_ : lang.length
);
})
.concat(['en']),
});
await models.learnAndEarnCategory.update(
{
languages: prismicCategory.alternate_languages
.map(({ lang }) => {
const index_ = lang.indexOf('-');
return lang.substring(
0,
index_ !== -1 ? index_ : lang.length
);
})
.concat(['en']),
},
{
transaction: t,
where: {
id: category.id,
},
}
);

for (
let levelIndex = 0;
Expand All @@ -74,23 +85,32 @@ async function getPrismicLearnAndEarn() {
active: true,
categoryId: category.id,
},
transaction: t,
}
);
levelIds.push(level.id);
const findLevelLanguages = await prismic.getByID(
prismicLevel.id
);
await level.update({
languages: findLevelLanguages.alternate_languages
.map(({ lang }) => {
const index_ = lang.indexOf('-');
return lang.substring(
0,
index_ !== -1 ? index_ : lang.length
);
})
.concat(['en']),
});
await models.learnAndEarnLevel.update(
{
languages: findLevelLanguages.alternate_languages
.map(({ lang }) => {
const index_ = lang.indexOf('-');
return lang.substring(
0,
index_ !== -1 ? index_ : lang.length
);
})
.concat(['en']),
},
{
transaction: t,
where: {
id: level.id,
},
}
);

for (
let lessonIndex = 0;
Expand All @@ -114,25 +134,35 @@ async function getPrismicLearnAndEarn() {
active: true,
levelId: level.id,
},
transaction: t,
});
lessonIds.push(lesson.id);
const findLessonLanguages = await prismic.getByID(
prismicLesson.id
);
await lesson.update({
languages:
findLessonLanguages.alternate_languages
.map(({ lang }) => {
const index_ = lang.indexOf('-');
return lang.substring(
0,
index_ !== -1
? index_
: lang.length
);
})
.concat(['en']),
});
await models.learnAndEarnLesson.update(
{
languages:
findLessonLanguages.alternate_languages
.map(({ lang }) => {
const index_ =
lang.indexOf('-');
return lang.substring(
0,
index_ !== -1
? index_
: lang.length
);
})
.concat(['en']),
},
{
transaction: t,
where: {
id: lesson.id,
},
}
);

for (
let quizIndex = 0;
Expand All @@ -155,16 +185,24 @@ async function getPrismicLearnAndEarn() {
lessonId: lesson.id,
answer,
},
transaction: t,
});
quizIds.push(quiz.id);
}
}
}
}
}
await t.commit();
} catch (error) {
await t.rollback();
console.log('e', error);
}
}

// INACTIVATE REGISTRIES
// INACTIVATE REGISTRIES
const t = await sequelize.transaction();
try {
await Promise.all([
models.learnAndEarnCategory.update(
{
Expand All @@ -176,6 +214,7 @@ async function getPrismicLearnAndEarn() {
[Op.notIn]: categoryIds,
},
},
transaction: t,
}
),
models.learnAndEarnLevel.update(
Expand All @@ -188,6 +227,7 @@ async function getPrismicLearnAndEarn() {
[Op.notIn]: levelIds,
},
},
transaction: t,
}
),
models.learnAndEarnLesson.update(
Expand All @@ -200,6 +240,7 @@ async function getPrismicLearnAndEarn() {
[Op.notIn]: lessonIds,
},
},
transaction: t,
}
),
models.learnAndEarnQuiz.update(
Expand All @@ -212,10 +253,13 @@ async function getPrismicLearnAndEarn() {
[Op.notIn]: quizIds,
},
},
transaction: t,
}
),
]);
await t.commit();
} catch (error) {
await t.rollback();
console.log('e', error);
}
}
Expand Down

0 comments on commit 510fe41

Please sign in to comment.