From a3dc7db518c7515500182d063f9e7c0f2e5fa6b0 Mon Sep 17 00:00:00 2001 From: syuilo Date: Tue, 13 Mar 2018 01:56:56 +0900 Subject: [PATCH] Add migration script --- tools/migration/node.2018-03-13.othello.js | 44 ++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 tools/migration/node.2018-03-13.othello.js diff --git a/tools/migration/node.2018-03-13.othello.js b/tools/migration/node.2018-03-13.othello.js new file mode 100644 index 000000000..12d9e0953 --- /dev/null +++ b/tools/migration/node.2018-03-13.othello.js @@ -0,0 +1,44 @@ +// for Node.js interpret + +const { default: Othello } = require('../../built/api/models/othello-game') +const { default: zip } = require('@prezzemolo/zip') + +const migrate = async (doc) => { + const x = {}; + + doc.logs.forEach(log => { + log.color = log.color == 'black'; + }); + + const result = await Othello.update(doc._id, { + $set: doc.logs + }); + + return result.ok === 1; +} + +async function main() { + + const count = await Othello.count({}); + + const dop = Number.parseInt(process.argv[2]) || 5 + const idop = ((count - (count % dop)) / dop) + 1 + + return zip( + 1, + async (time) => { + console.log(`${time} / ${idop}`) + const doc = await Othello.find({}, { + limit: dop, skip: time * dop + }) + return Promise.all(doc.map(migrate)) + }, + idop + ).then(a => { + const rv = [] + a.forEach(e => rv.push(...e)) + return rv + }) +} + +main().then(console.dir).catch(console.error)