import { Injectable } from '@nestjs/common';
import { Prisma } from '@prisma/client';
import { PrismaService } from '@core/database/prisma/prisma.service';

@Injectable()
export class SharedCheckinPartnerRepository {
  constructor(private readonly prisma: PrismaService) {}

  findById(id: string) {
    return this.prisma.sharedCheckinPartner.findUnique({ where: { id } });
  }

  listByCheckpoint(checkpointId: string) {
    return this.prisma.sharedCheckinPartner.findMany({
      where: { checkpointId },
      orderBy: [{ sortOrder: 'asc' }, { createdAt: 'asc' }],
    });
  }

  listActiveByCheckpoint(checkpointId: string) {
    return this.prisma.sharedCheckinPartner.findMany({
      where: { checkpointId, isActive: true },
      orderBy: [{ sortOrder: 'asc' }, { createdAt: 'asc' }],
    });
  }

  create(data: Prisma.SharedCheckinPartnerUncheckedCreateInput) {
    return this.prisma.sharedCheckinPartner.create({ data });
  }

  update(id: string, data: Prisma.SharedCheckinPartnerUncheckedUpdateInput) {
    return this.prisma.sharedCheckinPartner.update({ where: { id }, data });
  }

  delete(id: string) {
    return this.prisma.sharedCheckinPartner.delete({ where: { id } });
  }
}
