Skip to content

Commit

Permalink
refactor(api): use transaction on usecase
Browse files Browse the repository at this point in the history
  • Loading branch information
xav-car committed Mar 6, 2025
1 parent 2d57567 commit afbb016
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 9 deletions.
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
import { knex } from '../../../../db/knex-database-connection.js';
import { DomainTransaction } from '../../../../src/shared/domain/DomainTransaction.js';
import { StageCollection } from '../../../../src/shared/domain/models/user-campaign-results/StageCollection.js';
import * as skillRepository from '../../../../src/shared/infrastructure/repositories/skill-repository.js';
const MAX_STAGE_THRESHOLD = 100;

const findStageCollection = async function ({ campaignId }) {
const stages = await knex('stages')
const knexConn = DomainTransaction.getConnection();

const stages = await knexConn('stages')
.select('stages.*')
.join('campaigns', 'campaigns.targetProfileId', 'stages.targetProfileId')
.where('campaigns.id', campaignId)
Expand Down Expand Up @@ -44,5 +46,7 @@ async function _findSkills({ campaignId }) {
}

function _findSkillIds({ campaignId }) {
return knex('campaign_skills').where({ campaignId }).pluck('skillId');
const knexConn = DomainTransaction.getConnection();

return knexConn('campaign_skills').where({ campaignId }).pluck('skillId');
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { withTransaction } from '../../../../shared/domain/DomainTransaction.js';
import { UserNotAuthorizedToAccessEntityError } from '../../../../shared/domain/errors.js';

const getCampaignAssessmentParticipation = async function ({
const getCampaignAssessmentParticipation = withTransaction(async function ({
userId,
campaignId,
campaignParticipationId,
Expand Down Expand Up @@ -34,6 +35,6 @@ const getCampaignAssessmentParticipation = async function ({
campaignAssessmentParticipation.setStageInfo(reachedStage);

return campaignAssessmentParticipation;
};
});

export { getCampaignAssessmentParticipation };
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import _ from 'lodash';

import { knex } from '../../../../../db/knex-database-connection.js';
import { DomainTransaction } from '../../../../shared/domain/DomainTransaction.js';
import { NotFoundError } from '../../../../shared/domain/errors.js';
import { Assessment } from '../../../../shared/domain/models/Assessment.js';
import * as knowledgeElementRepository from '../../../../shared/infrastructure/repositories/knowledge-element-repository.js';
Expand All @@ -16,7 +17,8 @@ const getByCampaignIdAndCampaignParticipationId = async function ({ campaignId,
export { getByCampaignIdAndCampaignParticipationId };

async function _fetchCampaignAssessmentAttributesFromCampaignParticipation(campaignId, campaignParticipationId) {
const [campaignAssessmentParticipation] = await knex
const knexConn = DomainTransaction.getConnection();
const [campaignAssessmentParticipation] = await knexConn
.with('campaignAssessmentParticipation', (qb) => {
qb.select([
'campaign-participations.userId',
Expand All @@ -43,6 +45,7 @@ async function _fetchCampaignAssessmentAttributesFromCampaignParticipation(campa
)
.where({
'campaign-participations.id': campaignParticipationId,
'campaign-participations.campaignId': campaignId,
'campaign-participations.deletedAt': null,
});
})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,13 @@ const getByCode = async function (code) {
};

const get = async function (id) {
const campaign = await knex('campaigns').where({ id }).first();
const knexConn = DomainTransaction.getConnection();

const campaign = await knexConn('campaigns').where({ id }).first();
if (!campaign) {
throw new NotFoundError(`Not found campaign for ID ${id}`);
}
const featureExternalId = await knex('campaign-features')
const featureExternalId = await knexConn('campaign-features')
.join('features', 'features.id', 'featureId')
.where({
campaignId: id,
Expand All @@ -49,7 +51,9 @@ const get = async function (id) {
};

const checkIfUserOrganizationHasAccessToCampaign = async function (campaignId, userId) {
const campaign = await knex('campaigns')
const knexConn = DomainTransaction.getConnection();

const campaign = await knexConn('campaigns')
.innerJoin('memberships', 'memberships.organizationId', 'campaigns.organizationId')
.innerJoin('organizations', 'organizations.id', 'campaigns.organizationId')
.where({ 'campaigns.id': campaignId, 'memberships.userId': userId, 'memberships.disabledAt': null })
Expand Down

0 comments on commit afbb016

Please sign in to comment.