oneuptime/Common/Server/API/WorkspaceNotificationRuleAPI.ts

48 lines
1.7 KiB
TypeScript

import UserMiddleware from "../Middleware/UserAuthorization";
import WorkspaceNotificationRuleService, {
Service as WorkspaceNotificationRuleServiceType,
} from "../Services/WorkspaceNotificationRuleService";
import {
ExpressRequest,
ExpressResponse,
NextFunction,
} from "../Utils/Express";
import Response from "../Utils/Response";
import BaseAPI from "./BaseAPI";
import CommonAPI from "./CommonAPI";
import DatabaseCommonInteractionProps from "../../Types/BaseDatabase/DatabaseCommonInteractionProps";
import WorkspaceNotificationRule from "../../Models/DatabaseModels/WorkspaceNotificationRule";
import ObjectID from "../../Types/ObjectID";
export default class WorkspaceNotificationRuleAPI extends BaseAPI<
WorkspaceNotificationRule,
WorkspaceNotificationRuleServiceType
> {
public constructor() {
super(WorkspaceNotificationRule, WorkspaceNotificationRuleService);
this.router.get(
`${new this.entityType().getCrudApiPath()?.toString()}/test/:workspaceNotifcationRuleId`,
UserMiddleware.getUserMiddleware,
async (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => {
try {
const databaseProps: DatabaseCommonInteractionProps =
await CommonAPI.getDatabaseCommonInteractionProps(req);
await this.service.testRule({
ruleId: new ObjectID(
req.params["workspaceNotifcationRuleId"] as string,
),
props: databaseProps,
projectId: databaseProps.tenantId!,
testByUserId: databaseProps.userId!,
});
return Response.sendEmptySuccessResponse(req, res);
} catch (e) {
next(e);
}
},
);
}
}