2020-10-21 09:48:30 +00:00
|
|
|
const { getNextBatch } = require('./helpers/batchedUpdate')
|
|
|
|
const { db, waitForDb } = require('../app/src/infrastructure/mongodb')
|
|
|
|
|
|
|
|
const MODEL_NAME = process.argv.pop()
|
|
|
|
const Model = require(`../app/src/models/${MODEL_NAME}`)[MODEL_NAME]
|
|
|
|
|
|
|
|
function processBatch(batch) {
|
|
|
|
for (const doc of batch) {
|
|
|
|
const error = new Model(doc).validateSync()
|
|
|
|
if (error) {
|
|
|
|
const { errors } = error
|
|
|
|
console.log(JSON.stringify({ _id: doc._id, errors }))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
async function main() {
|
|
|
|
await waitForDb()
|
|
|
|
const collection = db[Model.collection.name]
|
|
|
|
|
|
|
|
const query = {}
|
|
|
|
const projection = {}
|
|
|
|
|
|
|
|
let nextBatch
|
|
|
|
let processed = 0
|
|
|
|
let maxId
|
|
|
|
while (
|
|
|
|
(nextBatch = await getNextBatch(collection, query, maxId, projection))
|
|
|
|
.length
|
|
|
|
) {
|
2020-10-22 15:02:54 +00:00
|
|
|
processBatch(nextBatch)
|
|
|
|
|
2020-10-21 09:48:30 +00:00
|
|
|
maxId = nextBatch[nextBatch.length - 1]._id
|
|
|
|
processed += nextBatch.length
|
|
|
|
console.error(maxId, processed)
|
|
|
|
}
|
|
|
|
console.error('done')
|
|
|
|
}
|
|
|
|
|
|
|
|
main()
|
|
|
|
.then(() => {
|
|
|
|
process.exit(0)
|
|
|
|
})
|
|
|
|
.catch(error => {
|
|
|
|
console.error({ error })
|
|
|
|
process.exit(1)
|
|
|
|
})
|