UNPKG

@chevre/domain

Version:

Chevre Domain Library for Node.js

120 lines (108 loc) 4.7 kB
// tslint:disable:no-console import * as mongoose from 'mongoose'; import { chevre } from '../../../lib/index'; // const project = { id: String(process.env.PROJECT_ID) }; // tslint:disable-next-line:max-func-body-length async function main() { await mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex: false }); const taskRepo = await chevre.repository.Task.createInstance(mongoose.connection); const cursor = taskRepo.getCursor( { name: { $eq: chevre.factory.taskName.DeleteTransaction }, status: { $eq: chevre.factory.taskStatus.Ready } // runsAt: { // $gte: moment() // // tslint:disable-next-line:no-magic-numbers // .add(29, 'days') // .toDate(), // $lte: moment() // // tslint:disable-next-line:no-magic-numbers // .add(365, 'days') // .toDate() // }, // _id: { $eq: '6441bcf04014af2c7d39f6aa' } }, { _id: 1, project: 1, data: 1, status: 1, name: 1, runsAt: 1 } ); console.log('tasks found'); let i = 0; let updateCount = 0; await cursor.eachAsync(async (doc) => { i += 1; const deleteTransactionTask: Pick< chevre.factory.task.deleteTransaction.ITask, 'id' | 'project' | 'data' | 'status' | 'name' | 'runsAt' > = doc.toObject(); let dataObject: chevre.factory.task.deleteTransaction.IObjectAsPlaceOrder | undefined; if (deleteTransactionTask.data.object.typeOf === chevre.factory.transactionType.PlaceOrder) { if ( (typeof deleteTransactionTask.data.object.specifyingMethod !== 'string') || (deleteTransactionTask.data.object.specifyingMethod === chevre.factory.task.deleteTransaction.SpecifyingMethod.Id) ) { const existingDataObject = deleteTransactionTask.data.object; if ((<any>existingDataObject).agent !== undefined) { dataObject = { specifyingMethod: chevre.factory.task.deleteTransaction.SpecifyingMethod.Id, id: existingDataObject.id, object: { ...(typeof existingDataObject.object.confirmationNumber === 'string') ? { confirmationNumber: existingDataObject.object.confirmationNumber } : undefined, ...(typeof existingDataObject.object.orderNumber === 'string') ? { orderNumber: existingDataObject.object.orderNumber } : undefined }, project: existingDataObject.project, startDate: existingDataObject.startDate, typeOf: existingDataObject.typeOf, ...(existingDataObject.endDate !== undefined) ? { endDate: existingDataObject.endDate } : undefined }; } } } let alreadyMigrated = true; if (typeof dataObject?.id === 'string') { alreadyMigrated = false; } if (alreadyMigrated) { console.log( 'already migrated.', deleteTransactionTask.project.id, deleteTransactionTask.name, deleteTransactionTask.id, deleteTransactionTask.runsAt, i, updateCount); } else { console.log( 'updating...', deleteTransactionTask.project.id, deleteTransactionTask.name, deleteTransactionTask.id, deleteTransactionTask.runsAt, i, updateCount, dataObject); if (dataObject !== undefined) { await taskRepo.taskModel.findByIdAndUpdate( deleteTransactionTask.id, { $set: { 'data.object': dataObject } }, { timestamps: false } ) .exec(); } updateCount += 1; console.log( 'updated.', deleteTransactionTask.project.id, deleteTransactionTask.name, deleteTransactionTask.id, deleteTransactionTask.runsAt, i, updateCount); } }); console.log(i, 'tasks checked'); console.log(updateCount, 'tasks updated'); } main() .then() .catch(console.error);