Skip to content
This repository was archived by the owner on Sep 20, 2025. It is now read-only.

Commit a50af4e

Browse files
committed
Add admin guest-users count stat request
1 parent 96bed65 commit a50af4e

File tree

6 files changed

+92
-0
lines changed

6 files changed

+92
-0
lines changed

grocery-store-management-system.postman_collection.json

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -495,6 +495,37 @@
495495
}
496496
},
497497
"response": []
498+
},
499+
{
500+
"name": "Guest Users Count",
501+
"request": {
502+
"auth": {
503+
"type": "bearer",
504+
"bearer": [
505+
{
506+
"key": "token",
507+
"value": "{{token}}",
508+
"type": "string"
509+
}
510+
]
511+
},
512+
"method": "GET",
513+
"header": [],
514+
"url": {
515+
"raw": "{{api}}/web/stats/admin/shipments/ongoing",
516+
"host": [
517+
"{{api}}"
518+
],
519+
"path": [
520+
"web",
521+
"stats",
522+
"admin",
523+
"shipments",
524+
"ongoing"
525+
]
526+
}
527+
},
528+
"response": []
498529
}
499530
]
500531
}

src/models/v1/user.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -649,6 +649,29 @@ module.exports = (sequelize, DataTypes) => {
649649
return false;
650650
}
651651
}
652+
653+
/**
654+
* @returns {object|false}
655+
*/
656+
static async getAdminGuestUsersCountStat() {
657+
try {
658+
const result = await sequelize.query(
659+
`SELECT count(id) as count
660+
FROM ${this.getTableName()}
661+
WHERE role = "guest"`,
662+
{
663+
type: sequelize.QueryTypes.SELECT,
664+
},
665+
);
666+
667+
return { count: result[0].count };
668+
} catch(err) {
669+
if ("production" !== nodeEnv) {
670+
console.log(err);
671+
}
672+
return false;
673+
}
674+
}
652675
}
653676

654677
User.init({

src/routes/api/v1/web/stats/admin/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@ const express = require("express");
22
const products = require("./products");
33
const orders = require("./orders");
44
const shipments = require("./shipments");
5+
const users = require("./users");
56

67
const router = express.Router();
78

89
router.use("/products", products);
910
router.use("/orders", orders);
1011
router.use("/shipments", shipments);
12+
router.use("/users", users);
1113

1214
module.exports = router;
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
const express = require("express");
2+
const { status, } = require("http-status");
3+
const adminAuthenticate = require("../../../../../../../../middlewares/v1/adminAuthenticate");
4+
const db = require("../../../../../../../../models/v1/index");
5+
const { message500 } = require("../../../../../../../../utils/httpResponses");
6+
7+
const router = express.Router();
8+
9+
router.get("/", adminAuthenticate, async (req, res) => {
10+
const result = await db.sequelize.models.user.getAdminGuestUsersCountStat();
11+
if (false === result) {
12+
res.status(status.UNAUTHORIZED);
13+
return res.json(message500);
14+
}
15+
16+
res.status(status.OK);
17+
return res.json({ data: result.count });
18+
});
19+
20+
module.exports = router;
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
const express = require("express");
2+
const guest = require("./guest");
3+
4+
const router = express.Router();
5+
6+
router.use("/", guest);
7+
8+
module.exports = router;
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
const express = require("express");
2+
const guest = require("./guest");
3+
4+
const router = express.Router();
5+
6+
router.use("/guest", guest);
7+
8+
module.exports = router;

0 commit comments

Comments
 (0)