import Incident from "./Incident"; import Alert from "./Alert"; import AlertEpisode from "./AlertEpisode"; import IncidentEpisode from "./IncidentEpisode"; import OnCallDutyPolicy from "./OnCallDutyPolicy"; import OnCallDutyPolicyEscalationRule from "./OnCallDutyPolicyEscalationRule"; import OnCallDutyPolicyExecutionLog from "./OnCallDutyPolicyExecutionLog"; import OnCallDutyPolicyExecutionLogTimeline from "./OnCallDutyPolicyExecutionLogTimeline"; import Project from "./Project"; import Team from "./Team"; import User from "./User"; import UserCall from "./UserCall"; import UserEmail from "./UserEmail"; import UserNotificationRule from "./UserNotificationRule"; import UserPush from "./UserPush"; import UserOnCallLog from "./UserOnCallLog"; import UserSMS from "./UserSMS"; import UserWhatsApp from "./UserWhatsApp"; import BaseModel from "./DatabaseBaseModel/DatabaseBaseModel"; import Route from "../../Types/API/Route"; import { PlanType } from "../../Types/Billing/SubscriptionPlan"; import ColumnAccessControl from "../../Types/Database/AccessControl/ColumnAccessControl"; import TableAccessControl from "../../Types/Database/AccessControl/TableAccessControl"; import TableBillingAccessControl from "../../Types/Database/AccessControl/TableBillingAccessControl"; 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 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 UserNotificationEventType from "../../Types/UserNotification/UserNotificationEventType"; import UserNotificationStatus from "../../Types/UserNotification/UserNotificationStatus"; import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm"; @TableBillingAccessControl({ create: PlanType.Growth, read: PlanType.Growth, update: PlanType.Growth, delete: PlanType.Growth, }) @EnableDocumentation() @TenantColumn("projectId") @TableAccessControl({ create: [], read: [Permission.CurrentUser], delete: [], update: [], }) @CrudApiEndpoint(new Route("/user-notification-log-timeline")) @Entity({ name: "UserOnCallLogTimeline", }) @Index(["userId", "createdAt"]) @Index(["onCallDutyPolicyExecutionLogId", "status"]) @Index(["projectId", "status"]) @TableMetadata({ tableName: "UserOnCallLogTimeline", singularName: "User On-Call Log Timeline", pluralName: "User On-Call Log Timelines", icon: IconProp.Logs, tableDescription: "Timeline events for user on-call log.", }) export default class UserOnCallLogTimeline extends BaseModel { @ColumnAccessControl({ create: [], read: [Permission.CurrentUser], update: [], }) @TableColumn({ manyToOneRelationColumn: "userId", type: TableColumnType.Entity, modelType: User, title: "User", description: "Relation to User who this log belongs to", }) @ManyToOne( () => { return User; }, { eager: false, nullable: true, onDelete: "CASCADE", orphanedRowAction: "nullify", }, ) @JoinColumn({ name: "userId" }) public user?: User = undefined; @ColumnAccessControl({ create: [], read: [Permission.CurrentUser], update: [], }) @TableColumn({ type: TableColumnType.ObjectID, title: "User ID", description: "User ID who this log belongs to", }) @Column({ type: ColumnType.ObjectID, nullable: false, transformer: ObjectID.getDatabaseTransformer(), }) public userId?: ObjectID = undefined; @ColumnAccessControl({ create: [], 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: [], 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", }) @Column({ type: ColumnType.ObjectID, nullable: false, transformer: ObjectID.getDatabaseTransformer(), }) public projectId?: ObjectID = undefined; @ColumnAccessControl({ create: [], read: [Permission.CurrentUser], update: [], }) @TableColumn({ manyToOneRelationColumn: "userNotificationLogId", type: TableColumnType.Entity, modelType: UserOnCallLog, title: "User Notification Log", description: "Relation to User Notification Log Resource in which this object belongs", }) @ManyToOne( () => { return UserOnCallLog; }, { eager: false, nullable: true, onDelete: "CASCADE", orphanedRowAction: "nullify", }, ) @JoinColumn({ name: "userNotificationLogId" }) public userOnCallLog?: UserOnCallLog = undefined; @ColumnAccessControl({ create: [], read: [Permission.CurrentUser], update: [], }) @Index() @TableColumn({ type: TableColumnType.ObjectID, required: true, canReadOnRelationQuery: true, title: "User Notification Log ID", description: "ID of your OneUptime User Notification Log in which this object belongs", }) @Column({ type: ColumnType.ObjectID, nullable: false, transformer: ObjectID.getDatabaseTransformer(), }) public userNotificationLogId?: ObjectID = undefined; @ColumnAccessControl({ create: [], read: [Permission.CurrentUser], update: [], }) @TableColumn({ manyToOneRelationColumn: "userNotificationRuleId", type: TableColumnType.Entity, modelType: UserNotificationRule, title: "User Notification Rule", description: "Relation to User Notification Rule Resource in which this object belongs", }) @ManyToOne( () => { return UserNotificationRule; }, { eager: false, nullable: true, onDelete: "CASCADE", orphanedRowAction: "nullify", }, ) @JoinColumn({ name: "userNotificationRuleId" }) public userNotificationRule?: UserNotificationRule = undefined; @ColumnAccessControl({ create: [], read: [Permission.CurrentUser], update: [], }) @Index() @TableColumn({ type: TableColumnType.ObjectID, required: true, canReadOnRelationQuery: true, title: "User Notification Rule ID", description: "ID of your OneUptime User Notification Rule in which this object belongs", }) @Column({ type: ColumnType.ObjectID, nullable: false, transformer: ObjectID.getDatabaseTransformer(), }) public userNotificationRuleId?: ObjectID = undefined; @ColumnAccessControl({ create: [], read: [Permission.CurrentUser], update: [], }) @TableColumn({ manyToOneRelationColumn: "onCallDutyPolicyId", type: TableColumnType.Entity, modelType: OnCallDutyPolicy, title: "OnCallDutyPolicy", description: "Relation to on-call duty policy Resource in which this object belongs", }) @ManyToOne( () => { return OnCallDutyPolicy; }, { eager: false, nullable: true, onDelete: "CASCADE", orphanedRowAction: "nullify", }, ) @JoinColumn({ name: "onCallDutyPolicyId" }) public onCallDutyPolicy?: OnCallDutyPolicy = undefined; @ColumnAccessControl({ create: [], read: [Permission.CurrentUser], update: [], }) @Index() @TableColumn({ type: TableColumnType.ObjectID, required: true, canReadOnRelationQuery: true, title: "OnCallDutyPolicy ID", description: "ID of your OneUptime on-call duty policy in which this object belongs", }) @Column({ type: ColumnType.ObjectID, nullable: false, transformer: ObjectID.getDatabaseTransformer(), }) public onCallDutyPolicyId?: ObjectID = undefined; @ColumnAccessControl({ create: [], read: [Permission.CurrentUser], update: [], }) @TableColumn({ manyToOneRelationColumn: "triggeredByIncidentId", type: TableColumnType.Entity, modelType: Incident, title: "Incident", description: "Relation to Incident Resource in which this object belongs", }) @ManyToOne( () => { return Incident; }, { eager: false, nullable: true, onDelete: "CASCADE", orphanedRowAction: "nullify", }, ) @JoinColumn({ name: "triggeredByIncidentId" }) public triggeredByIncident?: Incident = undefined; @ColumnAccessControl({ create: [], read: [Permission.CurrentUser], update: [], }) @Index() @TableColumn({ type: TableColumnType.ObjectID, required: false, canReadOnRelationQuery: true, title: "Incident ID", description: "ID of your OneUptime Incident in which this object belongs", }) @Column({ type: ColumnType.ObjectID, nullable: true, transformer: ObjectID.getDatabaseTransformer(), }) public triggeredByIncidentId?: ObjectID = undefined; @ColumnAccessControl({ create: [], read: [Permission.CurrentUser], update: [], }) @TableColumn({ manyToOneRelationColumn: "triggeredByAlertId", type: TableColumnType.Entity, modelType: Alert, title: "Alert", description: "Relation to Alert Resource in which this object belongs", }) @ManyToOne( () => { return Alert; }, { eager: false, nullable: true, onDelete: "CASCADE", orphanedRowAction: "nullify", }, ) @JoinColumn({ name: "triggeredByAlertId" }) public triggeredByAlert?: Alert = undefined; @ColumnAccessControl({ create: [], read: [Permission.CurrentUser], update: [], }) @Index() @TableColumn({ type: TableColumnType.ObjectID, required: false, canReadOnRelationQuery: true, title: "Alert ID", description: "ID of your OneUptime Alert in which this object belongs", }) @Column({ type: ColumnType.ObjectID, nullable: true, transformer: ObjectID.getDatabaseTransformer(), }) public triggeredByAlertId?: ObjectID = undefined; @ColumnAccessControl({ create: [], read: [Permission.CurrentUser], update: [], }) @TableColumn({ manyToOneRelationColumn: "triggeredByAlertEpisodeId", type: TableColumnType.Entity, modelType: AlertEpisode, title: "Alert Episode", description: "Relation to Alert Episode Resource in which this object belongs", }) @ManyToOne( () => { return AlertEpisode; }, { eager: false, nullable: true, onDelete: "CASCADE", orphanedRowAction: "nullify", }, ) @JoinColumn({ name: "triggeredByAlertEpisodeId" }) public triggeredByAlertEpisode?: AlertEpisode = undefined; @ColumnAccessControl({ create: [], read: [Permission.CurrentUser], update: [], }) @Index() @TableColumn({ type: TableColumnType.ObjectID, required: false, canReadOnRelationQuery: true, title: "Alert Episode ID", description: "ID of your OneUptime Alert Episode in which this object belongs", }) @Column({ type: ColumnType.ObjectID, nullable: true, transformer: ObjectID.getDatabaseTransformer(), }) public triggeredByAlertEpisodeId?: ObjectID = undefined; @ColumnAccessControl({ create: [], read: [Permission.CurrentUser], update: [], }) @TableColumn({ manyToOneRelationColumn: "triggeredByIncidentEpisodeId", type: TableColumnType.Entity, modelType: IncidentEpisode, title: "Incident Episode", description: "Relation to Incident Episode Resource in which this object belongs", }) @ManyToOne( () => { return IncidentEpisode; }, { eager: false, nullable: true, onDelete: "CASCADE", orphanedRowAction: "nullify", }, ) @JoinColumn({ name: "triggeredByIncidentEpisodeId" }) public triggeredByIncidentEpisode?: IncidentEpisode = undefined; @ColumnAccessControl({ create: [], read: [Permission.CurrentUser], update: [], }) @Index() @TableColumn({ type: TableColumnType.ObjectID, required: false, canReadOnRelationQuery: true, title: "Incident Episode ID", description: "ID of your OneUptime Incident Episode in which this object belongs", }) @Column({ type: ColumnType.ObjectID, nullable: true, transformer: ObjectID.getDatabaseTransformer(), }) public triggeredByIncidentEpisodeId?: ObjectID = undefined; @ColumnAccessControl({ create: [], read: [Permission.CurrentUser], update: [], }) @TableColumn({ manyToOneRelationColumn: "onCallDutyPolicyExecutionLogId", type: TableColumnType.Entity, modelType: OnCallDutyPolicyExecutionLog, title: "On-Call Policy Execution Log", description: "Relation to On-Call Policy Execution Log where this timeline event belongs.", }) @ManyToOne( () => { return OnCallDutyPolicyExecutionLog; }, { eager: false, nullable: true, onDelete: "CASCADE", orphanedRowAction: "nullify", }, ) @JoinColumn({ name: "onCallDutyPolicyExecutionLogId" }) public onCallDutyPolicyExecutionLog?: OnCallDutyPolicyExecutionLog = undefined; @ColumnAccessControl({ create: [], read: [Permission.CurrentUser], update: [], }) @Index() @TableColumn({ type: TableColumnType.ObjectID, required: true, canReadOnRelationQuery: true, title: "On-Call Policy Execution Log Timeline ID", description: "ID of your On-Call Policy Execution Log Timeline where this timeline event belongs.", }) @Column({ type: ColumnType.ObjectID, nullable: false, transformer: ObjectID.getDatabaseTransformer(), }) public onCallDutyPolicyExecutionLogId?: ObjectID = undefined; @ColumnAccessControl({ create: [], read: [Permission.CurrentUser], update: [], }) @TableColumn({ manyToOneRelationColumn: "onCallDutyPolicyExecutionLogTimelineId", type: TableColumnType.Entity, modelType: OnCallDutyPolicyExecutionLogTimeline, title: "On-Call Policy Execution Log Timeline", description: "Relation to On-Call Policy Execution Log Timeline where this timeline event belongs.", }) @ManyToOne( () => { return OnCallDutyPolicyExecutionLogTimeline; }, { eager: false, nullable: true, onDelete: "CASCADE", orphanedRowAction: "nullify", }, ) @JoinColumn({ name: "onCallDutyPolicyExecutionLogTimelineId" }) public onCallDutyPolicyExecutionLogTimeline?: OnCallDutyPolicyExecutionLogTimeline = undefined; @ColumnAccessControl({ create: [], read: [Permission.CurrentUser], update: [], }) @Index() @TableColumn({ type: TableColumnType.ObjectID, required: true, canReadOnRelationQuery: true, title: "On-Call Policy Execution Log ID", description: "ID of your On-Call Policy Execution Log where this timeline event belongs.", }) @Column({ type: ColumnType.ObjectID, nullable: false, transformer: ObjectID.getDatabaseTransformer(), }) public onCallDutyPolicyExecutionLogTimelineId?: ObjectID = undefined; @ColumnAccessControl({ create: [], read: [Permission.CurrentUser], update: [], }) @TableColumn({ manyToOneRelationColumn: "onCallDutyPolicyEscalationRuleId", type: TableColumnType.Entity, modelType: OnCallDutyPolicyEscalationRule, title: "On-Call Policy Escalation Rule", description: "Relation to On-Call Policy Escalation Rule where this timeline event belongs.", }) @ManyToOne( () => { return OnCallDutyPolicyEscalationRule; }, { eager: false, nullable: true, onDelete: "CASCADE", orphanedRowAction: "nullify", }, ) @JoinColumn({ name: "onCallDutyPolicyEscalationRuleId" }) public onCallDutyPolicyEscalationRule?: OnCallDutyPolicyEscalationRule = undefined; @ColumnAccessControl({ create: [], read: [Permission.CurrentUser], update: [], }) @TableColumn({ required: true, type: TableColumnType.ShortText, title: "Notification Event Type", description: "Notification Event Type of this execution", canReadOnRelationQuery: false, }) @Column({ nullable: false, type: ColumnType.ShortText, length: ColumnLength.ShortText, }) public userNotificationEventType?: UserNotificationEventType = undefined; @ColumnAccessControl({ create: [], read: [Permission.CurrentUser], update: [], }) @Index() @TableColumn({ type: TableColumnType.ObjectID, required: true, canReadOnRelationQuery: true, title: "On-Call Policy Escalation Rule ID", description: "ID of your On-Call Policy Escalation Rule where this timeline event belongs.", }) @Column({ type: ColumnType.ObjectID, nullable: false, transformer: ObjectID.getDatabaseTransformer(), }) public onCallDutyPolicyEscalationRuleId?: ObjectID = undefined; @ColumnAccessControl({ create: [], read: [Permission.CurrentUser], update: [], }) @TableColumn({ manyToOneRelationColumn: "userBelongsToTeamId", type: TableColumnType.Entity, modelType: Team, title: "Which team did the user belong to when the alert was sent?", description: "Which team did the user belong to when the alert was sent?", }) @ManyToOne( () => { return Team; }, { eager: false, nullable: true, onDelete: "CASCADE", orphanedRowAction: "nullify", }, ) @JoinColumn({ name: "userBelongsToTeamId" }) public userBelongsToTeam?: Team = undefined; @ColumnAccessControl({ create: [], read: [Permission.CurrentUser], update: [], }) @TableColumn({ type: TableColumnType.ObjectID, title: "Which team did the user belong to when the alert was sent?", description: "Which team did the user belong to when the alert was sent?", }) @Column({ type: ColumnType.ObjectID, nullable: true, transformer: ObjectID.getDatabaseTransformer(), }) public userBelongsToTeamId?: ObjectID = undefined; @ColumnAccessControl({ create: [], read: [Permission.CurrentUser], update: [], }) @TableColumn({ required: true, type: TableColumnType.LongText, title: "Status Message", description: "Status message of this execution timeline event", canReadOnRelationQuery: false, }) @Column({ nullable: false, type: ColumnType.LongText, length: ColumnLength.LongText, }) public statusMessage?: string = undefined; @ColumnAccessControl({ create: [], read: [Permission.CurrentUser], update: [], }) @TableColumn({ required: true, type: TableColumnType.ShortText, title: "Status", description: "Status of this execution timeline event", canReadOnRelationQuery: false, }) @Column({ nullable: false, type: ColumnType.ShortText, length: ColumnLength.ShortText, }) public status?: UserNotificationStatus = undefined; @ColumnAccessControl({ create: [], 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: [], 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)", }) @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: [Permission.CurrentUser], update: [], }) @TableColumn({ isDefaultValueColumn: false, required: false, type: TableColumnType.Boolean, }) @Column({ type: ColumnType.Boolean, nullable: true, unique: false, }) public isAcknowledged?: boolean = undefined; @ColumnAccessControl({ create: [], read: [Permission.CurrentUser], update: [], }) @TableColumn({ isDefaultValueColumn: false, required: false, type: TableColumnType.Date, }) @Column({ type: ColumnType.Date, nullable: true, unique: false, }) public acknowledgedAt?: Date = undefined; @ColumnAccessControl({ create: [], 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: [], 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", }) @Column({ type: ColumnType.ObjectID, nullable: true, transformer: ObjectID.getDatabaseTransformer(), }) public userCallId?: ObjectID = undefined; @ColumnAccessControl({ create: [], 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: [], 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", }) @Column({ type: ColumnType.ObjectID, nullable: true, transformer: ObjectID.getDatabaseTransformer(), }) public userSmsId?: ObjectID = undefined; @ColumnAccessControl({ create: [], 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: [], 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", }) @Column({ type: ColumnType.ObjectID, nullable: true, transformer: ObjectID.getDatabaseTransformer(), }) public userWhatsAppId?: ObjectID = undefined; @ColumnAccessControl({ create: [], 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: [], 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", }) @Column({ type: ColumnType.ObjectID, nullable: true, transformer: ObjectID.getDatabaseTransformer(), }) public userEmailId?: ObjectID = undefined; @ColumnAccessControl({ create: [], 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: [], 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", }) @Column({ type: ColumnType.ObjectID, nullable: true, transformer: ObjectID.getDatabaseTransformer(), }) public userPushId?: ObjectID = 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; }