Skip to content

Commit 948145b

Browse files
feat?(api): create internal targetProfileApi
1 parent 142232f commit 948145b

File tree

9 files changed

+31
-9
lines changed

9 files changed

+31
-9
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const getTargetProfile = async function ({ campaignId, targetProfileRepository }) {
2-
return targetProfileRepository.getByCampaignId(campaignId);
2+
return targetProfileRepository.getByCampaignId({ campaignId });
33
};
44

55
export { getTargetProfile };

api/src/prescription/campaign/domain/usecases/index.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ import * as divisionRepository from '../../infrastructure/repositories/division-
3535
import * as groupRepository from '../../infrastructure/repositories/group-repository.js';
3636
import { repositories as campaignRepositories } from '../../infrastructure/repositories/index.js';
3737
import * as knowledgeElementSnapshotRepository from '../../infrastructure/repositories/knowledge-element-snapshot-repository.js';
38-
import * as targetProfileRepository from '../../infrastructure/repositories/target-profile-repository.js';
3938
import * as campaignMediaComplianceService from '../services/campaign-media-compliance-service.js';
4039
import * as campaignUpdateValidator from '../validators/campaign-update-validator.js';
4140

@@ -109,7 +108,7 @@ const dependencies = {
109108
organizationRepository,
110109
placementProfileService,
111110
stageCollectionRepository,
112-
targetProfileRepository, // TODO
111+
targetProfileRepository: campaignRepositories.targetProfileRepository, // TODO
113112
tutorialRepository,
114113
userRepository,
115114
campaignMediaComplianceService,

api/src/prescription/campaign/domain/usecases/start-writing-campaign-assessment-results-to-stream.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ const startWritingCampaignAssessmentResultsToStream = async function ({
6060
throw new CampaignTypeError();
6161
}
6262

63-
const targetProfile = await targetProfileRepository.getByCampaignId(campaign.id);
63+
const targetProfile = await targetProfileRepository.getByCampaignId({ campaignId: campaign.id });
6464
const learningContent = await learningContentRepository.findByCampaignId(campaign.id, i18n.getLocale());
6565
const stageCollection = await stageCollectionRepository.findStageCollection({ campaignId });
6666

api/src/prescription/campaign/infrastructure/repositories/index.js

+4
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,21 @@
11
import * as organizationFeatureAPI from '../../../../organizational-entities/application/api/organization-features-api.js';
22
import { injectDependencies } from '../../../../shared/infrastructure/utils/dependency-injection.js';
33
import * as organizationApi from '../../../../team/application/api/organization.js';
4+
import * as targetProfileApi from '../../../target-profile/application/api/target-profile-api.js';
45
import * as campaignToJoinRepository from './campaign-to-join-repository.js';
56
import * as organizationMembershipRepository from './organization-membership-repository.js';
7+
import * as targetProfileRepository from './target-profile-repository.js';
68

79
const repositoriesWithoutInjectedDependencies = {
810
campaignToJoinRepository,
911
organizationMembershipRepository,
12+
targetProfileRepository,
1013
};
1114

1215
const dependencies = {
1316
organizationApi,
1417
organizationFeatureAPI,
18+
targetProfileApi,
1519
};
1620

1721
const repositories = injectDependencies(repositoriesWithoutInjectedDependencies, dependencies);

api/src/prescription/campaign/infrastructure/repositories/target-profile-repository.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@ import { knex } from '../../../../../db/knex-database-connection.js';
22
import { Badge } from '../../../../evaluation/domain/models/Badge.js';
33
import { TargetProfile } from '../../../../shared/domain/models/index.js';
44

5-
const getByCampaignId = async function (campaignId) {
5+
const getByCampaignId = async function ({ campaignId, targetProfileApi }) {
66
const { targetProfileId } = await knex('campaigns').select('targetProfileId').where({ id: campaignId }).first();
77

8-
const targetProfile = await knex('target-profiles').where({ id: targetProfileId }).first();
8+
const targetProfile = await targetProfileApi.getById(targetProfileId);
9+
910
const badges = await knex('badges').where('targetProfileId', targetProfileId);
1011

1112
return new TargetProfile({ ...targetProfile, badges: badges.map((badge) => new Badge(badge)) });

api/src/prescription/target-profile/application/api/target-profile-api.js

+13
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,19 @@ export const getByIdForAdmin = async (id) => {
3232
return new TargetProfile(targetProfileForAdmin);
3333
};
3434

35+
/**
36+
* @function
37+
* @name getById
38+
*
39+
* @param {number} id
40+
* @returns {Promise<TargetProfile>}
41+
*/
42+
export const getById = async (id) => {
43+
const targetProfile = await usecases.getTargetProfile({ targetProfileId: id });
44+
45+
return new TargetProfile(targetProfile);
46+
};
47+
3548
/**
3649
* @function
3750
* @name findSkillByTargetProfileIds
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
const getTargetProfile = async function ({ targetProfileId, targetProfileRepository }) {
2+
return targetProfileRepository.get(targetProfileId);
3+
};
4+
5+
export { getTargetProfile };

api/tests/prescription/campaign/integration/infrastructure/repositories/target-profile-repository_test.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import * as targetProfileRepository from '../../../../../../src/prescription/campaign/infrastructure/repositories/target-profile-repository.js';
1+
import { repositories } from '../../../../../../src/prescription/campaign/infrastructure/repositories/index.js';
22
import { databaseBuilder, expect } from '../../../../../test-helper.js';
33

44
describe('Integration | Repository | Target-profile', function () {
@@ -18,7 +18,7 @@ describe('Integration | Repository | Target-profile', function () {
1818

1919
it('should return the target profile matching the campaign id', async function () {
2020
// when
21-
const targetProfile = await targetProfileRepository.getByCampaignId(campaignId);
21+
const targetProfile = await repositories.targetProfileRepository.getByCampaignId({ campaignId });
2222

2323
// then
2424
expect(targetProfile.id).to.equal(targetProfileId);

api/tests/prescription/campaign/unit/domain/usecases/get-target-profile_test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ describe('Unit | UseCase | get-target-profile', function () {
99
};
1010
const campaignId = 123;
1111
const targetProfile = Symbol('targetProfile');
12-
targetProfileRepository.getByCampaignId.withArgs(campaignId).resolves(targetProfile);
12+
targetProfileRepository.getByCampaignId.withArgs({ campaignId }).resolves(targetProfile);
1313

1414
// when
1515
const result = await getTargetProfile({

0 commit comments

Comments
 (0)