HotTRDealsBackend/db/deal.db.js
2026-01-29 00:45:52 +00:00

120 lines
2.6 KiB
JavaScript

const prisma = require("./client")
function getDb(db) {
return db || prisma
}
async function findDeals(where = {}, options = {}, db) {
const p = getDb(db)
return p.deal.findMany({
where,
include: options.include || undefined,
select: options.select || undefined,
orderBy: options.orderBy || { createdAt: "desc" },
skip: options.skip || 0,
take: options.take || undefined,
})
}
async function findSimilarCandidates(where, options = {}, db) {
const p = getDb(db)
const safeTake = Math.min(Math.max(Number(options.take) || 30, 1), 200)
return p.deal.findMany({
where,
orderBy: options.orderBy || [{ score: "desc" }, { createdAt: "desc" }],
take: safeTake,
include: options.include || undefined,
select: options.select || undefined,
})
}
async function findDeal(where, options = {}, db) {
const p = getDb(db)
return p.deal.findUnique({
where,
include: options.include || undefined,
select: options.select || undefined,
})
}
async function createDeal(data, options = {}, db) {
const p = getDb(db)
return p.deal.create({
data,
include: options.include || undefined,
select: options.select || undefined,
})
}
async function updateDeal(where, data, options = {}, db) {
const p = getDb(db)
return p.deal.update({
where,
data,
include: options.include || undefined,
select: options.select || undefined,
})
}
async function countDeals(where = {}, db) {
const p = getDb(db)
return p.deal.count({ where })
}
async function findVotes(where = {}, options = {}, db) {
const p = getDb(db)
return p.dealVote.findMany({
where,
include: options.include || undefined,
select: options.select || undefined,
})
}
async function createVote(data, options = {}, db) {
const p = getDb(db)
return p.dealVote.create({
data,
include: options.include || undefined,
select: options.select || undefined,
})
}
async function updateVote(where, data, options = {}, db) {
const p = getDb(db)
return p.dealVote.update({
where,
data,
include: options.include || undefined,
select: options.select || undefined,
})
}
async function countVotes(where = {}, db) {
const p = getDb(db)
return p.dealVote.count({ where })
}
async function aggregateDeals(where = {}, db) {
const p = getDb(db)
return p.deal.aggregate({
where,
_count: { _all: true },
_sum: { score: true },
})
}
module.exports = {
findDeals,
findSimilarCandidates,
findDeal,
createDeal,
updateDeal,
countDeals,
findVotes,
createVote,
updateVote,
countVotes,
aggregateDeals,
}