summaryrefslogtreecommitdiff
path: root/cli
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2018-07-24 23:35:19 +0900
committersyuilo <syuilotan@yahoo.co.jp>2018-07-24 23:35:19 +0900
commit5e9fb8bd848d97da2e00f4e7f7fbe5e77e82b9b8 (patch)
treeaf4de153bd238305f5bf01722b3dfc2561ba0d00 /cli
parentwip (diff)
downloadsharkey-5e9fb8bd848d97da2e00f4e7f7fbe5e77e82b9b8.tar.gz
sharkey-5e9fb8bd848d97da2e00f4e7f7fbe5e77e82b9b8.tar.bz2
sharkey-5e9fb8bd848d97da2e00f4e7f7fbe5e77e82b9b8.zip
wip
Diffstat (limited to 'cli')
-rw-r--r--cli/migration/2.0.0.js57
-rw-r--r--cli/migration/2.4.0.js71
-rw-r--r--cli/migration/5.0.0.js10
3 files changed, 138 insertions, 0 deletions
diff --git a/cli/migration/2.0.0.js b/cli/migration/2.0.0.js
new file mode 100644
index 0000000000..f7298972e5
--- /dev/null
+++ b/cli/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/cli/migration/2.4.0.js b/cli/migration/2.4.0.js
new file mode 100644
index 0000000000..aa37849aa1
--- /dev/null
+++ b/cli/migration/2.4.0.js
@@ -0,0 +1,71 @@
+// 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 User.count({});
+
+ let prev;
+
+ for (let i = 0; i < count; i++) {
+ promiseGens.push(() => {
+ const promise = new Promise(async (res, rej) => {
+ const user = await User.findOne(prev ? {
+ _id: { $gt: prev._id }
+ } : {}, {
+ sort: {
+ _id: 1
+ }
+ });
+
+ prev = user;
+
+ const set = {};
+
+ if (user.avatarId != null) {
+ const file = await DriveFile.findOne({ _id: user.avatarId });
+
+ if (file && file.metadata.properties.avgColor) {
+ set.avatarColor = file.metadata.properties.avgColor;
+ }
+ }
+
+ if (user.bannerId != null) {
+ const file = await DriveFile.findOne({ _id: user.bannerId });
+
+ if (file && file.metadata.properties.avgColor) {
+ set.bannerColor = file.metadata.properties.avgColor;
+ }
+ }
+
+ if (Object.keys(set).length === 0) return res([i, user]);
+
+ User.update({
+ _id: user._id
+ }, {
+ $set: set
+ }).then(() => {
+ res([i, user]);
+ }).catch(rej);
+ });
+
+ promise.then(([i, user]) => {
+ console.log(chalk`{gray ${i}} {green done: {bold ${user._id}} @${user.username}}`);
+ });
+
+ return promise;
+ });
+ }
+
+ return await sequential(promiseGens);
+}
+
+main().then(() => {
+ console.log('ALL DONE');
+}).catch(console.error);
diff --git a/cli/migration/5.0.0.js b/cli/migration/5.0.0.js
new file mode 100644
index 0000000000..8c6f49ed85
--- /dev/null
+++ b/cli/migration/5.0.0.js
@@ -0,0 +1,10 @@
+const { default: DriveFile } = require('../../built/models/drive-file');
+
+DriveFile.update({}, {
+ $rename: {
+ 'metadata.url': 'metadata.src',
+ 'metadata.isMetaOnly': 'metadata.withoutChunks',
+ }
+}, {
+ multi: true
+});