mirror of
https://github.com/OneUptime/oneuptime.git
synced 2026-04-06 08:42:13 +02:00
Compare commits
2 Commits
10.0.24
...
monitor-re
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
71a0edb7dd | ||
|
|
a53b24ed05 |
@@ -124,6 +124,7 @@ enum IconProp {
|
||||
NoSignal = "NoSignal",
|
||||
EyeSlash = "EyeSlash",
|
||||
SquareStack3D = "SquareStack3D",
|
||||
DocumentText = "DocumentText",
|
||||
}
|
||||
|
||||
export default IconProp;
|
||||
|
||||
@@ -89,6 +89,21 @@ enum Permission {
|
||||
EditMonitorGroupResource = "EditMonitorGroupResource",
|
||||
ReadMonitorGroupResource = "ReadMonitorGroupResource",
|
||||
|
||||
CreateMonitorReport = "CreateMonitorReport",
|
||||
DeleteMonitorReport = "DeleteMonitorReport",
|
||||
EditMonitorReport = "EditMonitorReport",
|
||||
ReadMonitorReport = "ReadMonitorReport",
|
||||
|
||||
CreateMonitorReportSubscriber = "CreateMonitorReportSubscriber",
|
||||
DeleteMonitorReportSubscriber = "DeleteMonitorReportSubscriber",
|
||||
EditMonitorReportSubscriber = "EditMonitorReportSubscriber",
|
||||
ReadMonitorReportSubscriber = "ReadMonitorReportSubscriber",
|
||||
|
||||
CreateMonitorReportMonitor = "CreateMonitorReportMonitor",
|
||||
DeleteMonitorReportMonitor = "DeleteMonitorReportMonitor",
|
||||
EditMonitorReportMonitor = "EditMonitorReportMonitor",
|
||||
ReadMonitorReportMonitor = "ReadMonitorReportMonitor",
|
||||
|
||||
CreateMonitorCustomField = "CreateMonitorCustomField",
|
||||
DeleteMonitorCustomField = "DeleteMonitorCustomField",
|
||||
EditMonitorCustomField = "EditMonitorCustomField",
|
||||
@@ -2069,30 +2084,88 @@ export class PermissionHelper {
|
||||
},
|
||||
|
||||
{
|
||||
permission: Permission.CreateMonitorGroupResource,
|
||||
title: "Create Monitor Group Resource",
|
||||
description: "This permission can create monitor group resource.",
|
||||
permission: Permission.CreateMonitorReport,
|
||||
title: "Create Monitor Report",
|
||||
description: "This permission can create Monitor Report.",
|
||||
isAssignableToTenant: true,
|
||||
isAccessControlPermission: false,
|
||||
},
|
||||
{
|
||||
permission: Permission.DeleteMonitorGroupResource,
|
||||
title: "Delete Monitor Group Resource",
|
||||
description: "This permission can delete monitor group resource.",
|
||||
permission: Permission.DeleteMonitorReport,
|
||||
title: "Delete Monitor Report",
|
||||
description: "This permission can delete Monitor Report.",
|
||||
isAssignableToTenant: true,
|
||||
isAccessControlPermission: false,
|
||||
},
|
||||
{
|
||||
permission: Permission.EditMonitorGroupResource,
|
||||
title: "Edit Monitor Group Resource",
|
||||
description: "This permission can edit monitor group resource.",
|
||||
permission: Permission.EditMonitorReport,
|
||||
title: "Edit Monitor Report",
|
||||
description: "This permission can edit Monitor Report.",
|
||||
isAssignableToTenant: true,
|
||||
isAccessControlPermission: false,
|
||||
},
|
||||
{
|
||||
permission: Permission.ReadMonitorGroupResource,
|
||||
title: "Read Monitor Group Resource",
|
||||
description: "This permission can read monitor group resource.",
|
||||
permission: Permission.ReadMonitorReport,
|
||||
title: "Read Monitor Report",
|
||||
description: "This permission can read Monitor Report.",
|
||||
isAssignableToTenant: true,
|
||||
isAccessControlPermission: false,
|
||||
},
|
||||
|
||||
{
|
||||
permission: Permission.CreateMonitorReportSubscriber,
|
||||
title: "Create Monitor Report Subscriber",
|
||||
description: "This permission can create Monitor Report Subscriber.",
|
||||
isAssignableToTenant: true,
|
||||
isAccessControlPermission: false,
|
||||
},
|
||||
{
|
||||
permission: Permission.DeleteMonitorReportSubscriber,
|
||||
title: "Delete Monitor Report Subscriber",
|
||||
description: "This permission can delete Monitor Report Subscriber.",
|
||||
isAssignableToTenant: true,
|
||||
isAccessControlPermission: false,
|
||||
},
|
||||
{
|
||||
permission: Permission.EditMonitorReportSubscriber,
|
||||
title: "Edit Monitor Report Subscriber",
|
||||
description: "This permission can edit Monitor Report Subscriber.",
|
||||
isAssignableToTenant: true,
|
||||
isAccessControlPermission: false,
|
||||
},
|
||||
{
|
||||
permission: Permission.ReadMonitorReportSubscriber,
|
||||
title: "Read Monitor Report Subscriber",
|
||||
description: "This permission can read Monitor Report Subscriber.",
|
||||
isAssignableToTenant: true,
|
||||
isAccessControlPermission: false,
|
||||
},
|
||||
|
||||
{
|
||||
permission: Permission.CreateMonitorReportMonitor,
|
||||
title: "Create Monitor Report Monitor",
|
||||
description: "This permission can create Monitor Report Monitor.",
|
||||
isAssignableToTenant: true,
|
||||
isAccessControlPermission: false,
|
||||
},
|
||||
{
|
||||
permission: Permission.DeleteMonitorReportMonitor,
|
||||
title: "Delete Monitor Report Monitor",
|
||||
description: "This permission can delete Monitor Report Monitor.",
|
||||
isAssignableToTenant: true,
|
||||
isAccessControlPermission: false,
|
||||
},
|
||||
{
|
||||
permission: Permission.EditMonitorReportMonitor,
|
||||
title: "Edit Monitor Report Monitor",
|
||||
description: "This permission can edit Monitor Report Monitor.",
|
||||
isAssignableToTenant: true,
|
||||
isAccessControlPermission: false,
|
||||
},
|
||||
{
|
||||
permission: Permission.ReadMonitorReportMonitor,
|
||||
title: "Read Monitor Report Monitor",
|
||||
description: "This permission can read Monitor Report Monitor.",
|
||||
isAssignableToTenant: true,
|
||||
isAccessControlPermission: false,
|
||||
},
|
||||
|
||||
11
CommonServer/Services/MonitorReportService.ts
Normal file
11
CommonServer/Services/MonitorReportService.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
import PostgresDatabase from "../Infrastructure/PostgresDatabase";
|
||||
import DatabaseService from "./DatabaseService";
|
||||
import Model from "Model/Models/MonitorReport";
|
||||
|
||||
export class Service extends DatabaseService<Model> {
|
||||
public constructor(postgresDatabase?: PostgresDatabase) {
|
||||
super(Model, postgresDatabase);
|
||||
}
|
||||
}
|
||||
|
||||
export default new Service();
|
||||
@@ -138,6 +138,14 @@ const Icon: FunctionComponent<ComponentProps> = ({
|
||||
d="m3 3 8.735 8.735m0 0a.374.374 0 1 1 .53.53m-.53-.53.53.53m0 0L21 21M14.652 9.348a3.75 3.75 0 0 1 0 5.304m2.121-7.425a6.75 6.75 0 0 1 0 9.546m2.121-11.667c3.808 3.807 3.808 9.98 0 13.788m-9.546-4.242a3.733 3.733 0 0 1-1.06-2.122m-1.061 4.243a6.75 6.75 0 0 1-1.625-6.929m-.496 9.05c-3.068-3.067-3.664-7.67-1.79-11.334M12 12h.008v.008H12V12Z"
|
||||
/>,
|
||||
);
|
||||
} else if (icon === IconProp.DocumentText) {
|
||||
return getSvgWrapper(
|
||||
<path
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z"
|
||||
/>,
|
||||
);
|
||||
} else if (icon === IconProp.EyeSlash) {
|
||||
return getSvgWrapper(
|
||||
<path
|
||||
|
||||
0
Dashboard/src/Pages/Monitor/MonitorReports.tsx
Normal file
0
Dashboard/src/Pages/Monitor/MonitorReports.tsx
Normal file
@@ -115,6 +115,18 @@ const DashboardSideMenu: FunctionComponent<ComponentProps> = (
|
||||
}}
|
||||
/>
|
||||
</SideMenuSection>
|
||||
|
||||
<SideMenuSection title="More">
|
||||
<SideMenuItem
|
||||
link={{
|
||||
title: "Monitor Reports",
|
||||
to: RouteUtil.populateRouteParams(
|
||||
RouteMap[PageMap.MONITOR_REPORTS] as Route,
|
||||
),
|
||||
}}
|
||||
icon={IconProp.DocumentText}
|
||||
/>
|
||||
</SideMenuSection>
|
||||
</SideMenu>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -79,6 +79,14 @@ enum PageMap {
|
||||
SCHEDULED_MAINTENANCE_VIEW_OWNERS = "SCHEDULED_MAINTENANCE_VIEW_OWNERS",
|
||||
|
||||
MONITORS = "MONITORS",
|
||||
|
||||
MONITOR_REPORTS_ROOT = "MONITOR_REPORTS_ROOT",
|
||||
MONITOR_REPORTS = "MONITOR_REPORTS",
|
||||
MONITOR_REPORT_VIEW = "MONITOR_REPORT_VIEW",
|
||||
MONITOR_REPORT_VIEW_DELETE = "MONITOR_REPORT_VIEW_DELETE",
|
||||
MONITOR_REPORT_VIEW_SETTINGS = "MONITOR_REPORT_VIEW_SETTINGS",
|
||||
MONITOR_REPORT_VIEW_MONITORS = "MONITOR_REPORT_VIEW_MONITORS",
|
||||
|
||||
MONITORS_ROOT = "MONITORS_ROOT",
|
||||
MONITORS_INOPERATIONAL = "MONITORS_INOPERATIONAL",
|
||||
MONITORS_DISABLED = "MONITORS_DISABLED",
|
||||
|
||||
@@ -228,6 +228,33 @@ const RouteMap: Dictionary<Route> = {
|
||||
[PageMap.MONITORS_ROOT]: new Route(
|
||||
`/dashboard/${RouteParams.ProjectID}/monitors/*`,
|
||||
),
|
||||
|
||||
[PageMap.MONITOR_REPORTS]: new Route(
|
||||
`/dashboard/${RouteParams.ProjectID}/monitors/reports`,
|
||||
),
|
||||
|
||||
[PageMap.MONITOR_REPORTS_ROOT]: new Route(
|
||||
`/dashboard/${RouteParams.ProjectID}/monitors/reports`,
|
||||
),
|
||||
|
||||
[PageMap.MONITOR_REPORT_VIEW]: new Route(
|
||||
`/dashboard/${RouteParams.ProjectID}/monitors/reports/${
|
||||
RouteParams.ModelID
|
||||
}`,
|
||||
),
|
||||
|
||||
[PageMap.MONITOR_REPORT_VIEW_DELETE]: new Route(
|
||||
`/dashboard/${RouteParams.ProjectID}/monitors/reports/${
|
||||
RouteParams.ModelID
|
||||
}/delete`,
|
||||
),
|
||||
|
||||
[PageMap.MONITOR_REPORT_VIEW_SETTINGS]: new Route(
|
||||
`/dashboard/${RouteParams.ProjectID}/monitors/reports/${
|
||||
RouteParams.ModelID
|
||||
}/settings`,
|
||||
),
|
||||
|
||||
[PageMap.MONITORS]: new Route(`/dashboard/${RouteParams.ProjectID}/monitors`),
|
||||
|
||||
[PageMap.MONITORS_INOPERATIONAL]: new Route(
|
||||
|
||||
@@ -131,6 +131,10 @@ import ServiceCatalogDependency from "./ServiceCatalogDependency";
|
||||
import ServiceCatalogMonitor from "./ServiceCatalogMonitor";
|
||||
import ServiceCatalogTelemetryService from "./ServiceCatalogTelemetryService";
|
||||
|
||||
|
||||
// Monitor Report.
|
||||
import MonitorReport from "./MonitorReport";
|
||||
|
||||
export default [
|
||||
User,
|
||||
Probe,
|
||||
@@ -281,4 +285,6 @@ export default [
|
||||
|
||||
ProbeOwnerTeam,
|
||||
ProbeOwnerUser,
|
||||
|
||||
MonitorReport
|
||||
];
|
||||
|
||||
638
Model/Models/MonitorReport.ts
Normal file
638
Model/Models/MonitorReport.ts
Normal file
@@ -0,0 +1,638 @@
|
||||
import File from "./File";
|
||||
import Label from "./Label";
|
||||
import MonitorStatus from "./MonitorStatus";
|
||||
import Project from "./Project";
|
||||
import ProjectSmtpConfig from "./ProjectSmtpConfig";
|
||||
import User from "./User";
|
||||
import BaseModel from "Common/Models/BaseModel";
|
||||
import Route from "Common/Types/API/Route";
|
||||
import ColumnAccessControl from "Common/Types/Database/AccessControl/ColumnAccessControl";
|
||||
import TableAccessControl from "Common/Types/Database/AccessControl/TableAccessControl";
|
||||
import AccessControlColumn from "Common/Types/Database/AccessControlColumn";
|
||||
import ColumnLength from "Common/Types/Database/ColumnLength";
|
||||
import ColumnType from "Common/Types/Database/ColumnType";
|
||||
import CrudApiEndpoint from "Common/Types/Database/CrudApiEndpoint";
|
||||
import EnableDocumentation from "Common/Types/Database/EnableDocumentation";
|
||||
import EnableWorkflow from "Common/Types/Database/EnableWorkflow";
|
||||
import SlugifyColumn from "Common/Types/Database/SlugifyColumn";
|
||||
import TableColumn from "Common/Types/Database/TableColumn";
|
||||
import TableColumnType from "Common/Types/Database/TableColumnType";
|
||||
import TableMetadata from "Common/Types/Database/TableMetadata";
|
||||
import TenantColumn from "Common/Types/Database/TenantColumn";
|
||||
import UniqueColumnBy from "Common/Types/Database/UniqueColumnBy";
|
||||
import IconProp from "Common/Types/Icon/IconProp";
|
||||
import { JSONObject } from "Common/Types/JSON";
|
||||
import ObjectID from "Common/Types/ObjectID";
|
||||
import Permission from "Common/Types/Permission";
|
||||
import {
|
||||
Column,
|
||||
Entity,
|
||||
Index,
|
||||
JoinColumn,
|
||||
JoinTable,
|
||||
ManyToMany,
|
||||
ManyToOne,
|
||||
} from "typeorm";
|
||||
|
||||
@EnableDocumentation()
|
||||
@AccessControlColumn("labels")
|
||||
@TenantColumn("projectId")
|
||||
@TableAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CreateMonitorReport,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.ReadMonitorReport,
|
||||
],
|
||||
delete: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.DeleteMonitorReport,
|
||||
],
|
||||
update: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.EditMonitorReport,
|
||||
],
|
||||
})
|
||||
@EnableWorkflow({
|
||||
create: true,
|
||||
delete: true,
|
||||
update: true,
|
||||
read: true,
|
||||
})
|
||||
@CrudApiEndpoint(new Route("/monitor-report"))
|
||||
@SlugifyColumn("name", "slug")
|
||||
@Entity({
|
||||
name: "MonitorReport",
|
||||
})
|
||||
@TableMetadata({
|
||||
tableName: "MonitorReport",
|
||||
singularName: "Monitor Report",
|
||||
pluralName: "Monitor Reports",
|
||||
icon: IconProp.DocumentText,
|
||||
tableDescription: "Manage Reports for your Monitors",
|
||||
})
|
||||
export default class MonitorReport extends BaseModel {
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CreateMonitorReport,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.ReadMonitorReport,
|
||||
],
|
||||
update: [],
|
||||
})
|
||||
@TableColumn({
|
||||
manyToOneRelationColumn: "projectId",
|
||||
type: TableColumnType.Entity,
|
||||
modelType: Project,
|
||||
title: "Project",
|
||||
description: "Relation to Project Resource in which this object belongs",
|
||||
})
|
||||
@ManyToOne(
|
||||
() => {
|
||||
return Project;
|
||||
},
|
||||
{
|
||||
eager: false,
|
||||
nullable: true,
|
||||
onDelete: "CASCADE",
|
||||
orphanedRowAction: "nullify",
|
||||
},
|
||||
)
|
||||
@JoinColumn({ name: "projectId" })
|
||||
public project?: Project = undefined;
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CreateMonitorReport,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.ReadMonitorReport,
|
||||
],
|
||||
update: [],
|
||||
})
|
||||
@Index()
|
||||
@TableColumn({
|
||||
type: TableColumnType.ObjectID,
|
||||
required: true,
|
||||
canReadOnRelationQuery: true,
|
||||
title: "Project ID",
|
||||
description: "ID of your OneUptime Project in which this object belongs",
|
||||
})
|
||||
@Column({
|
||||
type: ColumnType.ObjectID,
|
||||
nullable: false,
|
||||
transformer: ObjectID.getDatabaseTransformer(),
|
||||
})
|
||||
public projectId?: ObjectID = undefined;
|
||||
|
||||
@UniqueColumnBy("projectId")
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CreateMonitorReport,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.ReadMonitorReport,
|
||||
],
|
||||
update: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.EditMonitorReport,
|
||||
],
|
||||
})
|
||||
@Index()
|
||||
@TableColumn({
|
||||
required: true,
|
||||
type: TableColumnType.ShortText,
|
||||
title: "Name",
|
||||
description: "Any friendly name of this object",
|
||||
canReadOnRelationQuery: true,
|
||||
})
|
||||
@Column({
|
||||
nullable: false,
|
||||
type: ColumnType.ShortText,
|
||||
length: ColumnLength.ShortText,
|
||||
})
|
||||
public name?: string = undefined;
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CreateMonitorReport,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.ReadMonitorReport,
|
||||
],
|
||||
update: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.EditMonitorReport,
|
||||
],
|
||||
})
|
||||
@TableColumn({
|
||||
required: false,
|
||||
type: TableColumnType.LongText,
|
||||
title: "Description",
|
||||
description: "Friendly description that will help you remember",
|
||||
})
|
||||
@Column({
|
||||
nullable: true,
|
||||
type: ColumnType.LongText,
|
||||
length: ColumnLength.LongText,
|
||||
})
|
||||
public description?: string = undefined;
|
||||
|
||||
@Index()
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CreateMonitorReport,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.ReadMonitorReport,
|
||||
],
|
||||
update: [],
|
||||
})
|
||||
@TableColumn({
|
||||
required: true,
|
||||
unique: true,
|
||||
type: TableColumnType.Slug,
|
||||
title: "Slug",
|
||||
description: "Friendly globally unique name for your object",
|
||||
})
|
||||
@Column({
|
||||
nullable: false,
|
||||
type: ColumnType.Slug,
|
||||
length: ColumnLength.Slug,
|
||||
unique: true,
|
||||
})
|
||||
public slug?: string = undefined;
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CreateMonitorReport,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.ReadMonitorReport,
|
||||
],
|
||||
update: [],
|
||||
})
|
||||
@TableColumn({
|
||||
manyToOneRelationColumn: "createdByUserId",
|
||||
type: TableColumnType.Entity,
|
||||
modelType: User,
|
||||
title: "Created by User",
|
||||
description:
|
||||
"Relation to User who created this object (if this object was created by a User)",
|
||||
})
|
||||
@ManyToOne(
|
||||
() => {
|
||||
return User;
|
||||
},
|
||||
{
|
||||
eager: false,
|
||||
nullable: true,
|
||||
onDelete: "CASCADE",
|
||||
orphanedRowAction: "nullify",
|
||||
},
|
||||
)
|
||||
@JoinColumn({ name: "createdByUserId" })
|
||||
public createdByUser?: User = undefined;
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CreateMonitorReport,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.ReadMonitorReport,
|
||||
],
|
||||
update: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.EditMonitorReport,
|
||||
],
|
||||
})
|
||||
@TableColumn({
|
||||
required: false,
|
||||
type: TableColumnType.EntityArray,
|
||||
modelType: Label,
|
||||
title: "Labels",
|
||||
description:
|
||||
"Relation to Labels Array where this object is categorized in.",
|
||||
})
|
||||
@ManyToMany(
|
||||
() => {
|
||||
return Label;
|
||||
},
|
||||
{ eager: false },
|
||||
)
|
||||
@JoinTable({
|
||||
name: "MonitorReportLabel",
|
||||
inverseJoinColumn: {
|
||||
name: "labelId",
|
||||
referencedColumnName: "_id",
|
||||
},
|
||||
joinColumn: {
|
||||
name: "monitorReportId",
|
||||
referencedColumnName: "_id",
|
||||
},
|
||||
})
|
||||
public labels?: Array<Label> = undefined;
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CreateMonitorReport,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.ReadMonitorReport,
|
||||
],
|
||||
update: [],
|
||||
})
|
||||
@TableColumn({
|
||||
type: TableColumnType.ObjectID,
|
||||
title: "Created by User ID",
|
||||
description:
|
||||
"User ID who created this object (if this object was created by a User)",
|
||||
})
|
||||
@Column({
|
||||
type: ColumnType.ObjectID,
|
||||
nullable: true,
|
||||
transformer: ObjectID.getDatabaseTransformer(),
|
||||
})
|
||||
public createdByUserId?: ObjectID = undefined;
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [],
|
||||
read: [],
|
||||
update: [],
|
||||
})
|
||||
@TableColumn({
|
||||
manyToOneRelationColumn: "deletedByUserId",
|
||||
type: TableColumnType.Entity,
|
||||
title: "Deleted by User",
|
||||
description:
|
||||
"Relation to User who deleted this object (if this object was deleted by a User)",
|
||||
})
|
||||
@ManyToOne(
|
||||
() => {
|
||||
return User;
|
||||
},
|
||||
{
|
||||
cascade: false,
|
||||
eager: false,
|
||||
nullable: true,
|
||||
onDelete: "CASCADE",
|
||||
orphanedRowAction: "nullify",
|
||||
},
|
||||
)
|
||||
@JoinColumn({ name: "deletedByUserId" })
|
||||
public deletedByUser?: User = undefined;
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [],
|
||||
read: [],
|
||||
update: [],
|
||||
})
|
||||
@TableColumn({
|
||||
type: TableColumnType.ObjectID,
|
||||
title: "Deleted by User ID",
|
||||
description:
|
||||
"User ID who deleted this object (if this object was deleted by a User)",
|
||||
})
|
||||
@Column({
|
||||
type: ColumnType.ObjectID,
|
||||
nullable: true,
|
||||
transformer: ObjectID.getDatabaseTransformer(),
|
||||
})
|
||||
public deletedByUserId?: ObjectID = undefined;
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CreateMonitorReport,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.ReadMonitorReport,
|
||||
],
|
||||
update: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.EditMonitorReport,
|
||||
],
|
||||
})
|
||||
@TableColumn({
|
||||
manyToOneRelationColumn: "logoFileId",
|
||||
type: TableColumnType.Entity,
|
||||
modelType: File,
|
||||
title: "Logo",
|
||||
description: "Monitor Report Logo",
|
||||
})
|
||||
@ManyToOne(
|
||||
() => {
|
||||
return File;
|
||||
},
|
||||
{
|
||||
eager: false,
|
||||
nullable: true,
|
||||
onDelete: "CASCADE",
|
||||
orphanedRowAction: "delete",
|
||||
},
|
||||
)
|
||||
@JoinColumn({ name: "logoFileId" })
|
||||
public logoFile?: File = undefined;
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CreateMonitorReport,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.ReadMonitorReport,
|
||||
],
|
||||
update: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.EditMonitorReport,
|
||||
],
|
||||
})
|
||||
@TableColumn({
|
||||
type: TableColumnType.ObjectID,
|
||||
title: "Logo",
|
||||
description: "Monitor Report Logo File ID",
|
||||
})
|
||||
@Column({
|
||||
type: ColumnType.ObjectID,
|
||||
nullable: true,
|
||||
transformer: ObjectID.getDatabaseTransformer(),
|
||||
})
|
||||
public logoFileId?: ObjectID = undefined;
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CreateMonitorReport,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.ReadMonitorReport,
|
||||
],
|
||||
update: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.EditMonitorReport,
|
||||
],
|
||||
})
|
||||
@TableColumn({
|
||||
isDefaultValueColumn: false,
|
||||
required: false,
|
||||
type: TableColumnType.JSON,
|
||||
title: "Custom Fields",
|
||||
description: "Custom Fields on this resource.",
|
||||
})
|
||||
@Column({
|
||||
type: ColumnType.JSON,
|
||||
nullable: true,
|
||||
})
|
||||
public customFields?: JSONObject = undefined;
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CreateMonitorReport,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.ReadMonitorReport,
|
||||
],
|
||||
update: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.EditMonitorReport,
|
||||
],
|
||||
})
|
||||
@TableColumn({
|
||||
manyToOneRelationColumn: "smtpConfigId",
|
||||
type: TableColumnType.Entity,
|
||||
modelType: ProjectSmtpConfig,
|
||||
title: "SMTP Config",
|
||||
description:
|
||||
"Relation to SMTP Config Resource which is used to send email to subscribers.",
|
||||
})
|
||||
@ManyToOne(
|
||||
() => {
|
||||
return ProjectSmtpConfig;
|
||||
},
|
||||
{
|
||||
eager: false,
|
||||
nullable: true,
|
||||
onDelete: "CASCADE",
|
||||
orphanedRowAction: "nullify",
|
||||
},
|
||||
)
|
||||
@JoinColumn({ name: "smtpConfigId" })
|
||||
public smtpConfig?: ProjectSmtpConfig = undefined;
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CreateMonitorReport,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.ReadMonitorReport,
|
||||
],
|
||||
update: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.EditMonitorReport,
|
||||
],
|
||||
})
|
||||
@Index()
|
||||
@TableColumn({
|
||||
type: TableColumnType.ObjectID,
|
||||
required: false,
|
||||
canReadOnRelationQuery: true,
|
||||
title: "SMTP Config ID",
|
||||
description:
|
||||
"ID of your SMTP Config Resource which is used to send email to subscribers.",
|
||||
})
|
||||
@Column({
|
||||
type: ColumnType.ObjectID,
|
||||
nullable: true,
|
||||
transformer: ObjectID.getDatabaseTransformer(),
|
||||
})
|
||||
public smtpConfigId?: ObjectID = undefined;
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CreateMonitorReport,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.ReadMonitorReport,
|
||||
],
|
||||
update: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.EditMonitorReport,
|
||||
],
|
||||
})
|
||||
@TableColumn({
|
||||
required: false,
|
||||
type: TableColumnType.EntityArray,
|
||||
modelType: MonitorStatus,
|
||||
title: "Downtime Monitor Statuses",
|
||||
description:
|
||||
'List of monitors statuses that are considered as "down" for this status page.',
|
||||
})
|
||||
@ManyToMany(
|
||||
() => {
|
||||
return MonitorStatus;
|
||||
},
|
||||
{ eager: false },
|
||||
)
|
||||
@JoinTable({
|
||||
name: "MonitorReportDownMonitorStatus",
|
||||
inverseJoinColumn: {
|
||||
name: "monitorStatusId",
|
||||
referencedColumnName: "_id",
|
||||
},
|
||||
joinColumn: {
|
||||
name: "monitorReportId",
|
||||
referencedColumnName: "_id",
|
||||
},
|
||||
})
|
||||
public downtimeMonitorStatuses?: Array<MonitorStatus> = undefined;
|
||||
}
|
||||
680
Model/Models/MonitorReportMonitors.ts
Normal file
680
Model/Models/MonitorReportMonitors.ts
Normal file
@@ -0,0 +1,680 @@
|
||||
import Monitor from "./Monitor";
|
||||
import MonitorGroup from "./MonitorGroup";
|
||||
import Project from "./Project";
|
||||
import MonitorReport from "./MonitorReport";
|
||||
import User from "./User";
|
||||
import BaseModel from "Common/Models/BaseModel";
|
||||
import Route from "Common/Types/API/Route";
|
||||
import ColumnAccessControl from "Common/Types/Database/AccessControl/ColumnAccessControl";
|
||||
import TableAccessControl from "Common/Types/Database/AccessControl/TableAccessControl";
|
||||
import CanAccessIfCanReadOn from "Common/Types/Database/CanAccessIfCanReadOn";
|
||||
import ColumnLength from "Common/Types/Database/ColumnLength";
|
||||
import ColumnType from "Common/Types/Database/ColumnType";
|
||||
import CrudApiEndpoint from "Common/Types/Database/CrudApiEndpoint";
|
||||
import EnableDocumentation from "Common/Types/Database/EnableDocumentation";
|
||||
import EnableWorkflow from "Common/Types/Database/EnableWorkflow";
|
||||
import SlugifyColumn from "Common/Types/Database/SlugifyColumn";
|
||||
import TableColumn from "Common/Types/Database/TableColumn";
|
||||
import TableColumnType from "Common/Types/Database/TableColumnType";
|
||||
import TableMetadata from "Common/Types/Database/TableMetadata";
|
||||
import TenantColumn from "Common/Types/Database/TenantColumn";
|
||||
import IconProp from "Common/Types/Icon/IconProp";
|
||||
import ObjectID from "Common/Types/ObjectID";
|
||||
import Permission from "Common/Types/Permission";
|
||||
import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
|
||||
|
||||
export enum UptimePrecision {
|
||||
NO_DECIMAL = "99% (No Decimal)",
|
||||
ONE_DECIMAL = "99.9% (One Decimal)",
|
||||
TWO_DECIMAL = "99.99% (Two Decimal)",
|
||||
THREE_DECIMAL = "99.999% (Three Decimal)",
|
||||
}
|
||||
|
||||
@EnableDocumentation()
|
||||
@CanAccessIfCanReadOn("monitorReport")
|
||||
@TenantColumn("projectId")
|
||||
@TableAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CreateMonitorReportMonitor,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.ReadMonitorReportMonitor,
|
||||
],
|
||||
delete: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.DeleteMonitorReportMonitor,
|
||||
],
|
||||
update: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.EditMonitorReportMonitor,
|
||||
],
|
||||
})
|
||||
@EnableWorkflow({
|
||||
create: true,
|
||||
delete: true,
|
||||
update: true,
|
||||
read: true,
|
||||
})
|
||||
@CrudApiEndpoint(new Route("/monitor-report-monitor"))
|
||||
@SlugifyColumn("name", "slug")
|
||||
@TableMetadata({
|
||||
tableName: "MonitorReportMonitor",
|
||||
singularName: "Monitor in Monitor Report",
|
||||
pluralName: "Monitors in Monitor Report",
|
||||
icon: IconProp.AltGlobe,
|
||||
tableDescription: "Monitors in Monitor Report",
|
||||
})
|
||||
@Entity({
|
||||
name: "MonitorReportMonitor",
|
||||
})
|
||||
export default class MonitorReportMonitor extends BaseModel {
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CreateMonitorReportMonitor,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.ReadMonitorReportMonitor,
|
||||
],
|
||||
update: [],
|
||||
})
|
||||
@TableColumn({
|
||||
manyToOneRelationColumn: "projectId",
|
||||
type: TableColumnType.Entity,
|
||||
modelType: Project,
|
||||
title: "Project",
|
||||
description: "Relation to Project Resource in which this object belongs",
|
||||
})
|
||||
@ManyToOne(
|
||||
() => {
|
||||
return Project;
|
||||
},
|
||||
{
|
||||
eager: false,
|
||||
nullable: true,
|
||||
onDelete: "CASCADE",
|
||||
orphanedRowAction: "nullify",
|
||||
},
|
||||
)
|
||||
@JoinColumn({ name: "projectId" })
|
||||
public project?: Project = undefined;
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CreateMonitorReportMonitor,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.ReadMonitorReportMonitor,
|
||||
],
|
||||
update: [],
|
||||
})
|
||||
@Index()
|
||||
@TableColumn({
|
||||
type: TableColumnType.ObjectID,
|
||||
required: true,
|
||||
canReadOnRelationQuery: true,
|
||||
title: "Project ID",
|
||||
description: "ID of your OneUptime Project in which this object belongs",
|
||||
})
|
||||
@Column({
|
||||
type: ColumnType.ObjectID,
|
||||
nullable: false,
|
||||
transformer: ObjectID.getDatabaseTransformer(),
|
||||
})
|
||||
public projectId?: ObjectID = undefined;
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CreateMonitorReportMonitor,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.ReadMonitorReportMonitor,
|
||||
],
|
||||
update: [],
|
||||
})
|
||||
@TableColumn({
|
||||
manyToOneRelationColumn: "monitorReportId",
|
||||
type: TableColumnType.Entity,
|
||||
modelType: MonitorReport,
|
||||
title: "Monitor Report",
|
||||
description:
|
||||
"Relation to Monitor Report Resource in which this object belongs",
|
||||
})
|
||||
@ManyToOne(
|
||||
() => {
|
||||
return MonitorReport;
|
||||
},
|
||||
{
|
||||
eager: false,
|
||||
nullable: true,
|
||||
onDelete: "CASCADE",
|
||||
orphanedRowAction: "nullify",
|
||||
},
|
||||
)
|
||||
@JoinColumn({ name: "monitorReportId" })
|
||||
public monitorReport?: MonitorReport = undefined;
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CreateMonitorReportMonitor,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.ReadMonitorReportMonitor,
|
||||
],
|
||||
update: [],
|
||||
})
|
||||
@Index()
|
||||
@TableColumn({
|
||||
type: TableColumnType.ObjectID,
|
||||
required: true,
|
||||
title: "Monitor Report ID",
|
||||
description: "ID of your Monitor Report resource where this object belongs",
|
||||
})
|
||||
@Column({
|
||||
type: ColumnType.ObjectID,
|
||||
nullable: false,
|
||||
transformer: ObjectID.getDatabaseTransformer(),
|
||||
})
|
||||
public monitorReportId?: ObjectID = undefined;
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CreateMonitorReportMonitor,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.ReadMonitorReportMonitor,
|
||||
],
|
||||
update: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.EditMonitorReportMonitor,
|
||||
],
|
||||
})
|
||||
@TableColumn({
|
||||
manyToOneRelationColumn: "monitorId",
|
||||
type: TableColumnType.Entity,
|
||||
modelType: Monitor,
|
||||
title: "Monitor",
|
||||
description: "Relation to Monitor Resource in which this object belongs",
|
||||
})
|
||||
@ManyToOne(
|
||||
() => {
|
||||
return Monitor;
|
||||
},
|
||||
{
|
||||
eager: false,
|
||||
nullable: true,
|
||||
onDelete: "CASCADE",
|
||||
orphanedRowAction: "nullify",
|
||||
},
|
||||
)
|
||||
@JoinColumn({ name: "monitorId" })
|
||||
public monitor?: Monitor = undefined;
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CreateMonitorReportMonitor,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.ReadMonitorReportMonitor,
|
||||
],
|
||||
update: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.EditMonitorReportMonitor,
|
||||
],
|
||||
})
|
||||
@Index()
|
||||
@TableColumn({
|
||||
type: TableColumnType.ObjectID,
|
||||
required: false,
|
||||
title: "Monitor ID",
|
||||
description: "Relation to Monitor ID Resource in which this object belongs",
|
||||
})
|
||||
@Column({
|
||||
type: ColumnType.ObjectID,
|
||||
nullable: true,
|
||||
transformer: ObjectID.getDatabaseTransformer(),
|
||||
})
|
||||
public monitorId?: ObjectID = undefined;
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CreateMonitorReportMonitor,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.ReadMonitorReportMonitor,
|
||||
],
|
||||
update: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.EditMonitorReportMonitor,
|
||||
],
|
||||
})
|
||||
@TableColumn({
|
||||
manyToOneRelationColumn: "monitorGroupId",
|
||||
type: TableColumnType.Entity,
|
||||
modelType: MonitorGroup,
|
||||
title: "Monitor Group",
|
||||
description:
|
||||
"Relation to Monitor Group Resource in which this object belongs",
|
||||
})
|
||||
@ManyToOne(
|
||||
() => {
|
||||
return MonitorGroup;
|
||||
},
|
||||
{
|
||||
eager: false,
|
||||
nullable: true,
|
||||
onDelete: "CASCADE",
|
||||
orphanedRowAction: "nullify",
|
||||
},
|
||||
)
|
||||
@JoinColumn({ name: "monitorGroupId" })
|
||||
public monitorGroup?: MonitorGroup = undefined;
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CreateMonitorReportMonitor,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.ReadMonitorReportMonitor,
|
||||
],
|
||||
update: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.EditMonitorReportMonitor,
|
||||
],
|
||||
})
|
||||
@Index()
|
||||
@TableColumn({
|
||||
type: TableColumnType.ObjectID,
|
||||
required: false,
|
||||
title: "Monitor Group ID",
|
||||
description:
|
||||
"Relation to Monitor Group ID Resource in which this object belongs",
|
||||
})
|
||||
@Column({
|
||||
type: ColumnType.ObjectID,
|
||||
nullable: true,
|
||||
transformer: ObjectID.getDatabaseTransformer(),
|
||||
})
|
||||
public monitorGroupId?: ObjectID = undefined;
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CreateMonitorReportMonitor,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.ReadMonitorReportMonitor,
|
||||
],
|
||||
update: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.EditMonitorReportMonitor,
|
||||
],
|
||||
})
|
||||
@TableColumn({
|
||||
manyToOneRelationColumn: "monitorReportGroupId",
|
||||
type: TableColumnType.Entity,
|
||||
modelType: MonitorGroup,
|
||||
title: "Monitor Report Group",
|
||||
description:
|
||||
"Does this monitor belong to a status page group? If so - which one is it?",
|
||||
})
|
||||
@ManyToOne(
|
||||
() => {
|
||||
return MonitorGroup;
|
||||
},
|
||||
{
|
||||
eager: false,
|
||||
nullable: true,
|
||||
onDelete: "CASCADE",
|
||||
orphanedRowAction: "nullify",
|
||||
},
|
||||
)
|
||||
@JoinColumn({ name: "monitorReportGroupId" })
|
||||
public monitorReportGroup?: MonitorGroup = undefined;
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CreateMonitorReportMonitor,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.ReadMonitorReportMonitor,
|
||||
],
|
||||
update: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.EditMonitorReportMonitor,
|
||||
],
|
||||
})
|
||||
@Index()
|
||||
@TableColumn({
|
||||
type: TableColumnType.ObjectID,
|
||||
required: false,
|
||||
title: "Group ID",
|
||||
description: "Does this monitor belong to a status page group?",
|
||||
})
|
||||
@Column({
|
||||
type: ColumnType.ObjectID,
|
||||
nullable: true,
|
||||
transformer: ObjectID.getDatabaseTransformer(),
|
||||
})
|
||||
public monitorReportGroupId?: ObjectID = undefined;
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CreateMonitorReportMonitor,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.ReadMonitorReportMonitor,
|
||||
],
|
||||
update: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.EditMonitorReportMonitor,
|
||||
],
|
||||
})
|
||||
@TableColumn({
|
||||
required: true,
|
||||
type: TableColumnType.ShortText,
|
||||
title: "Display Name",
|
||||
description: "Display name of the monitor on the Monitor Report",
|
||||
})
|
||||
@Column({
|
||||
nullable: false,
|
||||
type: ColumnType.ShortText,
|
||||
length: ColumnLength.ShortText,
|
||||
})
|
||||
public displayName?: string = undefined;
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CreateMonitorReportMonitor,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.ReadMonitorReportMonitor,
|
||||
],
|
||||
update: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.EditMonitorReportMonitor,
|
||||
],
|
||||
})
|
||||
@TableColumn({
|
||||
required: false,
|
||||
type: TableColumnType.Markdown,
|
||||
title: "Display Description",
|
||||
description:
|
||||
"Display description of the monitor on the Monitor Report. This is in markdown format.",
|
||||
})
|
||||
@Column({
|
||||
nullable: true,
|
||||
type: ColumnType.Markdown,
|
||||
})
|
||||
public displayDescription?: string = undefined;
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CreateMonitorReportMonitor,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.ReadMonitorReportMonitor,
|
||||
],
|
||||
update: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.EditMonitorReportMonitor,
|
||||
],
|
||||
})
|
||||
@TableColumn({
|
||||
type: TableColumnType.ShortText,
|
||||
title: "Uptime Percent Precision",
|
||||
required: false,
|
||||
description:
|
||||
"Precision of uptime percent of this monitor for the last 90 days",
|
||||
})
|
||||
@Column({
|
||||
type: ColumnType.ShortText,
|
||||
nullable: true,
|
||||
})
|
||||
public uptimePercentPrecision?: UptimePrecision = undefined;
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CreateMonitorReportMonitor,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.ReadMonitorReportMonitor,
|
||||
],
|
||||
update: [],
|
||||
})
|
||||
@TableColumn({
|
||||
manyToOneRelationColumn: "createdByUserId",
|
||||
type: TableColumnType.Entity,
|
||||
modelType: User,
|
||||
title: "Created by User",
|
||||
description:
|
||||
"Relation to User who created this object (if this object was created by a User)",
|
||||
})
|
||||
@ManyToOne(
|
||||
() => {
|
||||
return User;
|
||||
},
|
||||
{
|
||||
eager: false,
|
||||
nullable: true,
|
||||
onDelete: "CASCADE",
|
||||
orphanedRowAction: "nullify",
|
||||
},
|
||||
)
|
||||
@JoinColumn({ name: "createdByUserId" })
|
||||
public createdByUser?: User = undefined;
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CreateMonitorReportMonitor,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.ReadMonitorReportMonitor,
|
||||
],
|
||||
update: [],
|
||||
})
|
||||
@TableColumn({
|
||||
type: TableColumnType.ObjectID,
|
||||
title: "Created by User ID",
|
||||
description:
|
||||
"User ID who created this object (if this object was created by a User)",
|
||||
})
|
||||
@Column({
|
||||
type: ColumnType.ObjectID,
|
||||
nullable: true,
|
||||
transformer: ObjectID.getDatabaseTransformer(),
|
||||
})
|
||||
public createdByUserId?: ObjectID = undefined;
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CreateMonitorReportMonitor,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.ReadMonitorReportMonitor,
|
||||
],
|
||||
update: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.EditMonitorReportMonitor,
|
||||
],
|
||||
})
|
||||
@TableColumn({
|
||||
isDefaultValueColumn: false,
|
||||
type: TableColumnType.Number,
|
||||
title: "Order",
|
||||
description: "Order / Priority of this resource",
|
||||
})
|
||||
@Column({
|
||||
type: ColumnType.Number,
|
||||
})
|
||||
public order?: number = undefined;
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [],
|
||||
read: [],
|
||||
update: [],
|
||||
})
|
||||
@TableColumn({
|
||||
manyToOneRelationColumn: "deletedByUserId",
|
||||
type: TableColumnType.Entity,
|
||||
title: "Deleted by User",
|
||||
description:
|
||||
"Relation to User who deleted this object (if this object was deleted by a User)",
|
||||
})
|
||||
@ManyToOne(
|
||||
() => {
|
||||
return User;
|
||||
},
|
||||
{
|
||||
cascade: false,
|
||||
eager: false,
|
||||
nullable: true,
|
||||
onDelete: "CASCADE",
|
||||
orphanedRowAction: "nullify",
|
||||
},
|
||||
)
|
||||
@JoinColumn({ name: "deletedByUserId" })
|
||||
public deletedByUser?: User = undefined;
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [],
|
||||
read: [],
|
||||
update: [],
|
||||
})
|
||||
@TableColumn({
|
||||
type: TableColumnType.ObjectID,
|
||||
title: "Deleted by User ID",
|
||||
description:
|
||||
"User ID who deleted this object (if this object was deleted by a User)",
|
||||
})
|
||||
@Column({
|
||||
type: ColumnType.ObjectID,
|
||||
nullable: true,
|
||||
transformer: ObjectID.getDatabaseTransformer(),
|
||||
})
|
||||
public deletedByUserId?: ObjectID = undefined;
|
||||
}
|
||||
0
Model/Models/MonitorReportSubscriber.ts
Normal file
0
Model/Models/MonitorReportSubscriber.ts
Normal file
Reference in New Issue
Block a user