HotTRDealsBackend/services/comment.service.js
2026-01-23 17:28:21 +00:00

76 lines
1.9 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")
const prisma = require("../db/client")
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 = Number(dealId)
const deal = await dealDB.findDeal({ id })
if (!deal) throw new Error("Deal bulunamadı.")
const include = { user: { select: { id:true,username: true, avatarUrl: true } } }
return commentDB.findComments({ dealId: id }, { include })
}
async function createComment({ dealId, userId, text }) {
if (!text || typeof text !== "string" || !text.trim())
throw new Error("Yorum boş olamaz.")
const trimmed = text.trim()
const include = { user: { select: { username: true, avatarUrl: true } } }
return prisma.$transaction(async (tx) => {
const deal = await dealDB.findDeal({ id: dealId }, {}, tx)
if (!deal) throw new Error("Deal bulunamadı.")
const comment = await commentDB.createComment(
{ text: trimmed, userId, dealId },
{ include },
tx
)
await dealDB.updateDeal(
{ id: dealId },
{ commentCount: { increment: 1 } },
{},
tx
)
return comment
})
}
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." }
}
async function commentChange(length,dealId){
}
module.exports = {
getCommentsByDealId,
createComment,
deleteComment,
}