feat: refactor notification rule models to use BaseNotificationRule and update filter conditions

This commit is contained in:
Simon Larsen
2025-02-06 11:14:52 +00:00
parent 0eae73c4e5
commit 5e4b24dcfb
12 changed files with 22 additions and 18 deletions

View File

@@ -16,7 +16,7 @@ import IconProp from "../../Types/Icon/IconProp";
import ObjectID from "../../Types/ObjectID";
import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
import ServiceProviderType from "../../Types/ServiceProvider/ServiceProviderType";
import SlackNotificationRule from "../../Types/ServiceProvider/NotificationRules/SlackNotificationRule";
import BaseNotificationRule from "../../Types/ServiceProvider/NotificationRules/BaseNotificationRule";
import NotificationRuleEventType from "../../Types/ServiceProvider/NotificationRules/EventType";
@@ -104,7 +104,7 @@ class ServiceProviderNotificationRule extends BaseModel {
unique: false,
nullable: false,
})
public notificationRule?: SlackNotificationRule = undefined;
public notificationRule?: BaseNotificationRule = undefined;
@ColumnAccessControl({
create: [],

View File

@@ -19,7 +19,6 @@ import { JSONObject } from "Common/Types/JSON";
import {
CheckOn,
CriteriaFilter,
FilterCondition,
} from "Common/Types/Monitor/CriteriaFilter";
import IncomingMonitorRequest from "Common/Types/Monitor/IncomingMonitor/IncomingMonitorRequest";
import MonitorCriteria from "Common/Types/Monitor/MonitorCriteria";
@@ -57,6 +56,7 @@ import MonitorMetricType from "../../../Types/Monitor/MonitorMetricType";
import TelemetryUtil from "../Telemetry/Telemetry";
import MetricMonitorCriteria from "./Criteria/MetricMonitorCriteria";
import MetricMonitorResponse from "../../../Types/Monitor/MetricMonitor/MetricMonitorResponse";
import FilterCondition from "../../../Types/Filter/FilterCondition";
export default class MonitorResourceUtil {
public static async monitorResource(

View File

@@ -1,6 +1,6 @@
enum FilterCondition {
And = "And",
Or = "Or",
All = "All",
Any = "Any",
}
export default FilterCondition;

View File

@@ -110,11 +110,6 @@ export enum FilterType {
IsNotExecuting = "Is Not Executing",
}
export enum FilterCondition {
All = "All",
Any = "Any",
}
export class CriteriaFilterUtil {
public static getEvaluateOverTimeTypeByCriteriaFilter(
criteriaFilter: CriteriaFilter | undefined,

View File

@@ -1,5 +1,6 @@
import DatabaseProperty from "../Database/DatabaseProperty";
import BadDataException from "../Exception/BadDataException";
import FilterCondition from "../Filter/FilterCondition";
import { JSONObject, ObjectType } from "../JSON";
import JSONFunctions from "../JSONFunctions";
import ObjectID from "../ObjectID";
@@ -8,7 +9,6 @@ import { CriteriaAlert } from "./CriteriaAlert";
import {
CheckOn,
CriteriaFilter,
FilterCondition,
FilterType,
EvaluateOverTimeType,
} from "./CriteriaFilter";

View File

@@ -0,0 +1,5 @@
export default interface BaseNotificationRule {
_type: string;
}

View File

@@ -1,3 +1,7 @@
export default interface SlackNotificationRule {
import FilterCondition from "../../Filter/FilterCondition";
import BaseNotificationRule from "./BaseNotificationRule";
export default interface SlackNotificationRule extends BaseNotificationRule {
_type: "SlackNotificationRule";
filterCondition: FilterCondition; // and OR or. Default is AND
}

View File

@@ -4,7 +4,6 @@ import Dictionary from "Common/Types/Dictionary";
import IconProp from "Common/Types/Icon/IconProp";
import {
CriteriaFilter,
FilterCondition,
} from "Common/Types/Monitor/CriteriaFilter";
import { CriteriaIncident } from "Common/Types/Monitor/CriteriaIncident";
import MonitorCriteriaInstance from "Common/Types/Monitor/MonitorCriteriaInstance";
@@ -34,6 +33,7 @@ import React, {
import MonitorCriteriaAlertsForm from "./MonitorCriteriaAlertsForm";
import { CriteriaAlert } from "Common/Types/Monitor/CriteriaAlert";
import MonitorStep from "Common/Types/Monitor/MonitorStep";
import FilterCondition from "Common/Types/Filter/FilterCondition";
export interface ComponentProps {
monitorStatusDropdownOptions: Array<DropdownOption>;

View File

@@ -1,7 +1,7 @@
import FilterCondition from "Common/Types/Filter/FilterCondition";
import CriteriaFilterUtil from "../../../Utils/Form/Monitor/CriteriaFilter";
import {
CriteriaFilter,
FilterCondition,
} from "Common/Types/Monitor/CriteriaFilter";
import React, { FunctionComponent, ReactElement } from "react";

View File

@@ -1,7 +1,7 @@
import FilterCondition from "Common/Types/Filter/FilterCondition";
import CriteriaFilterElement from "./CriteriaFilter";
import {
CriteriaFilter,
FilterCondition,
} from "Common/Types/Monitor/CriteriaFilter";
import React, { FunctionComponent, ReactElement } from "react";

View File

@@ -3,7 +3,6 @@ import MonitorCriteriaIncidents from "./MonitorCriteriaIncidents";
import { Black } from "Common/Types/BrandColors";
import Color from "Common/Types/Color";
import IconProp from "Common/Types/Icon/IconProp";
import { FilterCondition } from "Common/Types/Monitor/CriteriaFilter";
import MonitorCriteriaInstance from "Common/Types/Monitor/MonitorCriteriaInstance";
import HorizontalRule from "Common/UI/Components/HorizontalRule/HorizontalRule";
import Icon from "Common/UI/Components/Icon/Icon";
@@ -14,6 +13,7 @@ import OnCallDutyPolicy from "Common/Models/DatabaseModels/OnCallDutyPolicy";
import React, { FunctionComponent, ReactElement } from "react";
import MonitorCriteriaAlerts from "./MonitorCriteriaAlerts";
import AlertSeverity from "Common/Models/DatabaseModels/AlertSeverity";
import FilterCondition from "Common/Types/Filter/FilterCondition";
export interface ComponentProps {
monitorStatusOptions: Array<MonitorStatus>;

View File

@@ -1,9 +1,9 @@
import FilterCondition from "Common/Types/Filter/FilterCondition";
import {
CheckOn,
CriteriaFilter,
EvaluateOverTimeMinutes,
EvaluateOverTimeType,
FilterCondition,
FilterType,
} from "Common/Types/Monitor/CriteriaFilter";
import MonitorType from "Common/Types/Monitor/MonitorType";