From 64f69979100e1bb856bd8cd44f5df20d54c124f8 Mon Sep 17 00:00:00 2001 From: syuilo Date: Wed, 28 Mar 2018 18:43:49 +0900 Subject: 良い感じに MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tools/migration/nighthike/1.js | 39 ++++ tools/migration/nighthike/2.js | 39 ++++ tools/migration/nighthike/3.js | 73 +++++++ tools/migration/nighthike/4.js | 232 +++++++++++++++++++++ .../node.1522066477.user-account-keypair.js | 39 ---- tools/migration/node.2018-03-28.appname.js | 40 ---- tools/migration/node.2018-03-28.username.js | 40 ---- tools/migration/shell.1522038492.user-account.js | 41 ---- tools/migration/shell.1522116709.user-host.js | 1 - .../migration/shell.1522116710.user-host_lower.js | 1 - tools/migration/shell.camel-case.js | 232 --------------------- 11 files changed, 383 insertions(+), 394 deletions(-) create mode 100644 tools/migration/nighthike/1.js create mode 100644 tools/migration/nighthike/2.js create mode 100644 tools/migration/nighthike/3.js create mode 100644 tools/migration/nighthike/4.js delete mode 100644 tools/migration/node.1522066477.user-account-keypair.js delete mode 100644 tools/migration/node.2018-03-28.appname.js delete mode 100644 tools/migration/node.2018-03-28.username.js delete mode 100644 tools/migration/shell.1522038492.user-account.js delete mode 100644 tools/migration/shell.1522116709.user-host.js delete mode 100644 tools/migration/shell.1522116710.user-host_lower.js delete mode 100644 tools/migration/shell.camel-case.js (limited to 'tools') diff --git a/tools/migration/nighthike/1.js b/tools/migration/nighthike/1.js new file mode 100644 index 0000000000..d7e011c5bd --- /dev/null +++ b/tools/migration/nighthike/1.js @@ -0,0 +1,39 @@ +// for Node.js interpret + +const { default: User } = require('../../../built/api/models/user'); +const { default: zip } = require('@prezzemolo/zip') + +const migrate = async (user) => { + const result = await User.update(user._id, { + $set: { + 'username': user.username.replace(/\-/g, '_'), + 'username_lower': user.username_lower.replace(/\-/g, '_') + } + }); + 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) diff --git a/tools/migration/nighthike/2.js b/tools/migration/nighthike/2.js new file mode 100644 index 0000000000..8fb5bbb08d --- /dev/null +++ b/tools/migration/nighthike/2.js @@ -0,0 +1,39 @@ +// for Node.js interpret + +const { default: App } = require('../../../built/api/models/app'); +const { default: zip } = require('@prezzemolo/zip') + +const migrate = async (app) => { + const result = await User.update(app._id, { + $set: { + 'name_id': app.name_id.replace(/\-/g, '_'), + 'name_id_lower': app.name_id_lower.replace(/\-/g, '_') + } + }); + return result.ok === 1; +} + +async function main() { + const count = await App.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 App.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) diff --git a/tools/migration/nighthike/3.js b/tools/migration/nighthike/3.js new file mode 100644 index 0000000000..cc0603d9e4 --- /dev/null +++ b/tools/migration/nighthike/3.js @@ -0,0 +1,73 @@ +// 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 migrate = async (user) => { + const result = await User.update(user._id, { + $unset: { + email: '', + links: '', + password: '', + token: '', + twitter: '', + line: '', + profile: '', + last_used_at: '', + is_bot: '', + is_pro: '', + two_factor_secret: '', + two_factor_enabled: '', + client_settings: '', + settings: '' + }, + $set: { + host: null, + host_lower: null, + account: { + email: user.email, + links: user.links, + password: user.password, + token: user.token, + twitter: user.twitter, + line: user.line, + profile: user.profile, + last_used_at: user.last_used_at, + is_bot: user.is_bot, + is_pro: user.is_pro, + two_factor_secret: user.two_factor_secret, + two_factor_enabled: user.two_factor_enabled, + client_settings: user.client_settings, + settings: user.settings, + keypair: generate() + } + } + }); + 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) diff --git a/tools/migration/nighthike/4.js b/tools/migration/nighthike/4.js new file mode 100644 index 0000000000..8d07140ba5 --- /dev/null +++ b/tools/migration/nighthike/4.js @@ -0,0 +1,232 @@ +// このスクリプトを走らせる前か後に notifications コレクションはdropしてください + +db.access_tokens.renameCollection('accessTokens'); +db.accessTokens.update({}, { + $rename: { + created_at: 'createdAt', + app_id: 'appId', + user_id: 'userId', + } +}, false, true); + +db.apps.update({}, { + $rename: { + created_at: 'createdAt', + user_id: 'userId', + name_id: 'nameId', + name_id_lower: 'nameIdLower', + callback_url: 'callbackUrl', + } +}, false, true); + +db.auth_sessions.renameCollection('authSessions'); +db.authSessions.update({}, { + $rename: { + created_at: 'createdAt', + app_id: 'appId', + user_id: 'userId', + } +}, false, true); + +db.channel_watching.renameCollection('channelWatching'); +db.channelWatching.update({}, { + $rename: { + created_at: 'createdAt', + deleted_at: 'deletedAt', + channel_id: 'channelId', + user_id: 'userId', + } +}, false, true); + +db.channels.update({}, { + $rename: { + created_at: 'createdAt', + user_id: 'userId', + watching_count: 'watchingCount' + } +}, false, true); + +db.drive_files.files.renameCollection('driveFiles.files'); +db.drive_files.chunks.renameCollection('driveFiles.chunks'); +db.driveFiles.files.update({}, { + $rename: { + 'metadata.user_id': 'metadata.userId', + 'metadata.folder_id': 'metadata.folderId', + 'metadata.properties.average_color': 'metadata.properties.avgColor' + } +}, false, true); + +db.drive_folders.renameCollection('driveFolders'); +db.driveFolders.update({}, { + $rename: { + created_at: 'createdAt', + user_id: 'userId', + parent_id: 'parentId', + } +}, false, true); + +db.favorites.update({}, { + $rename: { + created_at: 'createdAt', + user_id: 'userId', + post_id: 'postId', + } +}, false, true); + +db.following.update({}, { + $rename: { + created_at: 'createdAt', + deleted_at: 'deletedAt', + followee_id: 'followeeId', + follower_id: 'followerId', + } +}, false, true); + +db.messaging_histories.renameCollection('messagingHistories'); +db.messagingHistories.update({}, { + $rename: { + updated_at: 'updatedAt', + user_id: 'userId', + partner: 'partnerId', + message: 'messageId', + } +}, false, true); + +db.messaging_messages.renameCollection('messagingMessages'); +db.messagingMessages.update({}, { + $rename: { + created_at: 'createdAt', + user_id: 'userId', + recipient_id: 'recipientId', + file_id: 'fileId', + is_read: 'isRead' + } +}, false, true); + +db.mute.update({}, { + $rename: { + created_at: 'createdAt', + deleted_at: 'deletedAt', + mutee_id: 'muteeId', + muter_id: 'muterId', + } +}, false, true); + +db.othello_games.renameCollection('othelloGames'); +db.othelloGames.update({}, { + $rename: { + created_at: 'createdAt', + started_at: 'startedAt', + is_started: 'isStarted', + is_ended: 'isEnded', + user1_id: 'user1Id', + user2_id: 'user2Id', + user1_accepted: 'user1Accepted', + user2_accepted: 'user2Accepted', + winner_id: 'winnerId', + 'settings.is_llotheo': 'settings.isLlotheo', + 'settings.can_put_everywhere': 'settings.canPutEverywhere', + 'settings.looped_board': 'settings.loopedBoard', + } +}, false, true); + +db.othello_matchings.renameCollection('othelloMatchings'); +db.othelloMatchings.update({}, { + $rename: { + created_at: 'createdAt', + parent_id: 'parentId', + child_id: 'childId' + } +}, false, true); + +db.poll_votes.renameCollection('pollVotes'); +db.pollVotes.update({}, { + $rename: { + created_at: 'createdAt', + user_id: 'userId', + post_id: 'postId' + } +}, false, true); + +db.post_reactions.renameCollection('postReactions'); +db.postReactions.update({}, { + $rename: { + created_at: 'createdAt', + user_id: 'userId', + post_id: 'postId' + } +}, false, true); + +db.post_watching.renameCollection('postWatching'); +db.postWatching.update({}, { + $rename: { + created_at: 'createdAt', + user_id: 'userId', + post_id: 'postId' + } +}, false, true); + +db.posts.update({}, { + $rename: { + created_at: 'createdAt', + channel_id: 'channelId', + user_id: 'userId', + app_id: 'appId', + media_ids: 'mediaIds', + reply_id: 'replyId', + repost_id: 'repostId', + via_mobile: 'viaMobile', + reaction_counts: 'reactionCounts', + replies_count: 'repliesCount', + repost_count: 'repostCount', + '_reply.user_id': '_reply.userId', + '_repost.user_id': '_repost.userId', + } +}, false, true); + +db.signin.update({}, { + $rename: { + created_at: 'createdAt', + user_id: 'userId', + } +}, false, true); + +db.sw_subscriptions.renameCollection('swSubscriptions'); +db.swSubscriptions.update({}, { + $rename: { + user_id: 'userId', + } +}, false, true); + +db.users.update({}, { + $rename: { + created_at: 'createdAt', + deleted_at: 'deletedAt', + followers_count: 'followersCount', + following_count: 'followingCount', + posts_count: 'postsCount', + drive_capacity: 'driveCapacity', + username_lower: 'usernameLower', + avatar_id: 'avatarId', + banner_id: 'bannerId', + pinned_post_id: 'pinnedPostId', + is_suspended: 'isSuspended', + host_lower: 'hostLower', + 'twitter.access_token': 'twitter.accessToken', + 'twitter.access_token_secret': 'twitter.accessTokenSecret', + 'twitter.user_id': 'twitter.userId', + 'twitter.screen_name': 'twitter.screenName', + 'line.user_id': 'line.userId', + last_used_at: 'lastUsedAt', + is_bot: 'isBot', + is_pro: 'isPro', + two_factor_secret: 'twoFactorSecret', + two_factor_enabled: 'twoFactorEnabled', + client_settings: 'clientSettings' + }, + $unset: { + likes_count: '', + liked_count: '', + latest_post: '' + } +}, false, true); diff --git a/tools/migration/node.1522066477.user-account-keypair.js b/tools/migration/node.1522066477.user-account-keypair.js deleted file mode 100644 index c413e3db1e..0000000000 --- a/tools/migration/node.1522066477.user-account-keypair.js +++ /dev/null @@ -1,39 +0,0 @@ -// 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 migrate = async (user) => { - const result = await User.update(user._id, { - $set: { - 'account.keypair': generate() - } - }); - 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) diff --git a/tools/migration/node.2018-03-28.appname.js b/tools/migration/node.2018-03-28.appname.js deleted file mode 100644 index 9f16e47202..0000000000 --- a/tools/migration/node.2018-03-28.appname.js +++ /dev/null @@ -1,40 +0,0 @@ -// for Node.js interpret - -const { default: App } = require('../../built/api/models/app'); -const { generate } = require('../../built/crypto_key'); -const { default: zip } = require('@prezzemolo/zip') - -const migrate = async (app) => { - const result = await User.update(app._id, { - $set: { - 'name_id': app.name_id.replace(/\-/g, '_'), - 'name_id_lower': app.name_id_lower.replace(/\-/g, '_') - } - }); - return result.ok === 1; -} - -async function main() { - const count = await App.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 App.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) diff --git a/tools/migration/node.2018-03-28.username.js b/tools/migration/node.2018-03-28.username.js deleted file mode 100644 index 2222152101..0000000000 --- a/tools/migration/node.2018-03-28.username.js +++ /dev/null @@ -1,40 +0,0 @@ -// 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 migrate = async (user) => { - const result = await User.update(user._id, { - $set: { - 'username': user.username.replace(/\-/g, '_'), - 'username_lower': user.username_lower.replace(/\-/g, '_') - } - }); - 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) diff --git a/tools/migration/shell.1522038492.user-account.js b/tools/migration/shell.1522038492.user-account.js deleted file mode 100644 index 056c29e8e1..0000000000 --- a/tools/migration/shell.1522038492.user-account.js +++ /dev/null @@ -1,41 +0,0 @@ -db.users.dropIndex({ token: 1 }); - -db.users.find({}).forEach(function(user) { - print(user._id); - db.users.update({ _id: user._id }, { - $unset: { - email: '', - links: '', - password: '', - token: '', - twitter: '', - line: '', - profile: '', - last_used_at: '', - is_bot: '', - is_pro: '', - two_factor_secret: '', - two_factor_enabled: '', - client_settings: '', - settings: '' - }, - $set: { - account: { - email: user.email, - links: user.links, - password: user.password, - token: user.token, - twitter: user.twitter, - line: user.line, - profile: user.profile, - last_used_at: user.last_used_at, - is_bot: user.is_bot, - is_pro: user.is_pro, - two_factor_secret: user.two_factor_secret, - two_factor_enabled: user.two_factor_enabled, - client_settings: user.client_settings, - settings: user.settings - } - } - }, false, false); -}); diff --git a/tools/migration/shell.1522116709.user-host.js b/tools/migration/shell.1522116709.user-host.js deleted file mode 100644 index b354709a61..0000000000 --- a/tools/migration/shell.1522116709.user-host.js +++ /dev/null @@ -1 +0,0 @@ -db.users.update({ }, { $set: { host: null } }, { multi: true }); diff --git a/tools/migration/shell.1522116710.user-host_lower.js b/tools/migration/shell.1522116710.user-host_lower.js deleted file mode 100644 index 31ec6c468a..0000000000 --- a/tools/migration/shell.1522116710.user-host_lower.js +++ /dev/null @@ -1 +0,0 @@ -db.users.update({ }, { $set: { host_lower: null } }, { multi: true }); diff --git a/tools/migration/shell.camel-case.js b/tools/migration/shell.camel-case.js deleted file mode 100644 index 8d07140ba5..0000000000 --- a/tools/migration/shell.camel-case.js +++ /dev/null @@ -1,232 +0,0 @@ -// このスクリプトを走らせる前か後に notifications コレクションはdropしてください - -db.access_tokens.renameCollection('accessTokens'); -db.accessTokens.update({}, { - $rename: { - created_at: 'createdAt', - app_id: 'appId', - user_id: 'userId', - } -}, false, true); - -db.apps.update({}, { - $rename: { - created_at: 'createdAt', - user_id: 'userId', - name_id: 'nameId', - name_id_lower: 'nameIdLower', - callback_url: 'callbackUrl', - } -}, false, true); - -db.auth_sessions.renameCollection('authSessions'); -db.authSessions.update({}, { - $rename: { - created_at: 'createdAt', - app_id: 'appId', - user_id: 'userId', - } -}, false, true); - -db.channel_watching.renameCollection('channelWatching'); -db.channelWatching.update({}, { - $rename: { - created_at: 'createdAt', - deleted_at: 'deletedAt', - channel_id: 'channelId', - user_id: 'userId', - } -}, false, true); - -db.channels.update({}, { - $rename: { - created_at: 'createdAt', - user_id: 'userId', - watching_count: 'watchingCount' - } -}, false, true); - -db.drive_files.files.renameCollection('driveFiles.files'); -db.drive_files.chunks.renameCollection('driveFiles.chunks'); -db.driveFiles.files.update({}, { - $rename: { - 'metadata.user_id': 'metadata.userId', - 'metadata.folder_id': 'metadata.folderId', - 'metadata.properties.average_color': 'metadata.properties.avgColor' - } -}, false, true); - -db.drive_folders.renameCollection('driveFolders'); -db.driveFolders.update({}, { - $rename: { - created_at: 'createdAt', - user_id: 'userId', - parent_id: 'parentId', - } -}, false, true); - -db.favorites.update({}, { - $rename: { - created_at: 'createdAt', - user_id: 'userId', - post_id: 'postId', - } -}, false, true); - -db.following.update({}, { - $rename: { - created_at: 'createdAt', - deleted_at: 'deletedAt', - followee_id: 'followeeId', - follower_id: 'followerId', - } -}, false, true); - -db.messaging_histories.renameCollection('messagingHistories'); -db.messagingHistories.update({}, { - $rename: { - updated_at: 'updatedAt', - user_id: 'userId', - partner: 'partnerId', - message: 'messageId', - } -}, false, true); - -db.messaging_messages.renameCollection('messagingMessages'); -db.messagingMessages.update({}, { - $rename: { - created_at: 'createdAt', - user_id: 'userId', - recipient_id: 'recipientId', - file_id: 'fileId', - is_read: 'isRead' - } -}, false, true); - -db.mute.update({}, { - $rename: { - created_at: 'createdAt', - deleted_at: 'deletedAt', - mutee_id: 'muteeId', - muter_id: 'muterId', - } -}, false, true); - -db.othello_games.renameCollection('othelloGames'); -db.othelloGames.update({}, { - $rename: { - created_at: 'createdAt', - started_at: 'startedAt', - is_started: 'isStarted', - is_ended: 'isEnded', - user1_id: 'user1Id', - user2_id: 'user2Id', - user1_accepted: 'user1Accepted', - user2_accepted: 'user2Accepted', - winner_id: 'winnerId', - 'settings.is_llotheo': 'settings.isLlotheo', - 'settings.can_put_everywhere': 'settings.canPutEverywhere', - 'settings.looped_board': 'settings.loopedBoard', - } -}, false, true); - -db.othello_matchings.renameCollection('othelloMatchings'); -db.othelloMatchings.update({}, { - $rename: { - created_at: 'createdAt', - parent_id: 'parentId', - child_id: 'childId' - } -}, false, true); - -db.poll_votes.renameCollection('pollVotes'); -db.pollVotes.update({}, { - $rename: { - created_at: 'createdAt', - user_id: 'userId', - post_id: 'postId' - } -}, false, true); - -db.post_reactions.renameCollection('postReactions'); -db.postReactions.update({}, { - $rename: { - created_at: 'createdAt', - user_id: 'userId', - post_id: 'postId' - } -}, false, true); - -db.post_watching.renameCollection('postWatching'); -db.postWatching.update({}, { - $rename: { - created_at: 'createdAt', - user_id: 'userId', - post_id: 'postId' - } -}, false, true); - -db.posts.update({}, { - $rename: { - created_at: 'createdAt', - channel_id: 'channelId', - user_id: 'userId', - app_id: 'appId', - media_ids: 'mediaIds', - reply_id: 'replyId', - repost_id: 'repostId', - via_mobile: 'viaMobile', - reaction_counts: 'reactionCounts', - replies_count: 'repliesCount', - repost_count: 'repostCount', - '_reply.user_id': '_reply.userId', - '_repost.user_id': '_repost.userId', - } -}, false, true); - -db.signin.update({}, { - $rename: { - created_at: 'createdAt', - user_id: 'userId', - } -}, false, true); - -db.sw_subscriptions.renameCollection('swSubscriptions'); -db.swSubscriptions.update({}, { - $rename: { - user_id: 'userId', - } -}, false, true); - -db.users.update({}, { - $rename: { - created_at: 'createdAt', - deleted_at: 'deletedAt', - followers_count: 'followersCount', - following_count: 'followingCount', - posts_count: 'postsCount', - drive_capacity: 'driveCapacity', - username_lower: 'usernameLower', - avatar_id: 'avatarId', - banner_id: 'bannerId', - pinned_post_id: 'pinnedPostId', - is_suspended: 'isSuspended', - host_lower: 'hostLower', - 'twitter.access_token': 'twitter.accessToken', - 'twitter.access_token_secret': 'twitter.accessTokenSecret', - 'twitter.user_id': 'twitter.userId', - 'twitter.screen_name': 'twitter.screenName', - 'line.user_id': 'line.userId', - last_used_at: 'lastUsedAt', - is_bot: 'isBot', - is_pro: 'isPro', - two_factor_secret: 'twoFactorSecret', - two_factor_enabled: 'twoFactorEnabled', - client_settings: 'clientSettings' - }, - $unset: { - likes_count: '', - liked_count: '', - latest_post: '' - } -}, false, true); -- cgit v1.2.3-freya