Skip to content

Commit 3f4bbd7

Browse files
xav-cartheotime2005
andcommitted
feat(api): rewrite scripts generate ke snapshot using campaignParticipationId
Co-authored-by: Théotime Berthod <theotime.berthod@pix.fr>
1 parent b7bd19d commit 3f4bbd7

File tree

2 files changed

+28
-21
lines changed

2 files changed

+28
-21
lines changed

api/scripts/prod/generate-knowledge-element-snapshots-for-campaigns.js

+8-14
Original file line numberDiff line numberDiff line change
@@ -46,21 +46,17 @@ function _validateAndNormalizeArgs({ concurrency, maxSnapshotCount }) {
4646

4747
async function getEligibleCampaignParticipations(maxSnapshotCount) {
4848
return knex('campaign-participations')
49-
.select('campaign-participations.userId', 'campaign-participations.sharedAt', 'campaign-participations.id')
50-
.leftJoin('knowledge-element-snapshots', function () {
51-
this.on('knowledge-element-snapshots.userId', 'campaign-participations.userId').andOn(
52-
'knowledge-element-snapshots.snappedAt',
53-
'campaign-participations.sharedAt',
54-
);
55-
})
49+
.select('campaign-participations.id', 'campaign-participations.userId', 'campaign-participations.sharedAt')
50+
.leftJoin(
51+
'knowledge-element-snapshots',
52+
'knowledge-element-snapshots.campaignParticipationId',
53+
'campaign-participations.id',
54+
)
5655
.whereNotNull('campaign-participations.sharedAt')
5756
.where((qb) => {
58-
qb.whereNull('knowledge-element-snapshots.snappedAt').orWhereRaw('?? != ??', [
59-
'campaign-participations.sharedAt',
60-
'knowledge-element-snapshots.snappedAt',
61-
]);
57+
qb.whereNull('knowledge-element-snapshots.campaignParticipationId');
6258
})
63-
.orderBy('campaign-participations.userId')
59+
.orderBy('campaign-participations.id')
6460
.limit(maxSnapshotCount);
6561
}
6662

@@ -79,8 +75,6 @@ async function generateKnowledgeElementSnapshots(
7975
});
8076
try {
8177
await dependencies.knowledgeElementSnapshotRepository.save({
82-
userId,
83-
snappedAt: sharedAt,
8478
snapshot: new KnowledgeElementCollection(knowledgeElements).toSnapshot(),
8579
campaignParticipationId: id,
8680
});

api/tests/integration/scripts/prod/generate-knowledge-element-snapshots-for-campaigns_test.js

+20-7
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,9 @@ describe('Integration | Scripts | generate-knowledge-element-snapshots-for-campa
3131
sharedAt: new Date('2020-01-01'),
3232
userId,
3333
});
34-
databaseBuilder.factory.buildKnowledgeElementSnapshot({ snappedAt: campaignParticipation.sharedAt, userId });
34+
databaseBuilder.factory.buildKnowledgeElementSnapshot({
35+
campaignParticipationId: campaignParticipation.id,
36+
});
3537
await databaseBuilder.commit();
3638

3739
// when
@@ -71,10 +73,23 @@ describe('Integration | Scripts | generate-knowledge-element-snapshots-for-campa
7173
sharedAt: new Date('2020-01-01'),
7274
userId,
7375
});
74-
databaseBuilder.factory.buildCampaignParticipation({ sharedAt: new Date('2020-02-01'), userId });
75-
databaseBuilder.factory.buildCampaignParticipation({ sharedAt: new Date('2020-03-01'), userId });
76-
databaseBuilder.factory.buildKnowledgeElementSnapshot({ snappedAt: new Date('2020-02-01'), userId });
77-
databaseBuilder.factory.buildKnowledgeElementSnapshot({ snappedAt: new Date('2020-03-01'), userId });
76+
77+
const firstCampaignParticiationId = databaseBuilder.factory.buildCampaignParticipation({
78+
sharedAt: new Date('2020-02-01'),
79+
userId,
80+
}).id;
81+
const secondCampaignParticiationId = databaseBuilder.factory.buildCampaignParticipation({
82+
sharedAt: new Date('2020-03-01'),
83+
userId,
84+
}).id;
85+
databaseBuilder.factory.buildKnowledgeElementSnapshot({
86+
snappedAt: new Date('2020-02-01'),
87+
campaignParticipationId: firstCampaignParticiationId,
88+
});
89+
databaseBuilder.factory.buildKnowledgeElementSnapshot({
90+
snappedAt: new Date('2020-03-01'),
91+
campaignParticipationId: secondCampaignParticiationId,
92+
});
7893
await databaseBuilder.commit();
7994

8095
// when
@@ -152,8 +167,6 @@ describe('Integration | Scripts | generate-knowledge-element-snapshots-for-campa
152167

153168
// then
154169
expect(knowledgeElementSnapshotRepositoryStub.save).to.have.been.calledWithExactly({
155-
userId: campaignParticipationData[0].userId,
156-
snappedAt: campaignParticipationData[0].sharedAt,
157170
snapshot: new KnowledgeElementCollection(expectedKnowledgeElements).toSnapshot(),
158171
campaignParticipationId: campaignParticipationData[0].id,
159172
});

0 commit comments

Comments
 (0)