HotTRDealsBackend/services/deal/commentService.js
2025-11-05 14:56:26 +00:00

61 lines
1.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const dealDB = require("../../db/deal.db")
const commentDB = require("../../db/comment.db")
function assertPositiveInt(v, name = "id") {
const n = Number(v)
if (!Number.isInteger(n) || n <= 0) throw new Error(`Geçersiz ${name}.`)
return n
}
async function getCommentsByDealId(dealId) {
const id = assertPositiveInt(dealId, "dealId")
const deal = await dealDB.findDeal({ id })
if (!deal) throw new Error("Deal bulunamadı.")
const include = { user: { select: { username: true, avatarUrl: true } } }
return commentDB.findComments({ dealId: id }, { include })
}
async function createComment({ dealId, userId, text }) {
const dId = assertPositiveInt(dealId, "dealId")
const uId = assertPositiveInt(userId, "userId")
if (!text || typeof text !== "string" || !text.trim())
throw new Error("Yorum boş olamaz.")
const deal = await dealDB.findDeal({ id: dId })
if (!deal) throw new Error("Deal bulunamadı.")
const include = { user: { select: { username: true, avatarUrl: true } } }
const data = {
text: text.trim(),
userId: uId,
dealId: dId,
}
return commentDB.createComment(data, { include })
}
async function deleteComment(commentId, userId) {
const cId = assertPositiveInt(commentId, "commentId")
const uId = assertPositiveInt(userId, "userId")
const comments = await commentDB.findComments(
{ id: cId },
{ select: { userId: true } }
)
if (!comments || comments.length === 0) throw new Error("Yorum bulunamadı.")
if (comments[0].userId !== uId) throw new Error("Bu yorumu silme yetkin yok.")
await commentDB.deleteComment({ id: cId })
return { message: "Yorum silindi." }
}
module.exports = {
getCommentsByDealId,
createComment,
deleteComment,
}