|
|
@@ -0,0 +1,47 @@
|
|
|
+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
|
|
|
+ ) {
|
|
|
+ maxId = nextBatch[nextBatch.length - 1]._id
|
|
|
+ processed += nextBatch.length
|
|
|
+ console.error(maxId, processed)
|
|
|
+
|
|
|
+ processBatch(nextBatch)
|
|
|
+ }
|
|
|
+ console.error('done')
|
|
|
+}
|
|
|
+
|
|
|
+main()
|
|
|
+ .then(() => {
|
|
|
+ process.exit(0)
|
|
|
+ })
|
|
|
+ .catch(error => {
|
|
|
+ console.error({ error })
|
|
|
+ process.exit(1)
|
|
|
+ })
|