summaryrefslogtreecommitdiff
path: root/migration
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2018-05-04 16:27:03 +0900
committersyuilo <syuilotan@yahoo.co.jp>2018-05-04 16:27:03 +0900
commitb5acf15877908a4b0e60324c1371aad623b5529d (patch)
tree0f1145a784e046bf6c1df40e0ff905deeafd23fb /migration
parentドライブのファイルにユーザー情報を非正規化 (diff)
downloadsharkey-b5acf15877908a4b0e60324c1371aad623b5529d.tar.gz
sharkey-b5acf15877908a4b0e60324c1371aad623b5529d.tar.bz2
sharkey-b5acf15877908a4b0e60324c1371aad623b5529d.zip
2.0.0
Diffstat (limited to 'migration')
-rw-r--r--migration/2.0.0.js57
-rw-r--r--migration/2018-04-19.js49
2 files changed, 57 insertions, 49 deletions
diff --git a/migration/2.0.0.js b/migration/2.0.0.js
new file mode 100644
index 0000000000..eb8f5730c7
--- /dev/null
+++ b/migration/2.0.0.js
@@ -0,0 +1,57 @@
+// for Node.js interpret
+
+const chalk = require('chalk');
+const sequential = require('promise-sequential');
+
+const { default: User } = require('../built/models/user');
+const { default: DriveFile } = require('../built/models/drive-file');
+
+async function main() {
+ const promiseGens = [];
+
+ const count = await DriveFile.count({});
+
+ let prev;
+
+ for (let i = 0; i < count; i++) {
+ promiseGens.push(() => {
+ const promise = new Promise(async (res, rej) => {
+ const file = await DriveFile.findOne(prev ? {
+ _id: { $gt: prev._id }
+ } : {}, {
+ sort: {
+ _id: 1
+ }
+ });
+
+ prev = file;
+
+ const user = await User.findOne({ _id: file.metadata.userId });
+
+ DriveFile.update({
+ _id: file._id
+ }, {
+ $set: {
+ 'metadata._user': {
+ host: user.host
+ }
+ }
+ }).then(() => {
+ res([i, file]);
+ }).catch(rej);
+ });
+
+ promise.then(([i, file]) => {
+ console.log(chalk`{gray ${i}} {green done: {bold ${file._id}} ${file.filename}}`);
+ });
+
+ return promise;
+ });
+ }
+
+ return await sequential(promiseGens);
+}
+
+main().then(() => {
+ console.log('ALL DONE');
+}).catch(console.error);
diff --git a/migration/2018-04-19.js b/migration/2018-04-19.js
deleted file mode 100644
index b0df22c009..0000000000
--- a/migration/2018-04-19.js
+++ /dev/null
@@ -1,49 +0,0 @@
-// for Node.js interpret
-
-const { default: User } = require('../built/models/user');
-const { default: Following } = require('../built/models/following');
-const { default: zip } = require('@prezzemolo/zip')
-
-const migrate = async (following) => {
- const follower = await User.findOne({ _id: following.followerId });
- const followee = await User.findOne({ _id: following.followeeId });
- const result = await Following.update(following._id, {
- $set: {
- stalk: true,
- _follower: {
- host: follower.host,
- inbox: follower.host != null ? follower.inbox : undefined
- },
- _followee: {
- host: followee.host,
- inbox: followee.host != null ? followee.inbox : undefined
- }
- }
- });
- return result.ok === 1;
-}
-
-async function main() {
- const count = await Following.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 Following.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)