summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/migration/issue_882.js44
-rw-r--r--tools/migration/use-gridfs.js4
2 files changed, 47 insertions, 1 deletions
diff --git a/tools/migration/issue_882.js b/tools/migration/issue_882.js
new file mode 100644
index 0000000000..67a1551e04
--- /dev/null
+++ b/tools/migration/issue_882.js
@@ -0,0 +1,44 @@
+// for Node.js interpret
+
+const { default: DriveFile } = require('../../built/api/models/drive-file')
+
+const migrate = async (doc) => {
+ const result = await DriveFile.update(doc._id, {
+ $set: {
+ contentType: doc.metadata.type
+ },
+ $unset: {
+ 'metadata.type': ''
+ }
+ })
+ return result.ok === 1
+}
+
+async function main() {
+ let i = 0;
+
+ const count = await db.get('drive_files').count({});
+
+ const iterate = async () => {
+ if (i == count) return true;
+ console.log(`${i} / ${count}`);
+ const doc = (await db.get('drive_files').find({}, { limit: 1, skip: i }))[0]
+ const res = await migrate(doc);
+ if (!res) {
+ return false;
+ } else {
+ i++
+ return await iterate();
+ }
+ }
+
+ const res = await iterate();
+
+ if (res) {
+ return 'ok';
+ } else {
+ throw 'something happened';
+ }
+}
+
+main().then(console.dir).catch(console.error)
diff --git a/tools/migration/use-gridfs.js b/tools/migration/use-gridfs.js
index c5883e4562..106cbd3889 100644
--- a/tools/migration/use-gridfs.js
+++ b/tools/migration/use-gridfs.js
@@ -22,6 +22,7 @@ const migrateToGridFS = async (doc) => {
const buffer = doc.data ? doc.data.buffer : Buffer.from([0x00]) // アップロードのバグなのか知らないけどなぜか data が存在しない drive_file ドキュメントがまれにあることがわかったので
const created_at = doc.created_at
const name = doc.name
+ const type = doc.type
delete doc._id
delete doc.created_at
@@ -29,9 +30,10 @@ const migrateToGridFS = async (doc) => {
delete doc.hash
delete doc.data
delete doc.name
+ delete doc.type
const bucket = await getGridFSBucket()
- const added = await writeToGridFS(bucket, buffer, id, name, { metadata: doc })
+ const added = await writeToGridFS(bucket, buffer, id, name, { contentType: type, metadata: doc })
const result = await DriveFile.update(id, {
$set: {