Skip to content

Commit c9fb9e3

Browse files
[TECH] Pix 17139/refactor application transaction
#11776
2 parents 10e5285 + 16b97be commit c9fb9e3

File tree

8 files changed

+12
-190
lines changed

8 files changed

+12
-190
lines changed

api/src/prescription/campaign-participation/application/learner-participation-controller.js

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { DomainTransaction } from '../../../shared/domain/DomainTransaction.js';
22
import { monitoringTools } from '../../../shared/infrastructure/monitoring-tools.js';
33
import * as requestResponseUtils from '../../../shared/infrastructure/utils/request-response-utils.js';
4-
import { ApplicationTransaction } from '../../shared/infrastructure/ApplicationTransaction.js';
54
import { usecases } from '../domain/usecases/index.js';
65
import * as campaignParticipationSerializer from '../infrastructure/serializers/jsonapi/campaign-participation-serializer.js';
76
import * as sharedProfileForCampaignSerializer from '../infrastructure/serializers/jsonapi/shared-profile-for-campaign-serializer.js';
@@ -21,14 +20,13 @@ const shareCampaignResult = async function (request, _) {
2120
const userId = request.auth.credentials.userId;
2221
const campaignParticipationId = request.params.campaignParticipationId;
2322

24-
await ApplicationTransaction.execute(async () => {
23+
return DomainTransaction.execute(async () => {
2524
await usecases.shareCampaignResult({
2625
userId,
2726
campaignParticipationId,
2827
});
28+
return null;
2929
});
30-
31-
return null;
3230
};
3331

3432
const beginImprovement = async function (request) {

api/src/prescription/campaign/application/campaign-adminstration-controller.js

+4-3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import _ from 'lodash';
22

33
import { usecases } from '../../../../src/prescription/campaign/domain/usecases/index.js';
44
import * as checkAdminMemberHasRoleSuperAdminUseCase from '../../../shared/application/usecases/checkAdminMemberHasRoleSuperAdmin.js';
5+
import { DomainTransaction } from '../../../shared/domain/DomainTransaction.js';
56
import * as csvSerializer from '../../../shared/infrastructure/serializers/csv/csv-serializer.js';
67
import * as requestResponseUtils from '../../../shared/infrastructure/utils/request-response-utils.js';
78
import { extractUserIdFromRequest } from '../../../shared/infrastructure/utils/request-response-utils.js';
@@ -138,9 +139,9 @@ const deleteCampaigns = async function (request, h) {
138139
const userId = extractUserIdFromRequest(request);
139140
const { organizationId } = request.params;
140141
const campaignIds = request.deserializedPayload.map(({ id }) => id);
141-
142-
await usecases.deleteCampaigns({ userId, organizationId, campaignIds });
143-
142+
await DomainTransaction.execute(async () => {
143+
await usecases.deleteCampaigns({ userId, organizationId, campaignIds });
144+
});
144145
return h.response(null).code(204);
145146
};
146147

api/src/prescription/campaign/infrastructure/repositories/campaign-administration-repository.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ import _ from 'lodash';
22

33
import { knex } from '../../../../../db/knex-database-connection.js';
44
import { CAMPAIGN_FEATURES } from '../../../../shared/domain/constants.js';
5+
import { DomainTransaction } from '../../../../shared/domain/DomainTransaction.js';
56
import { cryptoService } from '../../../../shared/domain/services/crypto-service.js';
67
import * as skillRepository from '../../../../shared/infrastructure/repositories/skill-repository.js';
7-
import { ApplicationTransaction } from '../../../shared/infrastructure/ApplicationTransaction.js';
88
import { UnknownCampaignId } from '../../domain/errors.js';
99
import { Campaign } from '../../domain/models/Campaign.js';
1010

@@ -31,7 +31,7 @@ const CAMPAIGN_ATTRIBUTES = [
3131
];
3232

3333
const getByIds = async (ids) => {
34-
const knexConn = ApplicationTransaction.getConnection();
34+
const knexConn = DomainTransaction.getConnection();
3535
const campaigns = await knexConn('campaigns').whereIn('id', ids);
3636

3737
if (campaigns.length === 0) return null;
@@ -64,7 +64,7 @@ const get = async function (id) {
6464
};
6565

6666
const update = async function (campaign) {
67-
const knexConn = ApplicationTransaction.getConnection();
67+
const knexConn = DomainTransaction.getConnection();
6868
const [editedCampaign] = await knexConn('campaigns')
6969
.where({ id: campaign.id })
7070
.update(_.pick(campaign, CAMPAIGN_ATTRIBUTES))

api/src/prescription/learner-management/infrastructure/repositories/organization-learner-import-format-repository.js

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
import { ORGANIZATION_FEATURE } from '../../../../shared/domain/constants.js';
22
import { DomainTransaction } from '../../../../shared/domain/DomainTransaction.js';
3-
import { ApplicationTransaction } from '../../../shared/infrastructure/ApplicationTransaction.js';
43
import { OrganizationLearnerImportFormat } from '../../domain/models/OrganizationLearnerImportFormat.js';
54

65
function _toDomain(data) {
76
return new OrganizationLearnerImportFormat(data);
87
}
98

109
const get = async function (organizationId) {
11-
const knex = ApplicationTransaction.getConnection();
12-
10+
const knex = DomainTransaction.getConnection();
1311
const configResult = await knex('organization-features')
1412
.select('params')
1513
.join('features', function () {

api/src/prescription/shared/infrastructure/ApplicationTransaction.js

-45
This file was deleted.

api/tests/prescription/campaign-participation/unit/application/learner-participation-controller_test.js

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { learnerParticipationController } from '../../../../../src/prescription/campaign-participation/application/learner-participation-controller.js';
22
import { usecases } from '../../../../../src/prescription/campaign-participation/domain/usecases/index.js';
3-
import { ApplicationTransaction } from '../../../../../src/prescription/shared/infrastructure/ApplicationTransaction.js';
43
import { DomainTransaction } from '../../../../../src/shared/domain/DomainTransaction.js';
54
import { domainBuilder, expect, hFake, sinon } from '../../../../test-helper.js';
65

@@ -25,10 +24,10 @@ describe('Unit | Application | Controller | Learner-Participation', function ()
2524
},
2625
};
2726
sinon.stub(usecases, 'shareCampaignResult');
28-
sinon.stub(ApplicationTransaction, 'execute').callsFake((callback) => {
27+
sinon.stub(DomainTransaction, 'execute').callsFake((callback) => {
2928
return callback();
3029
});
31-
sinon.stub(ApplicationTransaction, 'getTransactionAsDomainTransaction');
30+
sinon.stub(DomainTransaction, 'getConnection');
3231
});
3332

3433
it('should call the usecase to share campaign result', async function () {

api/tests/prescription/learner-management/unit/application/sco-organization-management-controller_test.js

-8
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import fs from 'node:fs/promises';
33
import { scoOrganizationManagementController } from '../../../../../src/prescription/learner-management/application/sco-organization-management-controller.js';
44
import { usecases } from '../../../../../src/prescription/learner-management/domain/usecases/index.js';
55
import { OrganizationLearnerParser } from '../../../../../src/prescription/learner-management/infrastructure/serializers/csv/organization-learner-parser.js';
6-
import { ApplicationTransaction } from '../../../../../src/prescription/shared/infrastructure/ApplicationTransaction.js';
76
import { FileValidationError } from '../../../../../src/shared/domain/errors.js';
87
import { catchErr, expect, hFake, sinon } from '../../../../test-helper.js';
98

@@ -14,7 +13,6 @@ describe('Unit | Application | Organizations | organization-controller', functio
1413
const payload = { path: 'path-to-file' };
1514
const format = 'xml';
1615
let dependencies;
17-
let domainTransaction;
1816

1917
const request = {
2018
auth: { credentials: { userId: connectedUserId } },
@@ -27,12 +25,6 @@ describe('Unit | Application | Organizations | organization-controller', functio
2725
sinon.stub(fs, 'unlink').resolves();
2826
sinon.stub(usecases, 'uploadSiecleFile');
2927
sinon.stub(usecases, 'uploadCsvFile');
30-
sinon.stub(ApplicationTransaction, 'execute');
31-
sinon.stub(ApplicationTransaction, 'getTransactionAsDomainTransaction');
32-
33-
domainTransaction = Symbol('domainTransaction');
34-
ApplicationTransaction.execute.callsFake((callback) => callback());
35-
ApplicationTransaction.getTransactionAsDomainTransaction.returns(domainTransaction);
3628

3729
usecases.uploadSiecleFile.resolves();
3830
dependencies = { logErrorWithCorrelationIds: sinon.stub(), logWarnWithCorrelationIds: sinon.stub() };

api/tests/prescription/shared/unit/infrastructure/application-transaction_test.js

-121
This file was deleted.

0 commit comments

Comments
 (0)