@chevre/domain
Version:
Chevre Domain Library for Node.js
72 lines (62 loc) • 3.06 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 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);