diff options
author | 2025-02-03 23:17:20 +0600 | |
---|---|---|
committer | 2025-02-03 23:17:20 +0600 | |
commit | 9cb521aa1b3dd7252ee906fb74ea9b592ad5799f (patch) | |
tree | 1cdfddaa43f5a33846d4a4c23e8ffaba810ef3bd | |
parent | 9836dbb488b8083eeccbaaad3b0dbd413514a8d4 (diff) | |
download | inventory-9cb521aa1b3dd7252ee906fb74ea9b592ad5799f.tar.gz inventory-9cb521aa1b3dd7252ee906fb74ea9b592ad5799f.zip |
serial number generation change
-rw-r--r-- | index.js | 25 |
1 files changed, 21 insertions, 4 deletions
@@ -1,7 +1,6 @@ import express from 'express'; import { MongoClient } from 'mongodb'; import { google } from 'googleapis'; -import crypto from 'crypto'; import dotenv from 'dotenv'; import fs from 'fs'; import cors from 'cors'; @@ -49,8 +48,26 @@ async function connectDB() { connectDB(); -function generateSerialNumber(mac) { - return `JPC${crypto.createHash('sha3-224').update(mac).digest('hex').toUpperCase().substring(0, 6)}`; +async function generateSerialNumber() { + const db = client.db(dbName); + const collection = db.collection(collectionName); + + const year = new Date().getFullYear().toString().slice(-2); // Get last two digits of the year + + const latestDevice = await collection.find({ serialNumber: { $regex: `^JPC${year}` } }) + .sort({ serialNumber: -1 }) + .limit(1) + .toArray(); + + let nextNumber = 1; // Default start + + if (latestDevice.length > 0) { + const lastSerial = latestDevice[0].serialNumber; + const lastNumber = parseInt(lastSerial.substring(5, 11), 10); // Extract last 6 digits + nextNumber = lastNumber + 1; + } + + return `JPC${year}${String(nextNumber).padStart(6, '0')}`; } app.post('/upload', async (req, res) => { @@ -70,7 +87,7 @@ app.post('/upload', async (req, res) => { return res.status(400).send(`Device with the same MAC address is already registered, ${existingDevice.serialNumber}`); } - const serialNumber = generateSerialNumber(mac); + const serialNumber = await generateSerialNumber(); const newItem = { serialNumber, |