mirror of
https://github.com/OneUptime/oneuptime.git
synced 2026-04-06 00:32:12 +02:00
1140 lines
28 KiB
TypeScript
1140 lines
28 KiB
TypeScript
import Project from "./Project";
|
|
import Incident from "./Incident";
|
|
import Alert from "./Alert";
|
|
import AlertEpisode from "./AlertEpisode";
|
|
import IncidentEpisode from "./IncidentEpisode";
|
|
import Monitor from "./Monitor";
|
|
import ScheduledMaintenance from "./ScheduledMaintenance";
|
|
import StatusPage from "./StatusPage";
|
|
import StatusPageAnnouncement from "./StatusPageAnnouncement";
|
|
import User from "./User";
|
|
import OnCallDutyPolicy from "./OnCallDutyPolicy";
|
|
import OnCallDutyPolicyEscalationRule from "./OnCallDutyPolicyEscalationRule";
|
|
import OnCallDutyPolicySchedule from "./OnCallDutyPolicySchedule";
|
|
import Team from "./Team";
|
|
import BaseModel from "./DatabaseBaseModel/DatabaseBaseModel";
|
|
import Route from "../../Types/API/Route";
|
|
import ColumnAccessControl from "../../Types/Database/AccessControl/ColumnAccessControl";
|
|
import TableAccessControl from "../../Types/Database/AccessControl/TableAccessControl";
|
|
import ColumnLength from "../../Types/Database/ColumnLength";
|
|
import ColumnType from "../../Types/Database/ColumnType";
|
|
import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
|
|
import EnableDocumentation from "../../Types/Database/EnableDocumentation";
|
|
import EnableWorkflow from "../../Types/Database/EnableWorkflow";
|
|
import TableColumn from "../../Types/Database/TableColumn";
|
|
import TableColumnType from "../../Types/Database/TableColumnType";
|
|
import TableMetadata from "../../Types/Database/TableMetadata";
|
|
import TenantColumn from "../../Types/Database/TenantColumn";
|
|
import IconProp from "../../Types/Icon/IconProp";
|
|
import ObjectID from "../../Types/ObjectID";
|
|
import Permission from "../../Types/Permission";
|
|
import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
|
|
import WorkspaceType from "../../Types/Workspace/WorkspaceType";
|
|
import WorkspaceNotificationStatus from "../../Types/Workspace/WorkspaceNotificationStatus";
|
|
import WorkspaceNotificationActionType from "../../Types/Workspace/WorkspaceNotificationActionType";
|
|
|
|
@EnableDocumentation()
|
|
@TenantColumn("projectId")
|
|
@TableAccessControl({
|
|
create: [],
|
|
read: [
|
|
Permission.ProjectOwner,
|
|
Permission.ProjectAdmin,
|
|
Permission.ProjectMember,
|
|
Permission.ReadWorkspaceNotificationLog,
|
|
Permission.ReadAllProjectResources,
|
|
],
|
|
delete: [],
|
|
update: [],
|
|
})
|
|
@CrudApiEndpoint(new Route("/workspace-notification-log"))
|
|
@Entity({
|
|
name: "WorkspaceNotificationLog",
|
|
})
|
|
@EnableWorkflow({
|
|
create: true,
|
|
delete: false,
|
|
update: false,
|
|
})
|
|
@TableMetadata({
|
|
tableName: "WorkspaceNotificationLog",
|
|
singularName: "Workspace Notification Log",
|
|
pluralName: "Workspace Notification Logs",
|
|
icon: IconProp.Chat,
|
|
tableDescription:
|
|
"Logs of all workspace activities including messages, channel creation, user invitations, and button interactions for Slack and Microsoft Teams.",
|
|
})
|
|
export default class WorkspaceNotificationLog extends BaseModel {
|
|
@ColumnAccessControl({
|
|
create: [],
|
|
read: [
|
|
Permission.ProjectOwner,
|
|
Permission.ProjectAdmin,
|
|
Permission.ProjectMember,
|
|
Permission.ReadWorkspaceNotificationLog,
|
|
Permission.ReadAllProjectResources,
|
|
],
|
|
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: [],
|
|
read: [
|
|
Permission.ProjectOwner,
|
|
Permission.ProjectAdmin,
|
|
Permission.ProjectMember,
|
|
Permission.ReadWorkspaceNotificationLog,
|
|
Permission.ReadAllProjectResources,
|
|
],
|
|
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: [],
|
|
read: [
|
|
Permission.ProjectOwner,
|
|
Permission.ProjectAdmin,
|
|
Permission.ProjectMember,
|
|
Permission.ReadWorkspaceNotificationLog,
|
|
Permission.ReadAllProjectResources,
|
|
],
|
|
update: [],
|
|
})
|
|
@TableColumn({
|
|
required: true,
|
|
type: TableColumnType.ShortText,
|
|
title: "Workspace Type",
|
|
description: "Type of Workspace - Slack, Microsoft Teams",
|
|
canReadOnRelationQuery: false,
|
|
})
|
|
@Column({
|
|
nullable: false,
|
|
type: ColumnType.ShortText,
|
|
length: ColumnLength.ShortText,
|
|
})
|
|
public workspaceType?: WorkspaceType = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [],
|
|
read: [
|
|
Permission.ProjectOwner,
|
|
Permission.ProjectAdmin,
|
|
Permission.ProjectMember,
|
|
Permission.ReadWorkspaceNotificationLog,
|
|
Permission.ReadAllProjectResources,
|
|
],
|
|
update: [],
|
|
})
|
|
@TableColumn({
|
|
required: false,
|
|
type: TableColumnType.ShortText,
|
|
title: "Channel ID",
|
|
description: "Channel ID where the message was sent",
|
|
canReadOnRelationQuery: false,
|
|
})
|
|
@Column({
|
|
nullable: true,
|
|
type: ColumnType.ShortText,
|
|
length: ColumnLength.ShortText,
|
|
})
|
|
public channelId?: string = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [],
|
|
read: [
|
|
Permission.ProjectOwner,
|
|
Permission.ProjectAdmin,
|
|
Permission.ProjectMember,
|
|
Permission.ReadWorkspaceNotificationLog,
|
|
Permission.ReadAllProjectResources,
|
|
],
|
|
update: [],
|
|
})
|
|
@TableColumn({
|
|
required: false,
|
|
type: TableColumnType.ShortText,
|
|
title: "Channel Name",
|
|
description: "Channel Name where the message was sent",
|
|
canReadOnRelationQuery: false,
|
|
})
|
|
@Column({
|
|
nullable: true,
|
|
type: ColumnType.ShortText,
|
|
length: ColumnLength.ShortText,
|
|
})
|
|
public channelName?: string = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [],
|
|
read: [
|
|
Permission.ProjectOwner,
|
|
Permission.ProjectAdmin,
|
|
Permission.ProjectMember,
|
|
Permission.ReadWorkspaceNotificationLog,
|
|
Permission.ReadAllProjectResources,
|
|
],
|
|
update: [],
|
|
})
|
|
@TableColumn({
|
|
required: false,
|
|
type: TableColumnType.ShortText,
|
|
title: "Thread ID",
|
|
description: "Thread ID of the message in the channel (if any)",
|
|
canReadOnRelationQuery: false,
|
|
})
|
|
@Column({
|
|
nullable: true,
|
|
type: ColumnType.ShortText,
|
|
length: ColumnLength.ShortText,
|
|
})
|
|
public threadId?: string = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [],
|
|
read: [
|
|
Permission.ProjectOwner,
|
|
Permission.ProjectAdmin,
|
|
Permission.ProjectMember,
|
|
Permission.ReadWorkspaceNotificationLog,
|
|
Permission.ReadAllProjectResources,
|
|
],
|
|
update: [],
|
|
})
|
|
@TableColumn({
|
|
required: false,
|
|
type: TableColumnType.VeryLongText,
|
|
title: "Message",
|
|
description: "Content of the message",
|
|
canReadOnRelationQuery: false,
|
|
})
|
|
@Column({
|
|
nullable: true,
|
|
type: ColumnType.VeryLongText,
|
|
})
|
|
public message?: string = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [],
|
|
read: [
|
|
Permission.ProjectOwner,
|
|
Permission.ProjectAdmin,
|
|
Permission.ProjectMember,
|
|
Permission.ReadWorkspaceNotificationLog,
|
|
Permission.ReadAllProjectResources,
|
|
],
|
|
update: [],
|
|
})
|
|
@TableColumn({
|
|
required: false,
|
|
type: TableColumnType.LongText,
|
|
title: "Status Message",
|
|
description: "Status Message (if any)",
|
|
canReadOnRelationQuery: false,
|
|
})
|
|
@Column({
|
|
nullable: true,
|
|
type: ColumnType.LongText,
|
|
length: ColumnLength.LongText,
|
|
})
|
|
public statusMessage?: string = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [],
|
|
read: [
|
|
Permission.ProjectOwner,
|
|
Permission.ProjectAdmin,
|
|
Permission.ProjectMember,
|
|
Permission.ReadWorkspaceNotificationLog,
|
|
Permission.ReadAllProjectResources,
|
|
],
|
|
update: [],
|
|
})
|
|
@TableColumn({
|
|
required: true,
|
|
type: TableColumnType.ShortText,
|
|
title: "Status",
|
|
description: "Status of the message",
|
|
canReadOnRelationQuery: false,
|
|
})
|
|
@Column({
|
|
nullable: false,
|
|
type: ColumnType.ShortText,
|
|
length: ColumnLength.ShortText,
|
|
})
|
|
public status?: WorkspaceNotificationStatus = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [],
|
|
read: [
|
|
Permission.ProjectOwner,
|
|
Permission.ProjectAdmin,
|
|
Permission.ProjectMember,
|
|
Permission.ReadWorkspaceNotificationLog,
|
|
Permission.ReadAllProjectResources,
|
|
],
|
|
update: [],
|
|
})
|
|
@TableColumn({
|
|
required: true,
|
|
type: TableColumnType.ShortText,
|
|
title: "Action Type",
|
|
description: "Type of workspace action performed",
|
|
canReadOnRelationQuery: false,
|
|
isDefaultValueColumn: true,
|
|
defaultValue: WorkspaceNotificationActionType.SendMessage,
|
|
})
|
|
@Column({
|
|
nullable: false,
|
|
type: ColumnType.ShortText,
|
|
length: ColumnLength.ShortText,
|
|
default: WorkspaceNotificationActionType.SendMessage,
|
|
})
|
|
public actionType?: WorkspaceNotificationActionType = undefined;
|
|
|
|
// Relations to resources that triggered this message (nullable)
|
|
|
|
@ColumnAccessControl({
|
|
create: [],
|
|
read: [
|
|
Permission.ProjectOwner,
|
|
Permission.ProjectAdmin,
|
|
Permission.ProjectMember,
|
|
Permission.ReadWorkspaceNotificationLog,
|
|
Permission.ReadAllProjectResources,
|
|
],
|
|
update: [],
|
|
})
|
|
@TableColumn({
|
|
manyToOneRelationColumn: "incidentId",
|
|
type: TableColumnType.Entity,
|
|
modelType: Incident,
|
|
title: "Incident",
|
|
description: "Incident associated with this message (if any)",
|
|
})
|
|
@ManyToOne(
|
|
() => {
|
|
return Incident;
|
|
},
|
|
{
|
|
eager: false,
|
|
nullable: true,
|
|
onDelete: "CASCADE",
|
|
orphanedRowAction: "nullify",
|
|
},
|
|
)
|
|
@JoinColumn({ name: "incidentId" })
|
|
public incident?: Incident = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [],
|
|
read: [
|
|
Permission.ProjectOwner,
|
|
Permission.ProjectAdmin,
|
|
Permission.ProjectMember,
|
|
Permission.ReadPushLog,
|
|
Permission.ReadAllProjectResources,
|
|
],
|
|
update: [],
|
|
})
|
|
@Index()
|
|
@TableColumn({
|
|
type: TableColumnType.ObjectID,
|
|
required: false,
|
|
canReadOnRelationQuery: true,
|
|
title: "Incident ID",
|
|
description: "ID of Incident associated with this message (if any)",
|
|
})
|
|
@Column({
|
|
type: ColumnType.ObjectID,
|
|
nullable: true,
|
|
transformer: ObjectID.getDatabaseTransformer(),
|
|
})
|
|
public incidentId?: ObjectID = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [],
|
|
read: [
|
|
Permission.ProjectOwner,
|
|
Permission.ProjectAdmin,
|
|
Permission.ProjectMember,
|
|
Permission.ReadWorkspaceNotificationLog,
|
|
Permission.ReadAllProjectResources,
|
|
],
|
|
update: [],
|
|
})
|
|
@TableColumn({
|
|
manyToOneRelationColumn: "userId",
|
|
type: TableColumnType.Entity,
|
|
modelType: User,
|
|
title: "User",
|
|
description: "User who initiated this workspace notification (if any)",
|
|
})
|
|
@ManyToOne(
|
|
() => {
|
|
return User;
|
|
},
|
|
{
|
|
eager: false,
|
|
nullable: true,
|
|
onDelete: "CASCADE",
|
|
orphanedRowAction: "nullify",
|
|
},
|
|
)
|
|
@JoinColumn({ name: "userId" })
|
|
public user?: User = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [],
|
|
read: [
|
|
Permission.ProjectOwner,
|
|
Permission.ProjectAdmin,
|
|
Permission.ProjectMember,
|
|
Permission.ReadWorkspaceNotificationLog,
|
|
Permission.ReadAllProjectResources,
|
|
],
|
|
update: [],
|
|
})
|
|
@Index()
|
|
@TableColumn({
|
|
type: TableColumnType.ObjectID,
|
|
required: false,
|
|
canReadOnRelationQuery: true,
|
|
title: "User ID",
|
|
description:
|
|
"ID of User who initiated this workspace notification (if any)",
|
|
})
|
|
@Column({
|
|
type: ColumnType.ObjectID,
|
|
nullable: true,
|
|
transformer: ObjectID.getDatabaseTransformer(),
|
|
})
|
|
public userId?: ObjectID = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [],
|
|
read: [
|
|
Permission.ProjectOwner,
|
|
Permission.ProjectAdmin,
|
|
Permission.ProjectMember,
|
|
Permission.ReadPushLog,
|
|
Permission.ReadAllProjectResources,
|
|
],
|
|
update: [],
|
|
})
|
|
@TableColumn({
|
|
manyToOneRelationColumn: "alertId",
|
|
type: TableColumnType.Entity,
|
|
modelType: Alert,
|
|
title: "Alert",
|
|
description: "Alert associated with this message (if any)",
|
|
})
|
|
@ManyToOne(
|
|
() => {
|
|
return Alert;
|
|
},
|
|
{
|
|
eager: false,
|
|
nullable: true,
|
|
onDelete: "CASCADE",
|
|
orphanedRowAction: "nullify",
|
|
},
|
|
)
|
|
@JoinColumn({ name: "alertId" })
|
|
public alert?: Alert = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [],
|
|
read: [
|
|
Permission.ProjectOwner,
|
|
Permission.ProjectAdmin,
|
|
Permission.ProjectMember,
|
|
Permission.ReadPushLog,
|
|
Permission.ReadAllProjectResources,
|
|
],
|
|
update: [],
|
|
})
|
|
@Index()
|
|
@TableColumn({
|
|
type: TableColumnType.ObjectID,
|
|
required: false,
|
|
canReadOnRelationQuery: true,
|
|
title: "Alert ID",
|
|
description: "ID of Alert associated with this message (if any)",
|
|
})
|
|
@Column({
|
|
type: ColumnType.ObjectID,
|
|
nullable: true,
|
|
transformer: ObjectID.getDatabaseTransformer(),
|
|
})
|
|
public alertId?: ObjectID = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [],
|
|
read: [
|
|
Permission.ProjectOwner,
|
|
Permission.ProjectAdmin,
|
|
Permission.ProjectMember,
|
|
Permission.ReadWorkspaceNotificationLog,
|
|
Permission.ReadAllProjectResources,
|
|
],
|
|
update: [],
|
|
})
|
|
@TableColumn({
|
|
manyToOneRelationColumn: "monitorId",
|
|
type: TableColumnType.Entity,
|
|
modelType: Monitor,
|
|
title: "Monitor",
|
|
description: "Monitor associated with this message (if any)",
|
|
})
|
|
@ManyToOne(
|
|
() => {
|
|
return Monitor;
|
|
},
|
|
{
|
|
eager: false,
|
|
nullable: true,
|
|
onDelete: "CASCADE",
|
|
orphanedRowAction: "nullify",
|
|
},
|
|
)
|
|
@JoinColumn({ name: "monitorId" })
|
|
public monitor?: Monitor = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [],
|
|
read: [
|
|
Permission.ProjectOwner,
|
|
Permission.ProjectAdmin,
|
|
Permission.ProjectMember,
|
|
Permission.ReadWorkspaceNotificationLog,
|
|
Permission.ReadAllProjectResources,
|
|
],
|
|
update: [],
|
|
})
|
|
@Index()
|
|
@TableColumn({
|
|
type: TableColumnType.ObjectID,
|
|
required: false,
|
|
canReadOnRelationQuery: true,
|
|
title: "Monitor ID",
|
|
description: "ID of Monitor associated with this message (if any)",
|
|
})
|
|
@Column({
|
|
type: ColumnType.ObjectID,
|
|
nullable: true,
|
|
transformer: ObjectID.getDatabaseTransformer(),
|
|
})
|
|
public monitorId?: ObjectID = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [],
|
|
read: [
|
|
Permission.ProjectOwner,
|
|
Permission.ProjectAdmin,
|
|
Permission.ProjectMember,
|
|
Permission.ReadPushLog,
|
|
Permission.ReadAllProjectResources,
|
|
],
|
|
update: [],
|
|
})
|
|
@TableColumn({
|
|
manyToOneRelationColumn: "alertEpisodeId",
|
|
type: TableColumnType.Entity,
|
|
modelType: AlertEpisode,
|
|
title: "Alert Episode",
|
|
description: "Alert Episode associated with this message (if any)",
|
|
})
|
|
@ManyToOne(
|
|
() => {
|
|
return AlertEpisode;
|
|
},
|
|
{
|
|
eager: false,
|
|
nullable: true,
|
|
onDelete: "CASCADE",
|
|
orphanedRowAction: "nullify",
|
|
},
|
|
)
|
|
@JoinColumn({ name: "alertEpisodeId" })
|
|
public alertEpisode?: AlertEpisode = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [],
|
|
read: [
|
|
Permission.ProjectOwner,
|
|
Permission.ProjectAdmin,
|
|
Permission.ProjectMember,
|
|
Permission.ReadPushLog,
|
|
Permission.ReadAllProjectResources,
|
|
],
|
|
update: [],
|
|
})
|
|
@Index()
|
|
@TableColumn({
|
|
type: TableColumnType.ObjectID,
|
|
required: false,
|
|
canReadOnRelationQuery: true,
|
|
title: "Alert Episode ID",
|
|
description: "ID of Alert Episode associated with this message (if any)",
|
|
})
|
|
@Column({
|
|
type: ColumnType.ObjectID,
|
|
nullable: true,
|
|
transformer: ObjectID.getDatabaseTransformer(),
|
|
})
|
|
public alertEpisodeId?: ObjectID = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [],
|
|
read: [
|
|
Permission.ProjectOwner,
|
|
Permission.ProjectAdmin,
|
|
Permission.ProjectMember,
|
|
Permission.ReadPushLog,
|
|
Permission.ReadAllProjectResources,
|
|
],
|
|
update: [],
|
|
})
|
|
@TableColumn({
|
|
manyToOneRelationColumn: "incidentEpisodeId",
|
|
type: TableColumnType.Entity,
|
|
modelType: IncidentEpisode,
|
|
title: "Incident Episode",
|
|
description: "Incident Episode associated with this message (if any)",
|
|
})
|
|
@ManyToOne(
|
|
() => {
|
|
return IncidentEpisode;
|
|
},
|
|
{
|
|
eager: false,
|
|
nullable: true,
|
|
onDelete: "CASCADE",
|
|
orphanedRowAction: "nullify",
|
|
},
|
|
)
|
|
@JoinColumn({ name: "incidentEpisodeId" })
|
|
public incidentEpisode?: IncidentEpisode = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [],
|
|
read: [
|
|
Permission.ProjectOwner,
|
|
Permission.ProjectAdmin,
|
|
Permission.ProjectMember,
|
|
Permission.ReadPushLog,
|
|
Permission.ReadAllProjectResources,
|
|
],
|
|
update: [],
|
|
})
|
|
@Index()
|
|
@TableColumn({
|
|
type: TableColumnType.ObjectID,
|
|
required: false,
|
|
canReadOnRelationQuery: true,
|
|
title: "Incident Episode ID",
|
|
description: "ID of Incident Episode associated with this message (if any)",
|
|
})
|
|
@Column({
|
|
type: ColumnType.ObjectID,
|
|
nullable: true,
|
|
transformer: ObjectID.getDatabaseTransformer(),
|
|
})
|
|
public incidentEpisodeId?: ObjectID = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [],
|
|
read: [
|
|
Permission.ProjectOwner,
|
|
Permission.ProjectAdmin,
|
|
Permission.ProjectMember,
|
|
Permission.ReadPushLog,
|
|
Permission.ReadAllProjectResources,
|
|
],
|
|
update: [],
|
|
})
|
|
@TableColumn({
|
|
manyToOneRelationColumn: "scheduledMaintenanceId",
|
|
type: TableColumnType.Entity,
|
|
modelType: ScheduledMaintenance,
|
|
title: "Scheduled Maintenance",
|
|
description: "Scheduled Maintenance associated with this message (if any)",
|
|
})
|
|
@ManyToOne(
|
|
() => {
|
|
return ScheduledMaintenance;
|
|
},
|
|
{
|
|
eager: false,
|
|
nullable: true,
|
|
onDelete: "CASCADE",
|
|
orphanedRowAction: "nullify",
|
|
},
|
|
)
|
|
@JoinColumn({ name: "scheduledMaintenanceId" })
|
|
public scheduledMaintenance?: ScheduledMaintenance = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [],
|
|
read: [
|
|
Permission.ProjectOwner,
|
|
Permission.ProjectAdmin,
|
|
Permission.ProjectMember,
|
|
Permission.ReadPushLog,
|
|
Permission.ReadAllProjectResources,
|
|
],
|
|
update: [],
|
|
})
|
|
@Index()
|
|
@TableColumn({
|
|
type: TableColumnType.ObjectID,
|
|
required: false,
|
|
canReadOnRelationQuery: true,
|
|
title: "Scheduled Maintenance ID",
|
|
description:
|
|
"ID of Scheduled Maintenance associated with this message (if any)",
|
|
})
|
|
@Column({
|
|
type: ColumnType.ObjectID,
|
|
nullable: true,
|
|
transformer: ObjectID.getDatabaseTransformer(),
|
|
})
|
|
public scheduledMaintenanceId?: ObjectID = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [],
|
|
read: [
|
|
Permission.ProjectOwner,
|
|
Permission.ProjectAdmin,
|
|
Permission.ProjectMember,
|
|
Permission.ReadPushLog,
|
|
Permission.ReadAllProjectResources,
|
|
],
|
|
update: [],
|
|
})
|
|
@TableColumn({
|
|
manyToOneRelationColumn: "statusPageId",
|
|
type: TableColumnType.Entity,
|
|
modelType: StatusPage,
|
|
title: "Status Page",
|
|
description: "Status Page associated with this message (if any)",
|
|
})
|
|
@ManyToOne(
|
|
() => {
|
|
return StatusPage;
|
|
},
|
|
{
|
|
eager: false,
|
|
nullable: true,
|
|
onDelete: "CASCADE",
|
|
orphanedRowAction: "nullify",
|
|
},
|
|
)
|
|
@JoinColumn({ name: "statusPageId" })
|
|
public statusPage?: StatusPage = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [],
|
|
read: [
|
|
Permission.ProjectOwner,
|
|
Permission.ProjectAdmin,
|
|
Permission.ProjectMember,
|
|
Permission.ReadPushLog,
|
|
Permission.ReadAllProjectResources,
|
|
],
|
|
update: [],
|
|
})
|
|
@Index()
|
|
@TableColumn({
|
|
type: TableColumnType.ObjectID,
|
|
required: false,
|
|
canReadOnRelationQuery: true,
|
|
title: "Status Page ID",
|
|
description: "ID of Status Page associated with this message (if any)",
|
|
})
|
|
@Column({
|
|
type: ColumnType.ObjectID,
|
|
nullable: true,
|
|
transformer: ObjectID.getDatabaseTransformer(),
|
|
})
|
|
public statusPageId?: ObjectID = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [],
|
|
read: [
|
|
Permission.ProjectOwner,
|
|
Permission.ProjectAdmin,
|
|
Permission.ProjectMember,
|
|
Permission.ReadPushLog,
|
|
Permission.ReadAllProjectResources,
|
|
],
|
|
update: [],
|
|
})
|
|
@TableColumn({
|
|
manyToOneRelationColumn: "statusPageAnnouncementId",
|
|
type: TableColumnType.Entity,
|
|
modelType: StatusPageAnnouncement,
|
|
title: "Status Page Announcement",
|
|
description:
|
|
"Status Page Announcement associated with this message (if any)",
|
|
})
|
|
@ManyToOne(
|
|
() => {
|
|
return StatusPageAnnouncement;
|
|
},
|
|
{
|
|
eager: false,
|
|
nullable: true,
|
|
onDelete: "CASCADE",
|
|
orphanedRowAction: "nullify",
|
|
},
|
|
)
|
|
@JoinColumn({ name: "statusPageAnnouncementId" })
|
|
public statusPageAnnouncement?: StatusPageAnnouncement = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [],
|
|
read: [
|
|
Permission.ProjectOwner,
|
|
Permission.ProjectAdmin,
|
|
Permission.ProjectMember,
|
|
Permission.ReadPushLog,
|
|
Permission.ReadAllProjectResources,
|
|
],
|
|
update: [],
|
|
})
|
|
@Index()
|
|
@TableColumn({
|
|
type: TableColumnType.ObjectID,
|
|
required: false,
|
|
canReadOnRelationQuery: true,
|
|
title: "Status Page Announcement ID",
|
|
description:
|
|
"ID of Status Page Announcement associated with this message (if any)",
|
|
})
|
|
@Column({
|
|
type: ColumnType.ObjectID,
|
|
nullable: true,
|
|
transformer: ObjectID.getDatabaseTransformer(),
|
|
})
|
|
public statusPageAnnouncementId?: ObjectID = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [],
|
|
read: [
|
|
Permission.ProjectOwner,
|
|
Permission.ProjectAdmin,
|
|
Permission.ProjectMember,
|
|
Permission.ReadWorkspaceNotificationLog,
|
|
Permission.ReadAllProjectResources,
|
|
],
|
|
update: [],
|
|
})
|
|
@TableColumn({
|
|
manyToOneRelationColumn: "onCallDutyPolicyId",
|
|
type: TableColumnType.Entity,
|
|
modelType: OnCallDutyPolicy,
|
|
title: "On-Call Duty Policy",
|
|
description: "On-Call Duty Policy associated with this message (if any)",
|
|
})
|
|
@ManyToOne(
|
|
() => {
|
|
return OnCallDutyPolicy;
|
|
},
|
|
{
|
|
eager: false,
|
|
nullable: true,
|
|
onDelete: "CASCADE",
|
|
orphanedRowAction: "nullify",
|
|
},
|
|
)
|
|
@JoinColumn({ name: "onCallDutyPolicyId" })
|
|
public onCallDutyPolicy?: OnCallDutyPolicy = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [],
|
|
read: [
|
|
Permission.ProjectOwner,
|
|
Permission.ProjectAdmin,
|
|
Permission.ProjectMember,
|
|
Permission.ReadWorkspaceNotificationLog,
|
|
Permission.ReadAllProjectResources,
|
|
],
|
|
update: [],
|
|
})
|
|
@Index()
|
|
@TableColumn({
|
|
type: TableColumnType.ObjectID,
|
|
required: false,
|
|
canReadOnRelationQuery: true,
|
|
title: "On-Call Duty Policy ID",
|
|
description:
|
|
"ID of On-Call Duty Policy associated with this message (if any)",
|
|
})
|
|
@Column({
|
|
type: ColumnType.ObjectID,
|
|
nullable: true,
|
|
transformer: ObjectID.getDatabaseTransformer(),
|
|
})
|
|
public onCallDutyPolicyId?: ObjectID = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [],
|
|
read: [
|
|
Permission.ProjectOwner,
|
|
Permission.ProjectAdmin,
|
|
Permission.ProjectMember,
|
|
Permission.ReadWorkspaceNotificationLog,
|
|
Permission.ReadAllProjectResources,
|
|
],
|
|
update: [],
|
|
})
|
|
@TableColumn({
|
|
manyToOneRelationColumn: "onCallDutyPolicyEscalationRuleId",
|
|
type: TableColumnType.Entity,
|
|
modelType: OnCallDutyPolicyEscalationRule,
|
|
title: "On-Call Duty Policy Escalation Rule",
|
|
description:
|
|
"On-Call Duty Policy Escalation Rule associated with this message (if any)",
|
|
})
|
|
@ManyToOne(
|
|
() => {
|
|
return OnCallDutyPolicyEscalationRule;
|
|
},
|
|
{
|
|
eager: false,
|
|
nullable: true,
|
|
onDelete: "CASCADE",
|
|
orphanedRowAction: "nullify",
|
|
},
|
|
)
|
|
@JoinColumn({ name: "onCallDutyPolicyEscalationRuleId" })
|
|
public onCallDutyPolicyEscalationRule?: OnCallDutyPolicyEscalationRule =
|
|
undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [],
|
|
read: [
|
|
Permission.ProjectOwner,
|
|
Permission.ProjectAdmin,
|
|
Permission.ProjectMember,
|
|
Permission.ReadWorkspaceNotificationLog,
|
|
Permission.ReadAllProjectResources,
|
|
],
|
|
update: [],
|
|
})
|
|
@Index()
|
|
@TableColumn({
|
|
type: TableColumnType.ObjectID,
|
|
required: false,
|
|
canReadOnRelationQuery: true,
|
|
title: "On-Call Duty Policy Escalation Rule ID",
|
|
description:
|
|
"ID of On-Call Duty Policy Escalation Rule associated with this message (if any)",
|
|
})
|
|
@Column({
|
|
type: ColumnType.ObjectID,
|
|
nullable: true,
|
|
transformer: ObjectID.getDatabaseTransformer(),
|
|
})
|
|
public onCallDutyPolicyEscalationRuleId?: ObjectID = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [],
|
|
read: [
|
|
Permission.ProjectOwner,
|
|
Permission.ProjectAdmin,
|
|
Permission.ProjectMember,
|
|
Permission.ReadWorkspaceNotificationLog,
|
|
Permission.ReadAllProjectResources,
|
|
],
|
|
update: [],
|
|
})
|
|
@TableColumn({
|
|
manyToOneRelationColumn: "onCallDutyPolicyScheduleId",
|
|
type: TableColumnType.Entity,
|
|
modelType: OnCallDutyPolicySchedule,
|
|
title: "On-Call Duty Policy Schedule",
|
|
description:
|
|
"On-Call Duty Policy Schedule associated with this message (if any)",
|
|
})
|
|
@ManyToOne(
|
|
() => {
|
|
return OnCallDutyPolicySchedule;
|
|
},
|
|
{
|
|
eager: false,
|
|
nullable: true,
|
|
onDelete: "CASCADE",
|
|
orphanedRowAction: "nullify",
|
|
},
|
|
)
|
|
@JoinColumn({ name: "onCallDutyPolicyScheduleId" })
|
|
public onCallDutyPolicySchedule?: OnCallDutyPolicySchedule = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [],
|
|
read: [
|
|
Permission.ProjectOwner,
|
|
Permission.ProjectAdmin,
|
|
Permission.ProjectMember,
|
|
Permission.ReadWorkspaceNotificationLog,
|
|
Permission.ReadAllProjectResources,
|
|
],
|
|
update: [],
|
|
})
|
|
@Index()
|
|
@TableColumn({
|
|
type: TableColumnType.ObjectID,
|
|
required: false,
|
|
canReadOnRelationQuery: true,
|
|
title: "On-Call Duty Policy Schedule ID",
|
|
description:
|
|
"ID of On-Call Duty Policy Schedule associated with this message (if any)",
|
|
})
|
|
@Column({
|
|
type: ColumnType.ObjectID,
|
|
nullable: true,
|
|
transformer: ObjectID.getDatabaseTransformer(),
|
|
})
|
|
public onCallDutyPolicyScheduleId?: ObjectID = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [],
|
|
read: [
|
|
Permission.ProjectOwner,
|
|
Permission.ProjectAdmin,
|
|
Permission.ProjectMember,
|
|
Permission.ReadWorkspaceNotificationLog,
|
|
Permission.ReadAllProjectResources,
|
|
],
|
|
update: [],
|
|
})
|
|
@TableColumn({
|
|
manyToOneRelationColumn: "teamId",
|
|
type: TableColumnType.Entity,
|
|
modelType: Team,
|
|
title: "Team",
|
|
description: "Team associated with this message (if any)",
|
|
})
|
|
@ManyToOne(
|
|
() => {
|
|
return Team;
|
|
},
|
|
{
|
|
eager: false,
|
|
nullable: true,
|
|
onDelete: "CASCADE",
|
|
orphanedRowAction: "nullify",
|
|
},
|
|
)
|
|
@JoinColumn({ name: "teamId" })
|
|
public team?: Team = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [],
|
|
read: [
|
|
Permission.ProjectOwner,
|
|
Permission.ProjectAdmin,
|
|
Permission.ProjectMember,
|
|
Permission.ReadWorkspaceNotificationLog,
|
|
Permission.ReadAllProjectResources,
|
|
],
|
|
update: [],
|
|
})
|
|
@Index()
|
|
@TableColumn({
|
|
type: TableColumnType.ObjectID,
|
|
required: false,
|
|
canReadOnRelationQuery: true,
|
|
title: "Team ID",
|
|
description: "ID of Team associated with this message (if any)",
|
|
})
|
|
@Column({
|
|
type: ColumnType.ObjectID,
|
|
nullable: true,
|
|
transformer: ObjectID.getDatabaseTransformer(),
|
|
})
|
|
public teamId?: ObjectID = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [],
|
|
read: [],
|
|
update: [],
|
|
})
|
|
@TableColumn({
|
|
manyToOneRelationColumn: "deletedByUserId",
|
|
type: TableColumnType.Entity,
|
|
title: "Deleted by User",
|
|
modelType: 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: "SET NULL",
|
|
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;
|
|
}
|