diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2018-04-08 03:58:11 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2018-04-08 03:58:11 +0900 |
| commit | a02ee3a08bac55c9f0b29cb6bc0a15726b7cc3c8 (patch) | |
| tree | bf3c3dacd69737bf79eea0311fed1ddc504b15a5 /tools/migration | |
| parent | Post --> Note (diff) | |
| download | sharkey-a02ee3a08bac55c9f0b29cb6bc0a15726b7cc3c8.tar.gz sharkey-a02ee3a08bac55c9f0b29cb6bc0a15726b7cc3c8.tar.bz2 sharkey-a02ee3a08bac55c9f0b29cb6bc0a15726b7cc3c8.zip | |
Some bug fixes
Diffstat (limited to 'tools/migration')
| -rw-r--r-- | tools/migration/nighthike/12.js | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/tools/migration/nighthike/12.js b/tools/migration/nighthike/12.js new file mode 100644 index 0000000000..f4b61e2ee8 --- /dev/null +++ b/tools/migration/nighthike/12.js @@ -0,0 +1,58 @@ +// for Node.js interpret + +const { default: User } = require('../../../built/models/user'); +const { generate } = require('../../../built/crypto_key'); +const { default: zip } = require('@prezzemolo/zip') + +const migrate = async (user) => { + const result = await User.update(user._id, { + $unset: { + account: '' + }, + $set: { + host: null, + hostLower: null, + email: user.account.email, + links: user.account.links, + password: user.account.password, + token: user.account.token, + twitter: user.account.twitter, + line: user.account.line, + profile: user.account.profile, + lastUsedAt: user.account.lastUsedAt, + isBot: user.account.isBot, + isPro: user.account.isPro, + twoFactorSecret: user.account.twoFactorSecret, + twoFactorEnabled: user.account.twoFactorEnabled, + clientSettings: user.account.clientSettings, + settings: user.account.settings, + keypair: user.account.keypair + } + }); + 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) |