29 lines
680 B
JavaScript
29 lines
680 B
JavaScript
const { getRedisClient } = require("./client")
|
|
|
|
function createRedisClient() {
|
|
return getRedisClient()
|
|
}
|
|
|
|
async function ensureCounterAtLeast(key, minValue) {
|
|
const redis = createRedisClient()
|
|
try {
|
|
const currentRaw = await redis.get(key)
|
|
const current = currentRaw ? Number(currentRaw) : 0
|
|
if (!Number.isFinite(current) || current < minValue) {
|
|
await redis.set(key, String(minValue))
|
|
return minValue
|
|
}
|
|
return current
|
|
} finally {}
|
|
}
|
|
|
|
async function nextId(key) {
|
|
const redis = createRedisClient()
|
|
try {
|
|
const value = await redis.incr(key)
|
|
return Number(value)
|
|
} finally {}
|
|
}
|
|
|
|
module.exports = { ensureCounterAtLeast, nextId }
|