import { prisma } from '@/lib/db/prisma';
import { Prisma, QuestionStatus } from '@prisma/client';

export const answerRepository = {
  findById(id: number) {
    return prisma.answer.findUnique({ where: { id } });
  },

  // Creating an answer also flips an OPEN question to ANSWERED so the
  // dashboard's "unanswered" counter stays accurate. Wrapped in a
  // transaction since both writes must succeed together.
  create(data: Prisma.AnswerUncheckedCreateInput) {
    return prisma.$transaction(async (tx) => {
      const answer = await tx.answer.create({
        data,
        include: { user: { select: { id: true, name: true } } },
      });
      await tx.question.updateMany({
        where: { id: data.questionId, status: QuestionStatus.OPEN },
        data: { status: QuestionStatus.ANSWERED },
      });
      return answer;
    });
  },
};
