From 38494d6d3c5e24dcdcfde2f97a9425d518f29f31 Mon Sep 17 00:00:00 2001 From: Tom Moor Date: Sat, 24 Mar 2018 15:03:44 -0700 Subject: [PATCH] Added migration for existing docs --- .../20180324214403-serializer-upgrade.js | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 server/migrations/20180324214403-serializer-upgrade.js diff --git a/server/migrations/20180324214403-serializer-upgrade.js b/server/migrations/20180324214403-serializer-upgrade.js new file mode 100644 index 000000000..a7f1cda40 --- /dev/null +++ b/server/migrations/20180324214403-serializer-upgrade.js @@ -0,0 +1,26 @@ +module.exports = { + up: async (queryInterface, Sequelize) => { + // upgrade to slate-md-serializer 3.0 means that newlines saved in Markdown are now + // accurately reflected in the editor. To prevent a change in appearance in current docs + // we need to collapse existing multiple newlines in the db. + const [documents, metaData] = await queryInterface.sequelize.query(`SELECT * FROM documents`); + for (const document of documents) { + const id = document.id; + const fixedText = document.text.replace(/\n{2,}/gi, "\n\n"); + if (fixedText === document.text) continue; + + // raw query to avoid hooks + await queryInterface.sequelize.query(` + update documents + set "text" = :fixedText + where id = :id + `, { replacements: { fixedText, id } }) + } + }, + + down: async (queryInterface, Sequelize) => { + // cannot be reversed + } +}; + +