@chevre/domain
Version:
Chevre Domain Library for Node.js
72 lines (62 loc) • 2.85 kB
text/typescript
// tslint:disable:no-console
import * as moment from 'moment';
import * as mongoose from 'mongoose';
import { chevre } from '../../../../lib/index';
const PROJECT = { typeOf: chevre.factory.organizationType.Project, id: String(process.env.PROJECT_ID) };
async function main() {
await mongoose.connect(<string>process.env.MONGOLAB_URI);
const eventRepo = await chevre.repository.Event.createInstance(mongoose.connection);
const taskRepo = await chevre.repository.Task.createInstance(mongoose.connection);
const events = <Pick<
chevre.factory.event.IEvent<chevre.factory.eventType.ScreeningEvent>,
'id' | 'typeOf' | 'startDate' | 'project'
>[]>await eventRepo.projectEventFields<chevre.factory.eventType.ScreeningEvent>(
{
typeOf: chevre.factory.eventType.ScreeningEvent,
project: { id: { $eq: PROJECT.id } },
startFrom: moment()
.add(-1, 'days')
.toDate()
// startFrom: moment().add(-1, 'day').toDate(),
// startThrough: moment().add(1, 'day').toDate(),
// startThrough: now
},
['typeOf', 'startDate', 'project']
);
// console.log(events);
console.log(events.length);
// return;
const tasks: chevre.factory.task.aggregateScreeningEvent.IAttributes[] = [];
for (const { id, typeOf, startDate, project } of events) {
const aggregateTask: chevre.factory.task.aggregateScreeningEvent.IAttributes = {
name: chevre.factory.taskName.AggregateScreeningEvent,
project: { typeOf: chevre.factory.organizationType.Project, id: project.id },
status: chevre.factory.taskStatus.Ready,
runsAt: new Date(),
remainingNumberOfTries: 1,
numberOfTried: 0,
executionResults: [],
data: { typeOf, id }
};
// const aggregateUseActionsTask: chevre.factory.task.aggregateUseActionsOnEvent.IAttributes = {
// name: chevre.factory.taskName.AggregateUseActionsOnEvent,
// project: { typeOf: chevre.factory.organizationType.Project, id: project.id },
// status: chevre.factory.taskStatus.Ready,
// runsAt: new Date(),
// remainingNumberOfTries: 1,
// numberOfTried: 0,
// executionResults: [],
// data: { typeOf, id }
// };
tasks.push(aggregateTask);
console.log('task created', project.id, id, startDate);
}
console.log('creating...', tasks.length, 'tasks');
const result = await taskRepo.taskModel.insertMany(tasks, { ordered: false, rawResult: true });
console.log('result:', { ...result, ops: undefined, insertedIds: undefined });
}
main()
.then(() => {
console.log('success!');
})
.catch(console.error);