MCPcopy Index your code
hub / github.com/sqlchat/sqlchat / getSubscriptionByEmail

Function getSubscriptionByEmail

src/pages/api/utils/subscription.ts:6–47  ·  view source on GitHub ↗
(email: string)

Source from the content-addressed store, hash-verified

4const prisma = new PrismaClient();
5
6export const getSubscriptionByEmail = async (email: string): Promise<Subscription> => {
7 const subscriptions = await prisma.subscription.findMany({
8 where: { email: email },
9 orderBy: { expireAt: "desc" },
10 });
11
12 // Return the latest active subscription if exists.
13 for (const subscription of subscriptions) {
14 const result: Subscription = {
15 id: subscription.id,
16 plan: subscription.plan as PlanType,
17 quota: PlanConfig[subscription.plan].quota,
18 startAt: subscription.startAt.getTime(),
19 expireAt: subscription.expireAt.getTime(),
20 canceledAt: subscription.canceledAt?.getTime(),
21 };
22 if (!result.canceledAt && result.expireAt > Date.now()) {
23 return result;
24 }
25 }
26
27 // Return the latest subscripion if exists.
28 for (const subscription of subscriptions) {
29 return {
30 id: subscription.id,
31 plan: subscription.plan as PlanType,
32 quota: PlanConfig["FREE"].quota,
33 startAt: subscription.startAt.getTime(),
34 expireAt: subscription.expireAt.getTime(),
35 canceledAt: subscription.canceledAt?.getTime(),
36 };
37 }
38
39 // Return a FREE subscription.
40 return {
41 id: "",
42 plan: "FREE",
43 quota: PlanConfig["FREE"].quota,
44 startAt: 0,
45 expireAt: 0,
46 };
47};

Callers 3

handlerFunction · 0.90
sessionFunction · 0.90
webhookHandlerFunction · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected