Skip to content

Commit e57cda6

Browse files
author
Parth Shah
committed
supporting indexing projects based on Id (migration task)
1 parent dd71547 commit e57cda6

File tree

2 files changed

+30
-11
lines changed

2 files changed

+30
-11
lines changed

migrations/seedElasticsearchIndex.js

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,20 @@ import RabbitMQService from '../src/services/rabbitmq';
99

1010
const logger = bunyan.createLogger({ name: 'init-es', level: config.get('logLevel') });
1111

12+
13+
/**
14+
* Retrieve project ids from cli if provided
15+
* @return {Array} list of projectIds
16+
*/
17+
function getProjectIds() {
18+
let projectIdArg = _.find(process.argv, a => a.indexOf('projectIds') > -1);
19+
if (projectIdArg) {
20+
projectIdArg = projectIdArg.split('=');
21+
return projectIdArg[1].split(',').map(i => parseInt(i, 10));
22+
}
23+
return [];
24+
}
25+
1226
Promise.coroutine(function* wrapped() {
1327
try {
1428
const rabbit = new RabbitMQService(logger);
@@ -19,23 +33,29 @@ Promise.coroutine(function* wrapped() {
1933
config.get('pubsubQueueName'),
2034
);
2135

36+
37+
const projectIds = getProjectIds();
38+
const projectWhereClause = (projectIds.length > 0) ? { id: { $in: projectIds } } : { deletedAt: { $eq: null } };
2239
const projects = yield models.Project.findAll({
23-
where: { deletedAt: { $eq: null } },
40+
where: projectWhereClause,
2441
raw: true,
2542
});
2643
logger.info(`Retrieved #${projects.length} projects`);
2744

45+
const memberWhereClause = (projectIds.length > 0)
46+
? { projectId: { $in: projectIds } }
47+
: { deletedAt: { $eq: null } };
2848
let members = yield models.ProjectMember.findAll({
2949
raw: true,
30-
where: { deletedAt: { $eq: null } },
50+
where: memberWhereClause,
3151
});
3252
logger.info(`Retrieved #${members.length} members`);
3353
members = _.groupBy(members, 'projectId');
3454

3555
const promises = [];
3656
_.forEach(projects, (p) => {
3757
p.members = members[p.id];
38-
logger.debug(`Processing #${p.id}`);
58+
logger.debug(`Processing Project #${p.id}`);
3959
promises.push(rabbit.publish('project.initial', p, {}));
4060
});
4161
Promise.all(promises)

src/events/projects/index.js

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,17 +35,17 @@ const projectCreatedHandler = Promise.coroutine(function* (logger, msg, channel)
3535
return _.merge(single, _.pick(detail, 'handle', 'firstName', 'lastName', 'email'));
3636
});
3737
// add the record to the index
38-
const result = yield eClient.create({
38+
const result = yield eClient.index({
3939
index: ES_PROJECT_INDEX,
4040
type: ES_PROJECT_TYPE,
4141
id: data.id,
4242
body: data,
4343
});
44-
logger.debug('project indexed successfully', result);
44+
logger.debug(`project indexed successfully (projectId: ${data.id})`, result);
4545
channel.ack(msg);
4646
return undefined;
4747
} catch (error) {
48-
logger.error('Error proecessing event', error);
48+
logger.error(`Error proecessing event (projectId: ${data.id})`, error);
4949
channel.nack(msg, false, !msg.fields.redelivered);
5050
return undefined;
5151
}
@@ -77,11 +77,11 @@ const projectUpdatedHandler = Promise.coroutine(function* (logger, msg, channel)
7777
doc: merged,
7878
},
7979
});
80-
logger.debug('project updated successfully in elasticsearh index');
80+
logger.debug(`project updated successfully in elasticsearh index, (projectId: ${data.id})`);
8181
channel.ack(msg);
8282
return undefined;
8383
} catch (error) {
84-
logger.error('failed to get project document', error);
84+
logger.error(`failed to get project document, (projectId: ${data.id})`, error);
8585
channel.nack(msg, false, !msg.fields.redelivered);
8686
return undefined;
8787
}
@@ -102,17 +102,16 @@ const projectDeletedHandler = Promise.coroutine(function* (logger, msg, channel)
102102
type: ES_PROJECT_TYPE,
103103
id: data.id,
104104
});
105-
logger.debug('project deleted successfully from elasticsearh index');
105+
logger.debug(`project deleted successfully from elasticsearh index (projectId: ${data.id})`);
106106
channel.ack(msg);
107107
return undefined;
108108
} catch (error) {
109-
logger.error('failed to delete project document', error);
109+
logger.error(`failed to delete project document (projectId: ${data.id})`, error);
110110
channel.nack(msg, false, !msg.fields.redelivered);
111111
return undefined;
112112
}
113113
});
114114

115-
116115
module.exports = {
117116
projectCreatedHandler,
118117
projectUpdatedHandler,

0 commit comments

Comments
 (0)