first commit
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
/**
|
||||
* Copyright (c) 2026 Niolla
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is proprietary and confidential.
|
||||
* Unauthorized copying, modification, distribution, or use
|
||||
* of this file, via any medium, is strictly prohibited.
|
||||
*/
|
||||
|
||||
// utils/referenceNumber.util.js
|
||||
|
||||
const { referenceNumber } = require("../models");
|
||||
const { sequelize } = require("../models");
|
||||
const crypto = require("crypto");
|
||||
|
||||
const pad = (num, size = 4) => {
|
||||
return String(num).padStart(size, "0");
|
||||
};
|
||||
|
||||
const nextSequence = async (sequenceKey, transaction) => {
|
||||
const options = {
|
||||
where: { sequence_key: sequenceKey },
|
||||
};
|
||||
|
||||
// Only add transaction and lock if transaction is provided
|
||||
if (transaction) {
|
||||
options.transaction = transaction;
|
||||
options.lock = transaction.LOCK.UPDATE;
|
||||
}
|
||||
|
||||
let sequence = await referenceNumber.findOne(options);
|
||||
|
||||
if (!sequence) {
|
||||
const createOptions = transaction ? { transaction } : {};
|
||||
|
||||
sequence = await referenceNumber.create(
|
||||
{
|
||||
id: crypto.randomUUID(),
|
||||
sequence_key: sequenceKey,
|
||||
current_number: 1,
|
||||
},
|
||||
createOptions
|
||||
);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
sequence.current_number += 1;
|
||||
|
||||
const saveOptions = transaction ? { transaction } : {};
|
||||
await sequence.save(saveOptions);
|
||||
|
||||
return sequence.current_number;
|
||||
};
|
||||
|
||||
module.exports = { nextSequence, pad };
|
||||
Reference in New Issue
Block a user