summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/migration/node.1522066477.user-account-keypair.js43
1 files changed, 34 insertions, 9 deletions
diff --git a/tools/migration/node.1522066477.user-account-keypair.js b/tools/migration/node.1522066477.user-account-keypair.js
index effea137c6..c413e3db1e 100644
--- a/tools/migration/node.1522066477.user-account-keypair.js
+++ b/tools/migration/node.1522066477.user-account-keypair.js
@@ -1,14 +1,39 @@
+// for Node.js interpret
+
const { default: User } = require('../../built/api/models/user');
const { generate } = require('../../built/crypto_key');
+const { default: zip } = require('@prezzemolo/zip')
-const updates = [];
-
-User.find({}).each(function(user) {
- updates.push(User.update({ _id: user._id }, {
+const migrate = async (user) => {
+ const result = await User.update(user._id, {
$set: {
- 'account.keypair': generate(),
+ 'account.keypair': generate()
}
- }));
-}).then(function () {
- Promise.all(updates)
-}).then(process.exit);
+ });
+ return result.ok === 1;
+}
+
+async function main() {
+ const count = await User.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 User.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)