(email: string)
| 4 | const prisma = new PrismaClient(); |
| 5 | |
| 6 | export 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 | }; |
no outgoing calls
no test coverage detected