UNPKG

@chevre/domain

Version:

Chevre Domain Library for Node.js

85 lines (75 loc) 3.25 kB
// tslint:disable:no-console import * as mongoose from 'mongoose'; import { chevre } from '../../../lib/index'; // tslint:disable-next-line:max-func-body-length async function main() { await mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex: false }); const actionRepo = await chevre.repository.Action.createInstance(mongoose.connection); const cursor = actionRepo.getCursor( { // _id: { $eq: '666bf2f1903cf9f62b41ca6e' }, typeOf: { $eq: chevre.factory.actionType.AuthorizeAction }, // actionStatus: { $eq: chevre.factory.actionStatusType.CompletedActionStatus }, // startDate: { // $lte: moment() // // tslint:disable-next-line:no-magic-numbers // .add(-180, 'days'), // $gte: moment() // // tslint:disable-next-line:no-magic-numbers // .add(-180, 'days') // }, 'object.typeOf': { $exists: true, $eq: chevre.factory.action.authorize.offer.eventService.ObjectType.SeatReservation }, 'instrument.typeOf': { $exists: true, $eq: chevre.factory.assetTransactionType.Reserve } }, { __id: 1, startDate: 1, project: 1, typeOf: 1, actionStatus: 1, instrument: 1, object: 1 } ); console.log('actions found'); let i = 0; let updateCount = 0; const saveResultCount = 0; // tslint:disable-next-line:max-func-body-length await cursor.eachAsync(async (doc) => { i += 1; const authorizeAction = <Pick< chevre.factory.action.authorize.offer.eventService.IAction, 'id' | 'startDate' | 'project' | 'typeOf' | 'actionStatus' | 'instrument' | 'object' >>doc.toObject(); let migrated = false; if (authorizeAction.instrument.typeOf === chevre.factory.assetTransactionType.COAReserveTransaction) { migrated = true; } else { const pendingTransaction = authorizeAction.object.pendingTransaction; if (pendingTransaction === undefined) { migrated = true; } } if (migrated) { console.log( 'already migrated.', authorizeAction.project.id, authorizeAction.id, authorizeAction.actionStatus, authorizeAction.startDate, i, updateCount, saveResultCount); } else { // optimize action let unsetResult: any; unsetResult = await actionRepo.unsetUnnecessaryFields({ filter: { _id: { $eq: authorizeAction.id } }, $unset: { 'object.pendingTransaction': 1 } }); updateCount += 1; console.log( 'result unset. unsetResult:', unsetResult, authorizeAction.project.id, authorizeAction.id, authorizeAction.actionStatus, authorizeAction.startDate, i, updateCount, saveResultCount); } }); console.log(i, 'actions checked'); console.log(updateCount, 'actions updated'); console.log(saveResultCount, 'result saved'); } main() .then() .catch(console.error);