Skip to content

Commit e3c025b

Browse files
chore: wip
1 parent f08b006 commit e3c025b

File tree

3 files changed

+15
-21
lines changed

3 files changed

+15
-21
lines changed

storage/framework/core/payments/src/billable/subscription.ts

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
import type Stripe from 'stripe'
2-
import type { SubscriptionModel, SubscriptionsTable } from '../../../../orm/src/models/Subscription'
2+
import type { SubscriptionsTable } from '../../../../orm/src/models/Subscription'
33
import type { UserModel } from '../../../../orm/src/models/User'
4-
import { manageCustomer, managePrice, stripe } from '..'
5-
6-
import { Subscription } from '../../../../orm/src/models/Subscription'
74
import { db } from '@stacksjs/database'
85

6+
import { manageCustomer, managePrice, stripe } from '..'
7+
98
export interface SubscriptionManager {
109
create: (user: UserModel, type: string, lookupKey: string, params: Partial<Stripe.SubscriptionCreateParams>) => Promise<Stripe.Response<Stripe.Subscription>>
1110
update: (user: UserModel, type: string, lookupKey: string, params: Partial<Stripe.SubscriptionUpdateParams>) => Promise<Stripe.Response<Stripe.Subscription>>
@@ -127,23 +126,19 @@ export const manageSubscription: SubscriptionManager = (() => {
127126
}
128127

129128
async function updateStoredSubscription(subscriptionId: string): Promise<void> {
130-
const subscription = await Subscription.where('provider_id', subscriptionId).first()
131-
132-
subscription?.update({ provider_status: 'canceled' })
129+
await db.updateTable('subscriptions').set({ provider_status: 'canceled' }).where('provider_id', '=', subscriptionId).executeTakeFirst()
133130
}
134131

135-
async function isActive(subscription: SubscriptionModel): Promise<boolean> {
132+
async function isActive(subscription: SubscriptionsTable): Promise<boolean> {
136133
return subscription.provider_status === 'active'
137134
}
138135

139-
async function isTrial(subscription: SubscriptionModel): Promise<boolean> {
136+
async function isTrial(subscription: SubscriptionsTable): Promise<boolean> {
140137
return subscription.provider_status === 'trialing'
141138
}
142139

143140
async function isIncomplete(user: UserModel, type: string): Promise<boolean> {
144-
const subscription = await Subscription.where('user_id', user.id)
145-
.where('type', type)
146-
.first()
141+
const subscription = await db.selectFrom('subscriptions').where('type', '=', type).selectAll().executeTakeFirst()
147142

148143
if (!subscription)
149144
return false
@@ -152,9 +147,7 @@ export const manageSubscription: SubscriptionManager = (() => {
152147
}
153148

154149
async function isValid(user: UserModel, type: string): Promise<boolean> {
155-
const subscription = await Subscription.where('user_id', user.id)
156-
.where('type', type)
157-
.first()
150+
const subscription = await db.selectFrom('subscriptions').where('user_id', '=', user.id).where('type', '=', type).selectAll().executeTakeFirst()
158151

159152
if (!subscription)
160153
return false
@@ -165,7 +158,7 @@ export const manageSubscription: SubscriptionManager = (() => {
165158
return active || trial
166159
}
167160

168-
async function storeSubscription(user: UserModel, type: string, lookupKey: string, options: Stripe.Subscription): Promise<SubscriptionModel> {
161+
async function storeSubscription(user: UserModel, type: string, lookupKey: string, options: Stripe.Subscription): Promise<SubscriptionsTable | undefined> {
169162
const data = removeNullValues({
170163
user_id: user.id,
171164
type,
@@ -180,7 +173,8 @@ export const manageSubscription: SubscriptionManager = (() => {
180173
last_used_at: options.current_period_end != null ? String(options.current_period_end) : undefined,
181174
})
182175

183-
const subscriptionModel = await Subscription.create(data)
176+
const subscriptionModelCreated = await db.insertInto('subscriptions').values(data).executeTakeFirst()
177+
const subscriptionModel = await db.selectFrom('subscriptions').where('id', '=', Number(subscriptionModelCreated.insertId)).selectAll().executeTakeFirst()
184178

185179
return subscriptionModel
186180
}

storage/framework/core/payments/src/billable/transaction.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
import type { PaymentTransactionModel, PaymentTransactionsTable } from '../../../../orm/src/models/PaymentTransaction'
1+
import type { PaymentTransactionsTable } from '../../../../orm/src/models/PaymentTransaction'
22
import type { UserModel } from '../../../../orm/src/models/User'
33
import { db } from '@stacksjs/database'
44

55
export interface ManageTransaction {
6-
store: (user: UserModel, productId: number) => Promise<PaymentTransactionsTable>
6+
store: (user: UserModel, productId: number) => Promise<PaymentTransactionsTable | undefined>
77
list: (user: UserModel) => Promise<PaymentTransactionsTable[]>
88
}
99

1010
export const manageTransaction: ManageTransaction = (() => {
11-
async function store(user: UserModel, productId: number): Promise<PaymentTransactionsTable> {
11+
async function store(user: UserModel, productId: number): Promise<PaymentTransactionsTable | undefined> {
1212
const product = await db.selectFrom('payment_products').where('id', '=', productId).selectAll().executeTakeFirst()
1313

1414
const data = {

storage/framework/server-auto-imports.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,4 +164,4 @@
164164
"teamRequest": true,
165165
"userRequest": true
166166
}
167-
}
167+
}

0 commit comments

Comments
 (0)