@chevre/domain
Version:
Chevre Domain Library for Node.js
85 lines (75 loc) • 3.25 kB
text/typescript
// 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);