Browse Source

chore(api): track more fields for polar billing

pull/58/head
isra el 12 months ago
parent
commit
3d0ce469e9
  1. 3
      api/src/billing/billing.controller.ts
  2. 17
      api/src/billing/billing.service.ts
  3. 9
      api/src/billing/schemas/subscription.schema.ts

3
api/src/billing/billing.controller.ts

@ -65,6 +65,9 @@ export class BillingController {
status: payload.data?.status, status: payload.data?.status,
subscriptionStartDate: payload.data?.createdAt, subscriptionStartDate: payload.data?.createdAt,
subscriptionEndDate: payload.data?.canceledAt, subscriptionEndDate: payload.data?.canceledAt,
amount: payload.data?.amount,
currency: payload.data?.currency,
recurringInterval: payload.data?.recurringInterval,
}) })
break break

17
api/src/billing/billing.service.ts

@ -137,7 +137,7 @@ export class BillingService {
}) })
if (customPlanSubscription) { if (customPlanSubscription) {
return customPlanSubscription
return customPlanSubscription.populate('plan')
} }
const proPlanSubscription = await this.subscriptionModel.findOne({ const proPlanSubscription = await this.subscriptionModel.findOne({
@ -147,7 +147,7 @@ export class BillingService {
}) })
if (proPlanSubscription) { if (proPlanSubscription) {
return proPlanSubscription
return proPlanSubscription.populate('plan')
} }
const freePlanSubscription = await this.subscriptionModel.findOne({ const freePlanSubscription = await this.subscriptionModel.findOne({
@ -157,7 +157,7 @@ export class BillingService {
}) })
if (freePlanSubscription) { if (freePlanSubscription) {
return freePlanSubscription
return freePlanSubscription.populate('plan')
} }
// create a new free plan subscription // create a new free plan subscription
@ -168,7 +168,7 @@ export class BillingService {
startDate: new Date(), startDate: new Date(),
}) })
return newFreePlanSubscription
return newFreePlanSubscription.populate('plan')
} }
async getUserLimits(userId: string) { async getUserLimits(userId: string) {
@ -205,6 +205,9 @@ export class BillingService {
subscriptionStartDate, subscriptionStartDate,
subscriptionEndDate, subscriptionEndDate,
status, status,
amount,
currency,
recurringInterval,
}: { }: {
userId: string userId: string
newPlanName?: string newPlanName?: string
@ -215,6 +218,9 @@ export class BillingService {
subscriptionStartDate?: Date subscriptionStartDate?: Date
subscriptionEndDate?: Date subscriptionEndDate?: Date
status?: string status?: string
amount?: number
currency?: string
recurringInterval?: string
}) { }) {
console.log(`Switching plan for user: ${userId}`) console.log(`Switching plan for user: ${userId}`)
@ -257,6 +263,9 @@ export class BillingService {
subscriptionStartDate, subscriptionStartDate,
subscriptionEndDate, subscriptionEndDate,
status, status,
amount,
currency,
recurringInterval,
}, },
{ upsert: true }, { upsert: true },
) )

9
api/src/billing/schemas/subscription.schema.ts

@ -26,9 +26,18 @@ export class Subscription {
// @Prop() // @Prop()
// polarSubscriptionId?: string // polarSubscriptionId?: string
@Prop({ type: String })
recurringInterval?: string
@Prop({ type: Date }) @Prop({ type: Date })
subscriptionStartDate?: Date subscriptionStartDate?: Date
@Prop({ type: Number })
amount?: number
@Prop({ type: String })
currency?: string
@Prop({ type: Date }) @Prop({ type: Date })
subscriptionEndDate?: Date subscriptionEndDate?: Date

Loading…
Cancel
Save