feat(cloud): partner integration (#493)

* feat: add partnerLicenseKey and partnerTier to subscription schema

* feat: add repo funcs

* feat: set up partner webhook handler
This commit is contained in:
Henry
2026-05-12 22:39:07 +01:00
committed by GitHub
parent 4459fbb4b2
commit 60d8e1bd83
10 changed files with 4588 additions and 20 deletions

View File

@@ -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;
};