cherrypick/tools/migration/issue_882.js

45 lines
816 B
JavaScript
Raw Normal View History

2017-11-07 21:04:32 +09:00
// 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;
2017-11-07 21:12:08 +09:00
const count = await DriveFile.count({});
2017-11-07 21:04:32 +09:00
const iterate = async () => {
if (i == count) return true;
console.log(`${i} / ${count}`);
2017-11-07 21:12:08 +09:00
const doc = (await DriveFile.find({}, { limit: 1, skip: i }))[0]
2017-11-07 21:04:32 +09:00
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)