@chevre/domain
Version:
Chevre Domain Library for Node.js
62 lines (55 loc) • 2.37 kB
text/typescript
// tslint:disable:no-console
import * as moment from 'moment';
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 actionRepo = await chevre.repository.Action.createInstance(mongoose.connection);
// tslint:disable-next-line:no-increment-decrement no-magic-numbers
for (let index = 0; index < 24 * 1000; index++) {
const updateResult = await actionRepo.unsetUnnecessaryFields({
filter: {
typeOf: { $eq: chevre.factory.actionType.UseAction },
'object.typeOf': { $exists: true, $eq: chevre.factory.reservationType.EventReservation },
// actionStatus: { $eq: chevre.factory.actionStatusType.CompletedActionStatus },
startDate: {
// $exists: true,
$gte: moment()
.add(-(index + 1), 'hours')
.toDate(),
$lte: moment()
.add(-index, 'hours')
.toDate()
}
// _id: { $eq: '61da235d94a80f000af85f6b' }
},
$unset: {
'object.0.issuedThrough.availableChannel': 1,
'object.0.issuedThrough.serviceType': 1,
'object.0.reservationFor.superEvent': 1,
'object.0.reservationFor.location': 1,
'object.0.reservationFor.name': 1,
'object.0.reservedTicket.issuedBy': 1,
'object.0.reservedTicket.ticketType.description': 1,
'object.0.reservedTicket.ticketType.name': 1,
'object.0.reservedTicket.ticketType.additionalProperty': 1,
'object.0.reservedTicket.ticketType.category': 1,
'object.0.reservedTicket.ticketType.color': 1
}
});
console.log(
'unset processed.', updateResult,
-index, 'hours',
moment.duration(index, 'hours')
.asDays(),
'days'
);
}
}
main()
.then(() => {
console.log('success!');
})
.catch(console.error);