Skip to content
Merged
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ export async function runMemberAffiliationsUpdate(

type Condition = {
when: string[]
orgId: string
orgId: string | null
matches: (activity: IDbActivityCreateData) => boolean
}

Expand All @@ -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()
Expand All @@ -90,7 +109,7 @@ export async function runMemberAffiliationsUpdate(
}))
.value(),

..._.chain(memberOrganizations)
..._.chain(validMemberOrganizations)
.filter((row) => !!row.dateStart)
.sortBy('dateStart')
.reverse()
Expand All @@ -109,7 +128,7 @@ export async function runMemberAffiliationsUpdate(
}))
.value(),

..._.chain(memberOrganizations)
..._.chain(validMemberOrganizations)
.filter((row) => !row.dateStart && !row.dateEnd)
.sortBy('createdAt')
.reverse()
Expand All @@ -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)
Expand Down