Merge pull request #3112 from bluewave-labs/fix/status-page-controller

js->ts
This commit is contained in:
Alexander Holliday
2026-01-09 15:26:37 -08:00
committed by GitHub
3 changed files with 110 additions and 109 deletions
+1 -1
View File
@@ -45,7 +45,7 @@ export const initializeControllers = (services) => {
});
controllers.queueController = new QueueController(services.jobQueue);
controllers.logController = new LogController(commonDependencies);
controllers.statusPageController = new StatusPageController(commonDependencies);
controllers.statusPageController = new StatusPageController(services.db);
controllers.notificationController = new NotificationController(services.notificationService, services.db);
controllers.diagnosticController = new DiagnosticController(commonDependencies, {
diagnosticService: services.diagnosticService,
@@ -1,108 +0,0 @@
import { createStatusPageBodyValidation, getStatusPageParamValidation, getStatusPageQueryValidation, imageValidation } from "../../validation/joi.js";
import BaseController from "./baseController.js";
const SERVICE_NAME = "statusPageController";
class StatusPageController extends BaseController {
static SERVICE_NAME = SERVICE_NAME;
constructor(commonDependencies) {
super(commonDependencies);
}
get serviceName() {
return StatusPageController.SERVICE_NAME;
}
createStatusPage = this.asyncHandler(
async (req, res) => {
await createStatusPageBodyValidation.validateAsync(req.body);
await imageValidation.validateAsync(req.file);
const { _id, teamId } = req.user;
const statusPage = await this.db.statusPageModule.createStatusPage({
statusPageData: req.body,
image: req.file,
userId: _id,
teamId,
});
return res.success({
msg: this.stringService.statusPageCreate,
data: statusPage,
});
},
SERVICE_NAME,
"createStatusPage"
);
updateStatusPage = this.asyncHandler(
async (req, res) => {
await createStatusPageBodyValidation.validateAsync(req.body);
await imageValidation.validateAsync(req.file);
const statusPage = await this.db.statusPageModule.updateStatusPage(req.body, req.file);
if (statusPage === null) {
throw this.errorService.createNotFoundError(this.stringService.statusPageNotFound);
}
return res.success({
msg: this.stringService.statusPageUpdate,
data: statusPage,
});
},
SERVICE_NAME,
"updateStatusPage"
);
getStatusPage = this.asyncHandler(
async (req, res) => {
const statusPage = await this.db.statusPageModule.getStatusPage();
return res.success({
msg: this.stringService.statusPageByUrl,
data: statusPage,
});
},
SERVICE_NAME,
"getStatusPage"
);
getStatusPageByUrl = this.asyncHandler(
async (req, res) => {
await getStatusPageParamValidation.validateAsync(req.params);
await getStatusPageQueryValidation.validateAsync(req.query);
const statusPage = await this.db.statusPageModule.getStatusPageByUrl(req.params.url);
return res.success({
msg: this.stringService.statusPageByUrl,
data: statusPage,
});
},
SERVICE_NAME,
"getStatusPageByUrl"
);
getStatusPagesByTeamId = this.asyncHandler(
async (req, res) => {
const teamId = req.user.teamId;
const statusPages = await this.db.statusPageModule.getStatusPagesByTeamId(teamId);
return res.success({
msg: this.stringService.statusPageByTeamId,
data: statusPages,
});
},
SERVICE_NAME,
"getStatusPagesByTeamId"
);
deleteStatusPage = this.asyncHandler(
async (req, res) => {
await this.db.statusPageModule.deleteStatusPage(req.params.url);
return res.success({
msg: this.stringService.statusPageDelete,
});
},
SERVICE_NAME,
"deleteStatusPage"
);
}
export default StatusPageController;
@@ -0,0 +1,109 @@
import { Request, Response, NextFunction } from "express";
import { createStatusPageBodyValidation, getStatusPageParamValidation, getStatusPageQueryValidation, imageValidation } from "@/validation/joi.js";
import { AppError } from "@/utils/AppError.js";
const SERVICE_NAME = "statusPageController";
class StatusPageController {
static SERVICE_NAME = SERVICE_NAME;
private db: any;
constructor(db: any) {
this.db = db;
}
get serviceName() {
return StatusPageController.SERVICE_NAME;
}
createStatusPage = async (req: Request, res: Response, next: NextFunction) => {
try {
await createStatusPageBodyValidation.validateAsync(req.body);
await imageValidation.validateAsync(req.file);
const { _id, teamId } = req.user;
const statusPage = await this.db.statusPageModule.createStatusPage({
statusPageData: req.body,
image: req.file,
userId: _id,
teamId,
});
return res.status(200).json({
msg: "Status page created successfully",
data: statusPage,
});
} catch (error) {
next(error);
}
};
updateStatusPage = async (req: Request, res: Response, next: NextFunction) => {
try {
await createStatusPageBodyValidation.validateAsync(req.body);
await imageValidation.validateAsync(req.file);
const statusPage = await this.db.statusPageModule.updateStatusPage(req.body, req.file);
if (statusPage === null) {
throw new AppError({ message: "Status page not found", status: 404 });
}
return res.status(200).json({
msg: "Status page updated successfully",
data: statusPage,
});
} catch (error) {
next(error);
}
};
getStatusPage = async (req: Request, res: Response, next: NextFunction) => {
try {
const statusPage = await this.db.statusPageModule.getStatusPage();
return res.status(200).json({
msg: "Status page retrieved successfully",
data: statusPage,
});
} catch (error) {
next(error);
}
};
getStatusPageByUrl = async (req: Request, res: Response, next: NextFunction) => {
try {
await getStatusPageParamValidation.validateAsync(req.params);
await getStatusPageQueryValidation.validateAsync(req.query);
const statusPage = await this.db.statusPageModule.getStatusPageByUrl(req.params.url);
return res.status(200).json({
msg: "Status page retrieved successfully",
data: statusPage,
});
} catch (error) {
next(error);
}
};
getStatusPagesByTeamId = async (req: Request, res: Response, next: NextFunction) => {
try {
const teamId = req.user.teamId;
const statusPages = await this.db.statusPageModule.getStatusPagesByTeamId(teamId);
return res.status(200).json({
msg: "Status pages retrieved successfully",
data: statusPages,
});
} catch (error) {
next(error);
}
};
deleteStatusPage = async (req: Request, res: Response, next: NextFunction) => {
try {
await this.db.statusPageModule.deleteStatusPage(req.params.url);
return res.status(200).json({
msg: "Status page deleted successfully",
});
} catch (error) {
next(error);
}
};
}
export default StatusPageController;