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

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

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

  findByCode(code: string) {
    return this.prisma.siteCheckpoint.findUnique({ where: { code } });
  }

  findActiveByCode(code: string) {
    return this.prisma.siteCheckpoint.findFirst({
      where: { code, isActive: true },
    });
  }

  findAll() {
    return this.prisma.siteCheckpoint.findMany({
      orderBy: { createdAt: 'desc' },
    });
  }

  create(data: Prisma.SiteCheckpointCreateInput) {
    return this.prisma.siteCheckpoint.create({ data });
  }

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

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