1 | const moment = require('moment');
|
2 | const mongoose = require('mongoose');
|
3 | const domain = require('../');
|
4 |
|
5 | async function main() {
|
6 | const connection = await mongoose.createConnection(process.env.MONGOLAB_URI);
|
7 |
|
8 | const taskRepo = new domain.repository.Task(connection);
|
9 |
|
10 | const membershipFor4update = {
|
11 | typeOf: 'MembershipService',
|
12 | id: '5b1874be4e1537775703963e'
|
13 | };
|
14 |
|
15 | const cursor = await taskRepo.taskModel.find(
|
16 | {
|
17 | 'project.id': { $exists: true, $eq: '' },
|
18 | name: domain.factory.taskName.OrderProgramMembership,
|
19 | status: {
|
20 | $in: [domain.factory.taskStatus.Ready]
|
21 | }
|
22 | },
|
23 | { createdAt: 0, updatedAt: 0 }
|
24 | )
|
25 | .sort({ runsAt: 1 })
|
26 | .cursor();
|
27 | console.log('tasks found');
|
28 |
|
29 | let i = 0;
|
30 | await cursor.eachAsync(async (doc) => {
|
31 | i += 1;
|
32 | const task = doc.toObject();
|
33 |
|
34 | const membershipFor = task.data.object.itemOffered.membershipFor;
|
35 | if (membershipFor === undefined || membershipFor === null) {
|
36 | console.log('membershipFor undefined');
|
37 | console.log('migrating task...', task.id, task.runsAt);
|
38 |
|
39 |
|
40 | await taskRepo.taskModel.findOneAndUpdate(
|
41 | { _id: task.id },
|
42 | { 'data.object.itemOffered.membershipFor': membershipFor4update }
|
43 | ).exec();
|
44 | } else {
|
45 | console.log('membershipFor exists');
|
46 | }
|
47 |
|
48 | console.log('added', task.id, i);
|
49 | });
|
50 |
|
51 | console.log(i, 'tasks migrated');
|
52 |
|
53 | }
|
54 |
|
55 | main().then(() => {
|
56 | console.log('success!');
|
57 | }).catch((error) => {
|
58 | console.error(error);
|
59 | process.exit(1);
|
60 | });
|