65 lines
1.7 KiB
JavaScript
65 lines
1.7 KiB
JavaScript
const prisma = require("./client")
|
|
|
|
function getDb(db) {
|
|
return db || prisma
|
|
}
|
|
|
|
function withDeletedFilter(where = {}, options = {}) {
|
|
if (options.includeDeleted || Object.prototype.hasOwnProperty.call(where, "deletedAt")) {
|
|
return where
|
|
}
|
|
return { AND: [where, { deletedAt: null }] }
|
|
}
|
|
|
|
async function findComments(where, options = {}) {
|
|
return prisma.comment.findMany({
|
|
where: withDeletedFilter(where, options),
|
|
include: options.include || undefined,
|
|
select: options.select || undefined,
|
|
orderBy: options.orderBy || { createdAt: "desc" },
|
|
skip: Number.isInteger(options.skip) ? options.skip : undefined,
|
|
take: Number.isInteger(options.take) ? options.take : undefined,
|
|
})
|
|
}
|
|
|
|
async function findComment(where, options = {}) {
|
|
return prisma.comment.findFirst({
|
|
where: withDeletedFilter(where, options),
|
|
include: options.include || undefined,
|
|
select: options.select || undefined,
|
|
orderBy: options.orderBy || { createdAt: "desc" },
|
|
})
|
|
}
|
|
async function createComment(data, options = {}, db) {
|
|
const p = getDb(db)
|
|
return p.comment.create({
|
|
data,
|
|
include: options.include || undefined,
|
|
select: options.select || undefined,
|
|
})
|
|
}
|
|
|
|
async function deleteComment(where, db) {
|
|
const p = getDb(db)
|
|
return p.comment.delete({ where })
|
|
}
|
|
|
|
async function softDeleteComment(where, db) {
|
|
const p = getDb(db)
|
|
return p.comment.updateMany({ where, data: { deletedAt: new Date() } })
|
|
}
|
|
async function countComments(where = {}, db, options = {}) {
|
|
const p = getDb(db)
|
|
return p.comment.count({ where: withDeletedFilter(where, options) })
|
|
}
|
|
|
|
|
|
module.exports = {
|
|
findComments,
|
|
countComments,
|
|
createComment,
|
|
deleteComment,
|
|
softDeleteComment,
|
|
findComment
|
|
}
|