120 lines
2.6 KiB
JavaScript
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,
|
|
}
|