From 9d475bf8ec594b9b3a8f426fc564899d5e22bc3e Mon Sep 17 00:00:00 2001 From: Emily Date: Mon, 3 Jun 2024 22:18:37 +0200 Subject: [PATCH] adding payments --- shared/data/PREMIUM_LIMITS.ts | 35 ++++++++++++++++++++++++++++++++++ shared/schema/ProjectSchema.ts | 2 ++ 2 files changed, 37 insertions(+) diff --git a/shared/data/PREMIUM_LIMITS.ts b/shared/data/PREMIUM_LIMITS.ts index 26e8a33..b652fde 100644 --- a/shared/data/PREMIUM_LIMITS.ts +++ b/shared/data/PREMIUM_LIMITS.ts @@ -15,6 +15,11 @@ export function getPlanFromPremiumType(premium_type?: number) { return plan; } +export function getPlanFromPremiumTag(tag: PREMIUM_PLAN_TAG) { + const plan = PREMIUM_PLANS.find(e => e.tag === tag); + return plan; +} + export type PREMIUM_PLAN_TAG = typeof PREMIUM_PLANS[number]['tag']; export type PROJECT_LIMIT = { @@ -43,4 +48,34 @@ export const PREMIUM_LIMITS: Record = { COUNT_LIMIT: 10_000_000, AI_MESSAGE_LIMIT: 100_000 } +} + + +export type STRIPE_PLAN = { + price: string +} + +export const STRIPE_PLANS: Record = { + FREE: { + price: 'price_1PNbHYB2lPUiVs9VZP32xglF' + }, + PLAN_1: { + price: 'price_1PNZjVB2lPUiVs9VrsTbJL04' + }, + PLAN_2: { + price: '' + }, + PLAN_3: { + price: '' + }, + PLAN_99: { + price: '' + } +} + +export function getPlanTagFromStripePrice(price: string): PREMIUM_PLAN_TAG | undefined { + for (const plan of PREMIUM_PLANS.map(e => e.tag)) { + const stripePrice = STRIPE_PLANS[plan].price; + if (stripePrice === price) return plan; + } } \ No newline at end of file diff --git a/shared/schema/ProjectSchema.ts b/shared/schema/ProjectSchema.ts index d3e9bc6..d1151e9 100644 --- a/shared/schema/ProjectSchema.ts +++ b/shared/schema/ProjectSchema.ts @@ -6,6 +6,7 @@ export type TProject = { name: string, premium: boolean, premium_type?: number, + customer_id?: string, premium_expire_at: Date, created_at: Date } @@ -15,6 +16,7 @@ const ProjectSchema = new Schema({ name: { type: String, required: true }, premium: { type: Boolean, default: false }, premium_type: { type: Number }, + customer_id: { type: String }, premium_expire_at: { type: Date }, created_at: { type: Date, default: () => Date.now() }, })