ready-to-go-node-template
Version:
A node boilerplate template with built-in support for socket and MongoDB using Mongoose.
39 lines (29 loc) • 1.22 kB
JavaScript
import { responseHandler } from "../../../../../utils/response-handler";
import { Admin } from "../../models/admin-model";
import { redis } from "../../../../../config/index";
class ListAdminController {
/**
* @description API to get admin details
* @param {*} req /api/v1/admin/get-admin/:id
* @param {*} res
*/
async list(req, res) {
try {
const cachedAdminList = await redis.getCache('adminList');
if (cachedAdminList) {
return responseHandler.successResponse(res, cachedAdminList, "Admin list retrieved successfully from cache", 200);
}
const result = await Admin.find();
if (result.length !== 0) {
await redis.setCache('adminList', result);
return responseHandler.successResponse(res, result, "Admin list retrieved successfully from MongoDB", 200);
} else {
return responseHandler.errorResponse(res, [], "No admins found", 200);
}
} catch (err) {
console.error(err)
return responseHandler.errorResponse(res, err);
}
}
}
export default new ListAdminController();