33 lines
931 B
TypeScript
33 lines
931 B
TypeScript
import { db } from "@/db/db";
|
|
import { and, desc, eq, isNull, or } from "drizzle-orm";
|
|
import { subscriptionStatusTable } from "@/db/schema";
|
|
import { APIKeyUserType } from "@/server/APIKeyBodyRequest";
|
|
import { auth } from "@clerk/nextjs";
|
|
|
|
export async function getCurrentPlanWithAuth() {
|
|
const { userId, orgId } = auth();
|
|
|
|
const sub = await getCurrentPlan({
|
|
org_id: orgId,
|
|
user_id: userId,
|
|
});
|
|
|
|
return sub;
|
|
}
|
|
|
|
export async function getCurrentPlan({ user_id, org_id }: APIKeyUserType) {
|
|
if (!user_id) throw new Error("No user id");
|
|
|
|
const sub = await db.query.subscriptionStatusTable.findFirst({
|
|
where: and(
|
|
eq(subscriptionStatusTable.user_id, user_id),
|
|
org_id
|
|
? eq(subscriptionStatusTable.org_id, org_id)
|
|
: or(isNull(subscriptionStatusTable.org_id), eq(subscriptionStatusTable.org_id, "")),
|
|
),
|
|
orderBy: desc(subscriptionStatusTable.created_at),
|
|
});
|
|
|
|
return sub;
|
|
}
|