mirror of
https://github.com/OneUptime/oneuptime.git
synced 2026-01-16 23:00:51 +00:00
- Updated TelemetryException model with example values for Project, Telemetry Service, Exception Message, Stack Trace, Exception Type, Finger Print, Created by User, and more. - Enhanced TelemetryIngestionKey model with example values for Project, Name, Description, Created by User, and more. - Improved TelemetryUsageBilling model with example values for Project, Day, Product Type, Data Ingested, Total Cost, and more. - Added example values to UserCall model for Project ID, Phone, User ID, Created by User ID, and more. - Included example values in UserEmail model for Project ID, Email, User ID, Created by User ID, and more. - Updated UserNotificationRule model with example values for Project ID, User ID, Created by User ID, and various notification types. - Enhanced UserNotificationSetting model with example values for Project ID, User ID, and various notification settings. - Improved UserOnCallLog model with example values for User ID, Project ID, On-Call Policy ID, and more. - Added example values to UserSMS model for Project ID, Phone, User ID, Created by User ID, and more.
612 lines
16 KiB
TypeScript
612 lines
16 KiB
TypeScript
import IncidentSeverity from "./IncidentSeverity";
|
|
import AlertSeverity from "./AlertSeverity";
|
|
import Project from "./Project";
|
|
import User from "./User";
|
|
import UserCall from "./UserCall";
|
|
import UserEmail from "./UserEmail";
|
|
import UserPush from "./UserPush";
|
|
import UserSMS from "./UserSMS";
|
|
import UserWhatsApp from "./UserWhatsApp";
|
|
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 CurrentUserCanAccessRecordBy from "../../Types/Database/CurrentUserCanAccessRecordBy";
|
|
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 NotificationRuleType from "../../Types/NotificationRule/NotificationRuleType";
|
|
import ObjectID from "../../Types/ObjectID";
|
|
import Permission from "../../Types/Permission";
|
|
import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
|
|
|
|
@TenantColumn("projectId")
|
|
@TableAccessControl({
|
|
create: [Permission.CurrentUser],
|
|
read: [Permission.CurrentUser],
|
|
delete: [Permission.CurrentUser],
|
|
update: [Permission.CurrentUser],
|
|
})
|
|
@CrudApiEndpoint(new Route("/user-notification-rule"))
|
|
@Entity({
|
|
name: "UserNotificationRule",
|
|
})
|
|
@TableMetadata({
|
|
tableName: "UserNotificationRule",
|
|
singularName: "Notification Rule",
|
|
pluralName: "Notification Rules",
|
|
icon: IconProp.Email,
|
|
tableDescription: "Rules which will be used to send notifications.",
|
|
})
|
|
@CurrentUserCanAccessRecordBy("userId")
|
|
class UserNotificationRule extends BaseModel {
|
|
@ColumnAccessControl({
|
|
create: [Permission.CurrentUser],
|
|
read: [Permission.CurrentUser],
|
|
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.CurrentUser],
|
|
read: [Permission.CurrentUser],
|
|
update: [],
|
|
})
|
|
@Index()
|
|
@TableColumn({
|
|
type: TableColumnType.ObjectID,
|
|
required: true,
|
|
canReadOnRelationQuery: true,
|
|
title: "Project ID",
|
|
description: "ID of your OneUptime Project in which this object belongs",
|
|
example: "5f8b9c0d-e1a2-4b3c-8d5e-6f7a8b9c0d1e",
|
|
})
|
|
@Column({
|
|
type: ColumnType.ObjectID,
|
|
nullable: false,
|
|
transformer: ObjectID.getDatabaseTransformer(),
|
|
})
|
|
public projectId?: ObjectID = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [Permission.CurrentUser],
|
|
read: [Permission.CurrentUser],
|
|
update: [],
|
|
})
|
|
@TableColumn({
|
|
title: "Rule Type",
|
|
required: true,
|
|
unique: false,
|
|
type: TableColumnType.ShortText,
|
|
canReadOnRelationQuery: true,
|
|
example: "Send Notification When Incident Created",
|
|
})
|
|
@Column({
|
|
type: ColumnType.ShortText,
|
|
length: ColumnLength.ShortText,
|
|
unique: false,
|
|
nullable: false,
|
|
})
|
|
public ruleType?: NotificationRuleType = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [Permission.CurrentUser],
|
|
read: [Permission.CurrentUser],
|
|
update: [],
|
|
})
|
|
@TableColumn({
|
|
manyToOneRelationColumn: "user",
|
|
type: TableColumnType.Entity,
|
|
modelType: User,
|
|
title: "User",
|
|
description: "Relation to User who this email belongs to",
|
|
})
|
|
@ManyToOne(
|
|
() => {
|
|
return User;
|
|
},
|
|
{
|
|
eager: false,
|
|
nullable: true,
|
|
onDelete: "CASCADE",
|
|
orphanedRowAction: "nullify",
|
|
},
|
|
)
|
|
@JoinColumn({ name: "userId" })
|
|
public user?: User = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [Permission.CurrentUser],
|
|
read: [Permission.CurrentUser],
|
|
update: [],
|
|
})
|
|
@TableColumn({
|
|
type: TableColumnType.ObjectID,
|
|
title: "User ID",
|
|
description: "User ID who this email belongs to",
|
|
example: "7c9d8e0f-a1b2-4c3d-9e5f-8a7b9c0d1e2f",
|
|
})
|
|
@Column({
|
|
type: ColumnType.ObjectID,
|
|
nullable: true,
|
|
transformer: ObjectID.getDatabaseTransformer(),
|
|
})
|
|
@Index()
|
|
public userId?: ObjectID = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [Permission.CurrentUser],
|
|
read: [Permission.CurrentUser],
|
|
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: "SET NULL",
|
|
orphanedRowAction: "nullify",
|
|
},
|
|
)
|
|
@JoinColumn({ name: "createdByUserId" })
|
|
public createdByUser?: User = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [Permission.CurrentUser],
|
|
read: [Permission.CurrentUser],
|
|
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)",
|
|
example: "7c9d8e0f-a1b2-4c3d-9e5f-8a7b9c0d1e2f",
|
|
})
|
|
@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",
|
|
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)",
|
|
example: "7c9d8e0f-a1b2-4c3d-9e5f-8a7b9c0d1e2f",
|
|
})
|
|
@Column({
|
|
type: ColumnType.ObjectID,
|
|
nullable: true,
|
|
transformer: ObjectID.getDatabaseTransformer(),
|
|
})
|
|
public deletedByUserId?: ObjectID = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [Permission.CurrentUser],
|
|
read: [Permission.CurrentUser],
|
|
update: [],
|
|
})
|
|
@TableColumn({
|
|
manyToOneRelationColumn: "userCallId",
|
|
type: TableColumnType.Entity,
|
|
modelType: UserCall,
|
|
title: "User Call",
|
|
description: "Relation to User Call Resource in which this object belongs",
|
|
})
|
|
@ManyToOne(
|
|
() => {
|
|
return UserCall;
|
|
},
|
|
{
|
|
eager: false,
|
|
nullable: true,
|
|
onDelete: "CASCADE",
|
|
orphanedRowAction: "nullify",
|
|
},
|
|
)
|
|
@JoinColumn({ name: "userCallId" })
|
|
public userCall?: UserCall = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [Permission.CurrentUser],
|
|
read: [Permission.CurrentUser],
|
|
update: [],
|
|
})
|
|
@Index()
|
|
@TableColumn({
|
|
type: TableColumnType.ObjectID,
|
|
required: false,
|
|
canReadOnRelationQuery: true,
|
|
title: "User Call ID",
|
|
description: "ID of User Call in which this object belongs",
|
|
example: "9e8d7c6b-5a4f-3e2d-1c0b-9a8f7e6d5c4b",
|
|
})
|
|
@Column({
|
|
type: ColumnType.ObjectID,
|
|
nullable: true,
|
|
transformer: ObjectID.getDatabaseTransformer(),
|
|
})
|
|
public userCallId?: ObjectID = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [Permission.CurrentUser],
|
|
read: [Permission.CurrentUser],
|
|
update: [],
|
|
})
|
|
@TableColumn({
|
|
manyToOneRelationColumn: "userPushId",
|
|
type: TableColumnType.Entity,
|
|
modelType: UserPush,
|
|
title: "User Push",
|
|
description: "Relation to User Push Resource in which this object belongs",
|
|
})
|
|
@ManyToOne(
|
|
() => {
|
|
return UserPush;
|
|
},
|
|
{
|
|
eager: false,
|
|
nullable: true,
|
|
onDelete: "CASCADE",
|
|
orphanedRowAction: "nullify",
|
|
},
|
|
)
|
|
@JoinColumn({ name: "userPushId" })
|
|
public userPush?: UserPush = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [Permission.CurrentUser],
|
|
read: [Permission.CurrentUser],
|
|
update: [],
|
|
})
|
|
@Index()
|
|
@TableColumn({
|
|
type: TableColumnType.ObjectID,
|
|
required: false,
|
|
canReadOnRelationQuery: true,
|
|
title: "User Push ID",
|
|
description: "ID of User Push in which this object belongs",
|
|
example: "1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
|
|
})
|
|
@Column({
|
|
type: ColumnType.ObjectID,
|
|
nullable: true,
|
|
transformer: ObjectID.getDatabaseTransformer(),
|
|
})
|
|
public userPushId?: ObjectID = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [Permission.CurrentUser],
|
|
read: [Permission.CurrentUser],
|
|
update: [],
|
|
})
|
|
@TableColumn({
|
|
manyToOneRelationColumn: "userSmsId",
|
|
type: TableColumnType.Entity,
|
|
modelType: UserSMS,
|
|
title: "User SMS",
|
|
description: "Relation to User SMS Resource in which this object belongs",
|
|
})
|
|
@ManyToOne(
|
|
() => {
|
|
return UserSMS;
|
|
},
|
|
{
|
|
eager: false,
|
|
nullable: true,
|
|
onDelete: "CASCADE",
|
|
orphanedRowAction: "nullify",
|
|
},
|
|
)
|
|
@JoinColumn({ name: "userSmsId" })
|
|
public userSms?: UserSMS = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [Permission.CurrentUser],
|
|
read: [Permission.CurrentUser],
|
|
update: [],
|
|
})
|
|
@Index()
|
|
@TableColumn({
|
|
type: TableColumnType.ObjectID,
|
|
required: false,
|
|
canReadOnRelationQuery: true,
|
|
title: "User SMS ID",
|
|
description: "ID of User SMS in which this object belongs",
|
|
example: "2b3c4d5e-6f7a-8b9c-0d1e-2f3a4b5c6d7e",
|
|
})
|
|
@Column({
|
|
type: ColumnType.ObjectID,
|
|
nullable: true,
|
|
transformer: ObjectID.getDatabaseTransformer(),
|
|
})
|
|
public userSmsId?: ObjectID = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [Permission.CurrentUser],
|
|
read: [Permission.CurrentUser],
|
|
update: [],
|
|
})
|
|
@TableColumn({
|
|
manyToOneRelationColumn: "userWhatsAppId",
|
|
type: TableColumnType.Entity,
|
|
modelType: UserWhatsApp,
|
|
title: "User WhatsApp",
|
|
description:
|
|
"Relation to User WhatsApp Resource in which this object belongs",
|
|
})
|
|
@ManyToOne(
|
|
() => {
|
|
return UserWhatsApp;
|
|
},
|
|
{
|
|
eager: false,
|
|
nullable: true,
|
|
onDelete: "CASCADE",
|
|
orphanedRowAction: "nullify",
|
|
},
|
|
)
|
|
@JoinColumn({ name: "userWhatsAppId" })
|
|
public userWhatsApp?: UserWhatsApp = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [Permission.CurrentUser],
|
|
read: [Permission.CurrentUser],
|
|
update: [],
|
|
})
|
|
@Index()
|
|
@TableColumn({
|
|
type: TableColumnType.ObjectID,
|
|
required: false,
|
|
canReadOnRelationQuery: true,
|
|
title: "User WhatsApp ID",
|
|
description: "ID of User WhatsApp in which this object belongs",
|
|
example: "3c4d5e6f-7a8b-9c0d-1e2f-3a4b5c6d7e8f",
|
|
})
|
|
@Column({
|
|
type: ColumnType.ObjectID,
|
|
nullable: true,
|
|
transformer: ObjectID.getDatabaseTransformer(),
|
|
})
|
|
public userWhatsAppId?: ObjectID = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [Permission.CurrentUser],
|
|
read: [Permission.CurrentUser],
|
|
update: [],
|
|
})
|
|
@TableColumn({
|
|
manyToOneRelationColumn: "userEmailId",
|
|
type: TableColumnType.Entity,
|
|
modelType: UserEmail,
|
|
title: "User Email",
|
|
description: "Relation to User Email Resource in which this object belongs",
|
|
})
|
|
@ManyToOne(
|
|
() => {
|
|
return UserEmail;
|
|
},
|
|
{
|
|
eager: false,
|
|
nullable: true,
|
|
onDelete: "CASCADE",
|
|
orphanedRowAction: "nullify",
|
|
},
|
|
)
|
|
@JoinColumn({ name: "userEmailId" })
|
|
public userEmail?: UserEmail = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [Permission.CurrentUser],
|
|
read: [Permission.CurrentUser],
|
|
update: [],
|
|
})
|
|
@Index()
|
|
@TableColumn({
|
|
type: TableColumnType.ObjectID,
|
|
required: false,
|
|
canReadOnRelationQuery: true,
|
|
title: "User Email ID",
|
|
description: "ID of User Email in which this object belongs",
|
|
example: "4d5e6f7a-8b9c-0d1e-2f3a-4b5c6d7e8f9a",
|
|
})
|
|
@Column({
|
|
type: ColumnType.ObjectID,
|
|
nullable: true,
|
|
transformer: ObjectID.getDatabaseTransformer(),
|
|
})
|
|
public userEmailId?: ObjectID = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [Permission.CurrentUser],
|
|
read: [Permission.CurrentUser],
|
|
update: [Permission.CurrentUser],
|
|
})
|
|
@Index()
|
|
@TableColumn({
|
|
type: TableColumnType.Number,
|
|
required: true,
|
|
isDefaultValueColumn: true,
|
|
canReadOnRelationQuery: true,
|
|
title: "Notify After Minutes",
|
|
description:
|
|
"How long should we wait before sending a notification to the user after the event has occurred?",
|
|
example: 5,
|
|
})
|
|
@Column({
|
|
type: ColumnType.Number,
|
|
nullable: false,
|
|
default: 0,
|
|
})
|
|
public notifyAfterMinutes?: number = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [Permission.CurrentUser],
|
|
read: [Permission.CurrentUser],
|
|
update: [],
|
|
})
|
|
@TableColumn({
|
|
manyToOneRelationColumn: "incidentSeverityId",
|
|
type: TableColumnType.Entity,
|
|
modelType: IncidentSeverity,
|
|
title: "Incident Severity",
|
|
description:
|
|
"Relation to Incident Severity Resource in which this object belongs",
|
|
})
|
|
@ManyToOne(
|
|
() => {
|
|
return IncidentSeverity;
|
|
},
|
|
{
|
|
eager: false,
|
|
nullable: true,
|
|
onDelete: "CASCADE",
|
|
orphanedRowAction: "nullify",
|
|
},
|
|
)
|
|
@JoinColumn({ name: "incidentSeverityId" })
|
|
public incidentSeverity?: IncidentSeverity = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [Permission.CurrentUser],
|
|
read: [Permission.CurrentUser],
|
|
update: [],
|
|
})
|
|
@Index()
|
|
@TableColumn({
|
|
type: TableColumnType.ObjectID,
|
|
required: false,
|
|
canReadOnRelationQuery: true,
|
|
title: "Incident Severity ID",
|
|
description: "ID of Incident Severity in which this object belongs",
|
|
example: "5e6f7a8b-9c0d-1e2f-3a4b-5c6d7e8f9a0b",
|
|
})
|
|
@Column({
|
|
type: ColumnType.ObjectID,
|
|
nullable: true,
|
|
transformer: ObjectID.getDatabaseTransformer(),
|
|
})
|
|
public incidentSeverityId?: ObjectID = undefined;
|
|
|
|
// alert severity.
|
|
|
|
@ColumnAccessControl({
|
|
create: [Permission.CurrentUser],
|
|
read: [Permission.CurrentUser],
|
|
update: [],
|
|
})
|
|
@TableColumn({
|
|
manyToOneRelationColumn: "alertSeverityId",
|
|
type: TableColumnType.Entity,
|
|
modelType: AlertSeverity,
|
|
title: "Alert Severity",
|
|
description:
|
|
"Relation to Alert Severity Resource in which this object belongs",
|
|
})
|
|
@ManyToOne(
|
|
() => {
|
|
return AlertSeverity;
|
|
},
|
|
{
|
|
eager: false,
|
|
nullable: true,
|
|
onDelete: "CASCADE",
|
|
orphanedRowAction: "nullify",
|
|
},
|
|
)
|
|
@JoinColumn({ name: "alertSeverityId" })
|
|
public alertSeverity?: AlertSeverity = undefined;
|
|
|
|
@ColumnAccessControl({
|
|
create: [Permission.CurrentUser],
|
|
read: [Permission.CurrentUser],
|
|
update: [],
|
|
})
|
|
@Index()
|
|
@TableColumn({
|
|
type: TableColumnType.ObjectID,
|
|
required: false,
|
|
canReadOnRelationQuery: true,
|
|
title: "Alert Severity ID",
|
|
description: "ID of Alert Severity in which this object belongs",
|
|
example: "6f7a8b9c-0d1e-2f3a-4b5c-6d7e8f9a0b1c",
|
|
})
|
|
@Column({
|
|
type: ColumnType.ObjectID,
|
|
nullable: true,
|
|
transformer: ObjectID.getDatabaseTransformer(),
|
|
})
|
|
public alertSeverityId?: ObjectID = undefined;
|
|
}
|
|
|
|
export default UserNotificationRule;
|