From 3cebfe7ae5a2a07a9fcd431f7839c4eb2b925a68 Mon Sep 17 00:00:00 2001 From: Yeganathan S Date: Tue, 5 Nov 2024 19:21:59 +0530 Subject: [PATCH 1/8] fix: affiliations when work experiences are deleted --- .../src/old/apps/profiles_worker/index.ts | 33 +++++++++++++++---- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/services/libs/data-access-layer/src/old/apps/profiles_worker/index.ts b/services/libs/data-access-layer/src/old/apps/profiles_worker/index.ts index d64d2d76f9..b0f57a2f97 100644 --- a/services/libs/data-access-layer/src/old/apps/profiles_worker/index.ts +++ b/services/libs/data-access-layer/src/old/apps/profiles_worker/index.ts @@ -40,7 +40,7 @@ export async function runMemberAffiliationsUpdate( type Condition = { when: string[] - orgId: string + orgId: string | null matches: (activity: IDbActivityCreateData) => boolean } @@ -52,22 +52,41 @@ export async function runMemberAffiliationsUpdate( const manualAffiliations = await findMemberAffiliations(qx, memberId) - const memberOrganizations = await qx.select( + const allMemberOrganizations = await qx.select( ` SELECT "organizationId", "dateStart", "dateEnd", - "createdAt" + "createdAt", + "deletedAt" FROM "memberOrganizations" WHERE "memberId" = $(memberId) - AND "deletedAt" IS NULL ORDER BY "dateStart" DESC `, { memberId }, ) + // Filter valid organizations (non-soft-deleted) + const validMemberOrganizations = allMemberOrganizations.filter(org => !org.deletedAt) + + // Get all deleted organizationIds to explicitly unaffiliate their activities + const deletedOrganizationIds = _.uniq( + allMemberOrganizations + .filter(org => org.deletedAt) + .map(org => org.organizationId) + ) + const orgCases: Condition[] = [ + // Explicitly unaffiliate deleted organizations + ..._.chain(deletedOrganizationIds) + .map((orgId) => ({ + when: [`'organizationId'::text = '${orgId}'`], + matches: (activity) => activity.organizationId === orgId, + orgId: null, + })) + .value(), + ..._.chain(manualAffiliations) .sortBy('dateStart') .reverse() @@ -90,7 +109,7 @@ export async function runMemberAffiliationsUpdate( })) .value(), - ..._.chain(memberOrganizations) + ..._.chain(validMemberOrganizations) .filter((row) => !!row.dateStart) .sortBy('dateStart') .reverse() @@ -109,7 +128,7 @@ export async function runMemberAffiliationsUpdate( })) .value(), - ..._.chain(memberOrganizations) + ..._.chain(validMemberOrganizations) .filter((row) => !row.dateStart && !row.dateEnd) .sortBy('createdAt') .reverse() @@ -123,7 +142,7 @@ export async function runMemberAffiliationsUpdate( .value(), ] - const fallbackOrganizationId = _.chain(memberOrganizations) + const fallbackOrganizationId = _.chain(validMemberOrganizations) .filter((row) => !row.dateStart && !row.dateEnd) .sortBy('createdAt') .map((row) => row.organizationId) From ef8acaf7beee1a3255345cf1ff89bb0f8c100ca0 Mon Sep 17 00:00:00 2001 From: Yeganathan S Date: Tue, 5 Nov 2024 20:05:04 +0530 Subject: [PATCH 2/8] fix linter --- .../data-access-layer/src/old/apps/profiles_worker/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/libs/data-access-layer/src/old/apps/profiles_worker/index.ts b/services/libs/data-access-layer/src/old/apps/profiles_worker/index.ts index b0f57a2f97..4c44738abd 100644 --- a/services/libs/data-access-layer/src/old/apps/profiles_worker/index.ts +++ b/services/libs/data-access-layer/src/old/apps/profiles_worker/index.ts @@ -68,7 +68,7 @@ export async function runMemberAffiliationsUpdate( ) // Filter valid organizations (non-soft-deleted) - const validMemberOrganizations = allMemberOrganizations.filter(org => !org.deletedAt) + const validMemberOrganizations = allMemberOrganizations.filter((org) => !org.deletedAt) // Get all deleted organizationIds to explicitly unaffiliate their activities const deletedOrganizationIds = _.uniq( From f420a84e37e11306b212b92ae034f661d28a41a8 Mon Sep 17 00:00:00 2001 From: Yeganathan S Date: Tue, 5 Nov 2024 20:09:13 +0530 Subject: [PATCH 3/8] fix linter --- .../data-access-layer/src/old/apps/profiles_worker/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/libs/data-access-layer/src/old/apps/profiles_worker/index.ts b/services/libs/data-access-layer/src/old/apps/profiles_worker/index.ts index 4c44738abd..c8bf079401 100644 --- a/services/libs/data-access-layer/src/old/apps/profiles_worker/index.ts +++ b/services/libs/data-access-layer/src/old/apps/profiles_worker/index.ts @@ -73,8 +73,8 @@ export async function runMemberAffiliationsUpdate( // Get all deleted organizationIds to explicitly unaffiliate their activities const deletedOrganizationIds = _.uniq( allMemberOrganizations - .filter(org => org.deletedAt) - .map(org => org.organizationId) + .filter((org) => org.deletedAt) + .map((org) => org.organizationId) ) const orgCases: Condition[] = [ From 63f77cb6f7ce2348ac1a68f3f6ade1ff42bc0531 Mon Sep 17 00:00:00 2001 From: Yeganathan S Date: Tue, 5 Nov 2024 20:15:23 +0530 Subject: [PATCH 4/8] make prettier happy --- .../data-access-layer/src/old/apps/profiles_worker/index.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/services/libs/data-access-layer/src/old/apps/profiles_worker/index.ts b/services/libs/data-access-layer/src/old/apps/profiles_worker/index.ts index c8bf079401..0e4b5c287e 100644 --- a/services/libs/data-access-layer/src/old/apps/profiles_worker/index.ts +++ b/services/libs/data-access-layer/src/old/apps/profiles_worker/index.ts @@ -72,9 +72,7 @@ export async function runMemberAffiliationsUpdate( // Get all deleted organizationIds to explicitly unaffiliate their activities const deletedOrganizationIds = _.uniq( - allMemberOrganizations - .filter((org) => org.deletedAt) - .map((org) => org.organizationId) + allMemberOrganizations.filter((org) => org.deletedAt).map((org) => org.organizationId), ) const orgCases: Condition[] = [ From 67908788b53dbb2025fc2b1dca5fc5adff379e7e Mon Sep 17 00:00:00 2001 From: Yeganathan S Date: Tue, 5 Nov 2024 21:39:53 +0530 Subject: [PATCH 5/8] fix insertIfMatches --- .../src/old/apps/profiles_worker/index.ts | 43 +++++++------------ 1 file changed, 15 insertions(+), 28 deletions(-) diff --git a/services/libs/data-access-layer/src/old/apps/profiles_worker/index.ts b/services/libs/data-access-layer/src/old/apps/profiles_worker/index.ts index 0e4b5c287e..6fcb893328 100644 --- a/services/libs/data-access-layer/src/old/apps/profiles_worker/index.ts +++ b/services/libs/data-access-layer/src/old/apps/profiles_worker/index.ts @@ -52,7 +52,7 @@ export async function runMemberAffiliationsUpdate( const manualAffiliations = await findMemberAffiliations(qx, memberId) - const allMemberOrganizations = await qx.select( + const memberOrganizations = await qx.select( ` SELECT "organizationId", @@ -62,29 +62,13 @@ export async function runMemberAffiliationsUpdate( "deletedAt" FROM "memberOrganizations" WHERE "memberId" = $(memberId) + AND "deletedAt" IS NULL ORDER BY "dateStart" DESC `, { memberId }, ) - // Filter valid organizations (non-soft-deleted) - const validMemberOrganizations = allMemberOrganizations.filter((org) => !org.deletedAt) - - // Get all deleted organizationIds to explicitly unaffiliate their activities - const deletedOrganizationIds = _.uniq( - allMemberOrganizations.filter((org) => org.deletedAt).map((org) => org.organizationId), - ) - const orgCases: Condition[] = [ - // Explicitly unaffiliate deleted organizations - ..._.chain(deletedOrganizationIds) - .map((orgId) => ({ - when: [`'organizationId'::text = '${orgId}'`], - matches: (activity) => activity.organizationId === orgId, - orgId: null, - })) - .value(), - ..._.chain(manualAffiliations) .sortBy('dateStart') .reverse() @@ -107,7 +91,7 @@ export async function runMemberAffiliationsUpdate( })) .value(), - ..._.chain(validMemberOrganizations) + ..._.chain(memberOrganizations) .filter((row) => !!row.dateStart) .sortBy('dateStart') .reverse() @@ -126,7 +110,7 @@ export async function runMemberAffiliationsUpdate( })) .value(), - ..._.chain(validMemberOrganizations) + ..._.chain(memberOrganizations) .filter((row) => !row.dateStart && !row.dateEnd) .sortBy('createdAt') .reverse() @@ -140,7 +124,7 @@ export async function runMemberAffiliationsUpdate( .value(), ] - const fallbackOrganizationId = _.chain(validMemberOrganizations) + const fallbackOrganizationId = _.chain(memberOrganizations) .filter((row) => !row.dateStart && !row.dateEnd) .sortBy('createdAt') .map((row) => row.organizationId) @@ -160,15 +144,18 @@ export async function runMemberAffiliationsUpdate( } async function insertIfMatches(activity: IDbActivityCreateData) { - for (const condition of orgCases) { - if (!condition.matches(activity)) { - continue + activity.organizationId = null + + if (orgCases.length > 0) { + for (const condition of orgCases) { + if (condition.matches(activity)) { + activity.organizationId = condition.orgId + break + } } - - activity.organizationId = condition.orgId - await insertActivities([activity]) - return } + + await insertActivities([activity]) } const qs = new QueryStream( From 8fea1a819593efd41e514ed892e8488fba0352a3 Mon Sep 17 00:00:00 2001 From: Yeganathan S Date: Tue, 5 Nov 2024 22:25:38 +0530 Subject: [PATCH 6/8] revert unnecessary --- .../data-access-layer/src/old/apps/profiles_worker/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/libs/data-access-layer/src/old/apps/profiles_worker/index.ts b/services/libs/data-access-layer/src/old/apps/profiles_worker/index.ts index 6fcb893328..19dae6605d 100644 --- a/services/libs/data-access-layer/src/old/apps/profiles_worker/index.ts +++ b/services/libs/data-access-layer/src/old/apps/profiles_worker/index.ts @@ -62,7 +62,7 @@ export async function runMemberAffiliationsUpdate( "deletedAt" FROM "memberOrganizations" WHERE "memberId" = $(memberId) - AND "deletedAt" IS NULL + AND "deletedAt" IS NULL ORDER BY "dateStart" DESC `, { memberId }, From 1c282b6d4058856705485b8340ad15e7e6ed0cb4 Mon Sep 17 00:00:00 2001 From: Yeganathan S Date: Tue, 5 Nov 2024 22:26:42 +0530 Subject: [PATCH 7/8] revert unnecessary --- .../data-access-layer/src/old/apps/profiles_worker/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/libs/data-access-layer/src/old/apps/profiles_worker/index.ts b/services/libs/data-access-layer/src/old/apps/profiles_worker/index.ts index 19dae6605d..1c19a244bb 100644 --- a/services/libs/data-access-layer/src/old/apps/profiles_worker/index.ts +++ b/services/libs/data-access-layer/src/old/apps/profiles_worker/index.ts @@ -40,7 +40,7 @@ export async function runMemberAffiliationsUpdate( type Condition = { when: string[] - orgId: string | null + orgId: string matches: (activity: IDbActivityCreateData) => boolean } From 834c4b65ddd0f23eb41b32890835c379a30690a3 Mon Sep 17 00:00:00 2001 From: Yeganathan S Date: Tue, 5 Nov 2024 22:27:58 +0530 Subject: [PATCH 8/8] revert unnecessary --- .../data-access-layer/src/old/apps/profiles_worker/index.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/services/libs/data-access-layer/src/old/apps/profiles_worker/index.ts b/services/libs/data-access-layer/src/old/apps/profiles_worker/index.ts index 1c19a244bb..4a702588f1 100644 --- a/services/libs/data-access-layer/src/old/apps/profiles_worker/index.ts +++ b/services/libs/data-access-layer/src/old/apps/profiles_worker/index.ts @@ -58,8 +58,7 @@ export async function runMemberAffiliationsUpdate( "organizationId", "dateStart", "dateEnd", - "createdAt", - "deletedAt" + "createdAt" FROM "memberOrganizations" WHERE "memberId" = $(memberId) AND "deletedAt" IS NULL