Skip to content

Commit

Permalink
migrate collective's expense & contribution policy to html
Browse files Browse the repository at this point in the history
  • Loading branch information
snitin315 committed Nov 25, 2020
1 parent 184503c commit dbb4e37
Showing 1 changed file with 73 additions and 0 deletions.
73 changes: 73 additions & 0 deletions migrations/20201125113750-migrate-collective-policies-to-html.js
@@ -0,0 +1,73 @@
'use strict';

import showdown from 'showdown';
import { buildSanitizerOptions, sanitizeHTML } from '../server/lib/sanitize-html';

const converter = new showdown.Converter();

module.exports = {
up: async (queryInterface, Sequelize) => {
const collectivesWithExpensePolicy = await queryInterface.sequelize.query(
`
SELECT "id", "expensePolicy" FROM "Collectives"
WHERE LENGTH("expensePolicy") > 0 AND "expensePolicy" NOT LIKE '<%'
AND "deletedAt" IS NULL;
`,
{ type: Sequelize.QueryTypes.SELECT },
);

const collectivesWithContribPolicy = await queryInterface.sequelize.query(
`
SELECT "id", "contributionPolicy" FROM "Collectives"
WHERE LENGTH("contributionPolicy") > 0 AND "contributionPolicy" NOT LIKE '<%'
AND "deletedAt" IS NULL;
`,
{ type: Sequelize.QueryTypes.SELECT },
);

const sanitizeOptions = buildSanitizerOptions({
basicTextFormatting: true,
links: true,
});

for (const collective of collectivesWithExpensePolicy) {
const htmlContent = converter.makeHtml(collective.expensePolicy);
const sanitizedContent = sanitizeHTML(htmlContent, sanitizeOptions);
await queryInterface.sequelize.query(
`
UPDATE "Collectives" c
SET "expensePolicy" = :expensePolicy
WHERE c.id = :id
`,
{
replacements: {
expensePolicy: sanitizedContent,
id: collective.id,
},
},
);
}

for (const collective of collectivesWithContribPolicy) {
const htmlContent = converter.makeHtml(collective.contributionPolicy);
const sanitizedContent = sanitizeHTML(htmlContent, sanitizeOptions);
await queryInterface.sequelize.query(
`
UPDATE "Collectives" c
SET "contributionPolicy" = :contributionPolicy
WHERE c.id = :id
`,
{
replacements: {
contributionPolicy: sanitizedContent,
id: collective.id,
},
},
);
}
},

down: async () => {
// can't rollback this one
},
};

0 comments on commit dbb4e37

Please sign in to comment.