27 lines
686 B
JavaScript
27 lines
686 B
JavaScript
const prisma = require("../../db/client")
|
|
const { ensureCounterAtLeast, nextId } = require("./idGenerator.service")
|
|
const DEAL_ID_KEY = "data:ids:deal"
|
|
|
|
async function ensureDealIdCounter() {
|
|
const latest = await prisma.deal.findFirst({
|
|
select: { id: true },
|
|
orderBy: { id: "desc" },
|
|
})
|
|
const maxId = latest?.id ?? 0
|
|
await ensureCounterAtLeast(DEAL_ID_KEY, maxId)
|
|
}
|
|
|
|
async function generateDealId() {
|
|
try {
|
|
return await nextId(DEAL_ID_KEY)
|
|
} catch {
|
|
const latest = await prisma.deal.findFirst({
|
|
select: { id: true },
|
|
orderBy: { id: "desc" },
|
|
})
|
|
return (latest?.id ?? 0) + 1
|
|
}
|
|
}
|
|
|
|
module.exports = { ensureDealIdCounter, generateDealId }
|