51 lines
1.3 KiB
TypeScript
51 lines
1.3 KiB
TypeScript
import { db } from '../db/db_index'
|
|
import { orders, payments, orderStatus } from '../db/schema'
|
|
import { eq } from 'drizzle-orm'
|
|
|
|
export async function getOrderById(orderId: number) {
|
|
return db.query.orders.findFirst({
|
|
where: eq(orders.id, orderId),
|
|
})
|
|
}
|
|
|
|
export async function getPaymentByOrderId(orderId: number) {
|
|
return db.query.payments.findFirst({
|
|
where: eq(payments.orderId, orderId),
|
|
})
|
|
}
|
|
|
|
export async function getPaymentByMerchantOrderId(merchantOrderId: string) {
|
|
return db.query.payments.findFirst({
|
|
where: eq(payments.merchantOrderId, merchantOrderId),
|
|
})
|
|
}
|
|
|
|
export async function updatePaymentSuccess(merchantOrderId: string, payload: unknown) {
|
|
const [updatedPayment] = await db
|
|
.update(payments)
|
|
.set({
|
|
status: 'success',
|
|
payload,
|
|
})
|
|
.where(eq(payments.merchantOrderId, merchantOrderId))
|
|
.returning({
|
|
id: payments.id,
|
|
orderId: payments.orderId,
|
|
})
|
|
|
|
return updatedPayment || null
|
|
}
|
|
|
|
export async function updateOrderPaymentStatus(orderId: number, status: 'pending' | 'success' | 'cod' | 'failed') {
|
|
await db
|
|
.update(orderStatus)
|
|
.set({ paymentStatus: status })
|
|
.where(eq(orderStatus.orderId, orderId))
|
|
}
|
|
|
|
export async function markPaymentFailed(paymentId: number) {
|
|
await db
|
|
.update(payments)
|
|
.set({ status: 'failed' })
|
|
.where(eq(payments.id, paymentId))
|
|
}
|