From 9837ddd8afd67cbe01a518ec3c90e166d4c098a8 Mon Sep 17 00:00:00 2001 From: Henry Date: Tue, 12 May 2026 21:56:28 +0100 Subject: [PATCH] feat: add repo funcs --- .../db/src/repository/subscription.repo.ts | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/packages/db/src/repository/subscription.repo.ts b/packages/db/src/repository/subscription.repo.ts index 07394d17..021382c8 100644 --- a/packages/db/src/repository/subscription.repo.ts +++ b/packages/db/src/repository/subscription.repo.ts @@ -7,6 +7,7 @@ export const updateById = async ( db: dbClient, subscriptionId: number, updates: { + plan?: string; unlimitedSeats?: boolean; status?: string; seats?: number | null; @@ -89,3 +90,47 @@ export const create = async ( const [result] = await db.insert(subscription).values(data).returning(); return result; }; + +export const getByPartnerLicenseKey = async ( + db: dbClient, + partnerLicenseKey: string, +) => { + const result = await db.query.subscription.findFirst({ + where: eq(subscription.partnerLicenseKey, partnerLicenseKey), + }); + return result; +}; + +export const upsertByPartnerLicenseKey = async ( + db: dbClient, + partnerLicenseKey: string, + data: { + plan: string; + status: string; + partnerTier: number; + seats: number | null; + unlimitedSeats: boolean; + referenceId?: string; + }, +) => { + const existing = await getByPartnerLicenseKey(db, partnerLicenseKey); + + if (existing) { + const [result] = await db + .update(subscription) + .set({ ...data, updatedAt: new Date() }) + .where(eq(subscription.partnerLicenseKey, partnerLicenseKey)) + .returning(); + return result; + } + + const [result] = await db + .insert(subscription) + .values({ + partnerLicenseKey, + ...data, + referenceId: data.referenceId ?? null, + }) + .returning(); + return result; +};