From cae1df4b46ff81d420d7a94d957367376d4e7061 Mon Sep 17 00:00:00 2001 From: Steph0 Date: Thu, 25 Apr 2024 17:12:06 +0200 Subject: [PATCH 1/2] :sparkles: api: add type column to certification subscriptions --- ...mn-to-certification-subscriptions-table.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 api/db/migrations/20240425162400_add-type-column-to-certification-subscriptions-table.js diff --git a/api/db/migrations/20240425162400_add-type-column-to-certification-subscriptions-table.js b/api/db/migrations/20240425162400_add-type-column-to-certification-subscriptions-table.js new file mode 100644 index 00000000000..8e5f8941e0d --- /dev/null +++ b/api/db/migrations/20240425162400_add-type-column-to-certification-subscriptions-table.js @@ -0,0 +1,19 @@ +const up = async function (knex) { + await knex.schema.table('complementary-certification-subscriptions', function (table) { + table.text('type').notNull().defaultTo('COMPLEMENTARY'); + }); + + await knex.schema.dropView('certification-subscriptions'); + return knex.schema.createView('certification-subscriptions', function (view) { + view.as(knex('complementary-certification-subscriptions')); + }); +}; + +const down = async function (knex) { + await knex.schema.dropView('certification-subscriptions'); + return knex.schema.createView('certification-subscriptions', function (view) { + view.as(knex('complementary-certification-subscriptions')); + }); +}; + +export { down, up }; From c89e2090b8682dce58ee8a3e343dd7e70de39681 Mon Sep 17 00:00:00 2001 From: Steph0 Date: Thu, 25 Apr 2024 17:33:12 +0200 Subject: [PATCH 2/2] :sparkles: api: add new COMPLEMENTARY type to database inserts --- ...uild-complementary-certification-subscription.js | 13 +++++++------ .../certification-candidate-repository.js | 2 ++ .../shared/domain/models/SubscriptionTypes.js | 8 ++++++++ 3 files changed, 17 insertions(+), 6 deletions(-) create mode 100644 api/src/certification/shared/domain/models/SubscriptionTypes.js diff --git a/api/db/database-builder/factory/build-complementary-certification-subscription.js b/api/db/database-builder/factory/build-complementary-certification-subscription.js index 28a1d634f0b..5ac5143516b 100644 --- a/api/db/database-builder/factory/build-complementary-certification-subscription.js +++ b/api/db/database-builder/factory/build-complementary-certification-subscription.js @@ -1,5 +1,6 @@ import _ from 'lodash'; +import { SubscriptionTypes } from '../../../src/certification/shared/domain/models/SubscriptionTypes.js'; import { databaseBuffer } from '../database-buffer.js'; import { buildCertificationCandidate } from './build-certification-candidate.js'; import { buildComplementaryCertification } from './build-complementary-certification.js'; @@ -16,14 +17,14 @@ const buildComplementaryCertificationSubscription = function ({ ? buildComplementaryCertification().id : complementaryCertificationId; - const values = { - certificationCandidateId, - complementaryCertificationId, - createdAt, - }; return databaseBuffer.pushInsertable({ tableName: 'certification-subscriptions', - values, + values: { + certificationCandidateId, + complementaryCertificationId, + createdAt, + type: SubscriptionTypes.COMPLEMENTARY, + }, }); }; diff --git a/api/src/certification/session/infrastructure/repositories/certification-candidate-repository.js b/api/src/certification/session/infrastructure/repositories/certification-candidate-repository.js index 277b7f9f298..c29cc842c95 100644 --- a/api/src/certification/session/infrastructure/repositories/certification-candidate-repository.js +++ b/api/src/certification/session/infrastructure/repositories/certification-candidate-repository.js @@ -14,6 +14,7 @@ import * as bookshelfToDomainConverter from '../../../../../lib/infrastructure/u import { logger } from '../../../../shared/infrastructure/utils/logger.js'; import { normalize } from '../../../../shared/infrastructure/utils/string-utils.js'; import { ComplementaryCertification } from '../../../complementary-certification/domain/models/ComplementaryCertification.js'; +import { SubscriptionTypes } from '../../../shared/domain/models/SubscriptionTypes.js'; const linkToUser = async function ({ id, userId }) { try { @@ -53,6 +54,7 @@ const saveInSession = async function ({ const complementaryCertificationSubscriptionToSave = { complementaryCertificationId: certificationCandidate.complementaryCertification.id, certificationCandidateId: addedCertificationCandidate.id, + type: SubscriptionTypes.COMPLEMENTARY, }; const insertComplementaryCertificationSubscriptionQuery = knex('certification-subscriptions').insert( diff --git a/api/src/certification/shared/domain/models/SubscriptionTypes.js b/api/src/certification/shared/domain/models/SubscriptionTypes.js new file mode 100644 index 00000000000..bbc8ce88296 --- /dev/null +++ b/api/src/certification/shared/domain/models/SubscriptionTypes.js @@ -0,0 +1,8 @@ +/** + * Types of certification subscriptions + * @readonly + * @enum {string} + */ +export const SubscriptionTypes = Object.freeze({ + COMPLEMENTARY: 'COMPLEMENTARY', +});