overleaf/services/web/scripts/validate-data-of-model.js

48 lines
1 KiB
JavaScript
Raw Normal View History

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
) {
processBatch(nextBatch)
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)
})