UNPKG

@chevre/domain

Version:

Chevre Domain Library for Node.js

72 lines (62 loc) 3.06 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 assetTransactionRepo = await chevre.repository.AssetTransaction.createInstance(mongoose.connection); const cursor = assetTransactionRepo.getCursor( { typeOf: { $eq: chevre.factory.assetTransactionType.CancelReservation } // 'project.id': { $ne: EXCLUDED_PROJECT_ID } }, {} ); console.log('assetTransactions found'); let i = 0; let updateCount = 0; await cursor.eachAsync(async (doc) => { i += 1; const assetTransaction: chevre.factory.assetTransaction.cancelReservation.ITransaction = doc.toObject(); const alreadyMigrated = assetTransaction.object.typeOf === chevre.factory.reservationType.ReservationPackage && typeof assetTransaction.object.reservationNumber === 'string' && assetTransaction.object.reservationNumber.length > 0; if (alreadyMigrated) { console.log( 'already migrated.', assetTransaction.project.id, assetTransaction.typeOf, assetTransaction.transactionNumber, assetTransaction.startDate, i); } else { let reservationNumber: string | undefined; if (typeof assetTransaction.object.transaction?.transactionNumber === 'string') { reservationNumber = assetTransaction.object.transaction.transactionNumber; } else if (typeof assetTransaction.object.reservations?.[0].reservationNumber === 'string') { reservationNumber = assetTransaction.object.reservations[0].reservationNumber; } if (typeof reservationNumber !== 'string') { console.error( 'reservationNumber not found.', assetTransaction.project.id, assetTransaction.typeOf, assetTransaction.transactionNumber, assetTransaction.startDate, i); throw new Error('reservationNumber not found'); } console.log( 'updating assetTransaction...', assetTransaction.project.id, assetTransaction.typeOf, assetTransaction.transactionNumber, assetTransaction.startDate, reservationNumber, i); await assetTransactionRepo.migrateObjectReservationNumber({ id: assetTransaction.id, object: { reservationNumber } }); updateCount += 1; console.log( 'updated.', assetTransaction.project.id, assetTransaction.typeOf, assetTransaction.transactionNumber, assetTransaction.startDate, i); } }); console.log(i, 'assetTransactions checked'); console.log(updateCount, 'assetTransactions updated'); } main() .then() .catch(console.error);