const voteDb = require("../db/vote.db");

async function voteDeal({ dealId, userId, voteType }) {
  if (!dealId || !userId || voteType === undefined) {
    const err = new Error("Eksik veri");
    err.statusCode = 400;
    throw err;
  }

  if (![ -1, 0, 1 ].includes(voteType)) {
    const err = new Error("voteType -1, 0 veya 1 olmalı");
    err.statusCode = 400;
    throw err;
  }

  return voteDb.voteDealTx({ dealId, userId, voteType });
}

async function getVotes(dealId) {
  const votes = await voteDb.findVotes(
    { dealId },
    {
      select: {
        id: true,
        dealId: true,
        userId: true,
        voteType: true,
        createdAt: true,
        lastVotedAt: true,
      },
      orderBy: { createdAt: "desc" },
    }
  )

  return votes.map((vote) => ({
    ...vote,
    createdAt: vote.createdAt.toISOString(),
    lastVotedAt: vote.lastVotedAt.toISOString(),
  }))
}

module.exports = { voteDeal, getVotes };
