import { prisma } from "@/lib/prisma";
import { Prisma } from "@/app/generated/prisma/client";

export const paymentRepo = {
  async findById(id: string) {
    return prisma.payment.findUnique({ where: { id } });
  },

  async findByExternalOrderId(externalOrderId: string) {
    return prisma.payment.findUnique({ where: { externalOrderId } });
  },

  async findActiveManualForBooking(bookingId: string) {
    return prisma.payment.findFirst({
      where: {
        bookingId,
        provider: "MANUAL",
        status: { in: ["PENDING", "AWAITING"] },
      },
      orderBy: { createdAt: "desc" },
    });
  },

  async create(
    data: Pick<
      Prisma.PaymentUncheckedCreateInput,
      | "bookingId"
      | "provider"
      | "externalOrderId"
      | "amount"
      | "status"
      | "method"
      | "expiresAt"
    >
  ) {
    return prisma.payment.create({ data });
  },

  async update(id: string, data: Prisma.PaymentUpdateInput) {
    return prisma.payment.update({ where: { id }, data });
  },
};
