From a42ae50bca0fd8c0ae46e31409811ceb2e10f782 Mon Sep 17 00:00:00 2001 From: Rotimi Best Date: Thu, 12 Mar 2026 05:31:46 +0100 Subject: [PATCH] feat: add check for existing organization members to prevent duplicates during member creation --- apps/api/src/services/account.ts | 37 +++++++++++-------- .../lib/features/tag/pages/tags-admin.svelte | 2 +- .../src/queries/organization/organization.ts | 25 +++++++++++++ packages/db/src/schema.ts | 6 ++- 4 files changed, 53 insertions(+), 17 deletions(-) diff --git a/apps/api/src/services/account.ts b/apps/api/src/services/account.ts index e60aa493..a78bd4d9 100644 --- a/apps/api/src/services/account.ts +++ b/apps/api/src/services/account.ts @@ -1,16 +1,17 @@ import { AppError, ErrorCodes } from '@api/utils/errors'; -import { getProfileByEmail, getProfileById, updateProfile } from '@cio/db/queries/auth'; -import { getLicenseStatus } from '@api/services/license'; - -import type { OrganizationWithMemberAndPlans } from '@cio/db/queries/organization/types'; -import type { TProfile } from '@cio/db/types'; import { createOrganizationMember, getFirstOrganization, - getOrganizationByProfileId + getOrganizationByProfileId, + hasOrgMemberByProfileIdOrEmail } from '@cio/db/queries/organization'; -import { env } from '@api/config/env'; +import { getProfileByEmail, getProfileById, updateProfile } from '@cio/db/queries/auth'; + +import type { OrganizationWithMemberAndPlans } from '@cio/db/queries/organization/types'; import { ROLE } from '@cio/utils/constants'; +import type { TProfile } from '@cio/db/types'; +import { env } from '@api/config/env'; +import { getLicenseStatus } from '@api/services/license'; export type GetAccountDataResult = { profile: TProfile; @@ -35,17 +36,23 @@ export async function getAccountData(userId: string): Promise {/snippet} - +
{#each TAG_COLOR_OPTIONS as color (color)}