@oneuptime/common 12.0.31 → 12.0.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Models/DatabaseModels/AlertState.ts +0 -2
- package/Models/DatabaseModels/Domain.ts +1 -1
- package/Models/DatabaseModels/Incident.ts +1 -1
- package/Models/DatabaseModels/IncidentTemplate.ts +1 -1
- package/Models/DatabaseModels/Index.ts +2 -0
- package/Models/DatabaseModels/MetricType.ts +0 -2
- package/Models/DatabaseModels/MonitorStatusTimeline.ts +0 -2
- package/Models/DatabaseModels/MonitorTest.ts +0 -2
- package/Models/DatabaseModels/NetworkDevice.ts +121 -2
- package/Models/DatabaseModels/NetworkDeviceOidTemplate.ts +3 -1
- package/Models/DatabaseModels/NetworkDeviceRole.ts +648 -0
- package/Models/DatabaseModels/ScheduledMaintenance.ts +1 -1
- package/Models/DatabaseModels/ScheduledMaintenanceTemplate.ts +1 -1
- package/Models/DatabaseModels/StatusPageAnnouncement.ts +0 -2
- package/Models/DatabaseModels/StatusPageAnnouncementTemplate.ts +0 -2
- package/Models/DatabaseModels/StatusPagePrivateUser.ts +0 -2
- package/Models/DatabaseModels/StatusPageResource.ts +0 -2
- package/Models/DatabaseModels/StatusPageSubscriber.ts +0 -2
- package/Server/Infrastructure/Postgres/SchemaMigrations/1790800000000-AddNetworkDeviceRoleTable.ts +72 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +2 -0
- package/Server/Services/DatabaseService.ts +39 -9
- package/Server/Services/Index.ts +2 -0
- package/Server/Services/NetworkDeviceRoleService.ts +90 -0
- package/Server/Services/ProjectService.ts +85 -0
- package/Server/Services/UserNotificationSettingService.ts +0 -6
- package/Tests/App/Dashboard/AddNeighborToMonitoringModal.test.tsx +31 -1
- package/Tests/App/Dashboard/DashboardChartWidgetZoom.test.tsx +35 -8
- package/Tests/App/Dashboard/DashboardCommandPalette.test.tsx +107 -3
- package/Tests/App/Dashboard/DashboardWideChartZoom.test.tsx +401 -0
- package/Tests/App/Dashboard/MonitorTemplateColumnAndFacet.test.tsx +318 -0
- package/Tests/App/Dashboard/NetworkDeviceBulkDelete.test.tsx +357 -0
- package/Tests/App/Dashboard/NetworkSideMenu.test.tsx +590 -0
- package/Tests/App/Dashboard/SideMenuHarness.tsx +11 -3
- package/Tests/Models/DatabaseModels/ModelRegistryInvariants.test.ts +115 -41
- package/Tests/Server/Infrastructure/Postgres/NetworkDeviceRoleTableMigration.test.ts +476 -0
- package/Tests/Server/Services/DatabaseServiceGenerateSlug.test.ts +215 -0
- package/Tests/Server/Services/NetworkDeviceRoleModel.test.ts +672 -0
- package/Tests/Server/Services/NetworkDeviceRuleEngines.test.ts +1 -1
- package/Tests/Server/Services/ProjectServiceCreateSubscriptionStarted.test.ts +67 -4
- package/Tests/Server/Services/ScheduledMaintenanceSubscriberEndTime.test.ts +369 -0
- package/Tests/Server/Services/UserNotificationSettingMonitorDefaults.test.ts +248 -0
- package/Tests/Server/Services/UserNotificationSettingWorkspaceChannels.test.ts +43 -2
- package/Tests/Server/Utils/BasicCron.test.ts +283 -0
- package/Tests/Server/Utils/IncomingCallPhoneNumber.test.ts +174 -0
- package/Tests/Types/NetworkDevice/DefaultNetworkDeviceRole.test.ts +417 -0
- package/Tests/UI/Components/Charts/ChartClickDoubleClickDisambiguation.test.tsx +221 -0
- package/Tests/UI/Components/Charts/ChartDoubleClickReset.test.tsx +220 -0
- package/Tests/UI/Components/ModelTable/BaseModelTableBulkDelete.test.tsx +751 -0
- package/Tests/UI/Components/ModelTable/BaseModelTableColumnCustomization.test.tsx +475 -43
- package/Tests/UI/Components/ModelTable/ColumnPreference.test.ts +89 -0
- package/Tests/UI/Components/NavBarCommandKGating.test.tsx +103 -8
- package/Tests/UI/Components/SideMenuItem.test.tsx +30 -0
- package/Tests/UI/Utils/TableColumnsToCsv.test.ts +30 -0
- package/Tests/UI/Utils/UseDashboardTimeRangeZoom.test.tsx +187 -0
- package/Tests/Utils/Dashboard/DashboardResourceListSharedArgs.test.ts +302 -0
- package/Tests/Utils/Dashboard/DashboardTimeRangeZoom.test.ts +242 -0
- package/Tests/Utils/Monitor/NetworkDeviceRoleCatalog.test.ts +981 -0
- package/Tests/Utils/Monitor/NetworkTopologyRoleCatalog.test.ts +865 -0
- package/Tests/Utils/NetworkDevice/DeviceRoleKeyUtil.test.ts +538 -0
- package/Tests/Utils/Slo/SloEvaluation.test.ts +171 -0
- package/Tests/Utils/Slug.test.ts +61 -1
- package/Tests/jest.setup.ts +19 -0
- package/Types/Monitor/SnmpMonitor/NetworkTopology.ts +61 -0
- package/Types/NetworkDevice/DefaultNetworkDeviceRole.ts +145 -0
- package/Types/Permission.ts +45 -0
- package/UI/Components/Charts/Area/AreaChart.tsx +7 -0
- package/UI/Components/Charts/Bar/BarChart.tsx +6 -0
- package/UI/Components/Charts/ChartGroup/ChartGroup.tsx +9 -1
- package/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.tsx +97 -35
- package/UI/Components/Charts/ChartLibrary/BarChart/BarChart.tsx +14 -0
- package/UI/Components/Charts/ChartLibrary/LineChart/LineChart.tsx +97 -35
- package/UI/Components/Charts/ChartLibrary/Utils/DoubleClick.ts +13 -0
- package/UI/Components/Charts/Line/LineChart.tsx +7 -0
- package/UI/Components/ModelTable/BaseModelTable.tsx +50 -15
- package/UI/Components/Navbar/NavBar.tsx +62 -13
- package/UI/Components/Navbar/NavBarMenuModal.tsx +7 -2
- package/UI/Components/SideMenu/CountModelSideMenuItem.tsx +2 -0
- package/UI/Components/SideMenu/SideMenu.tsx +12 -2
- package/UI/Components/SideMenu/SideMenuItem.tsx +4 -1
- package/UI/Components/SideMenu/SideMenuSection.tsx +14 -2
- package/UI/Utils/UseDashboardTimeRangeZoom.ts +77 -0
- package/Utils/Dashboard/DashboardTimeRangeZoom.ts +118 -0
- package/Utils/Monitor/NetworkDeviceRoleCatalog.ts +232 -0
- package/Utils/Monitor/NetworkDeviceRoleUtil.ts +2 -1
- package/Utils/Monitor/NetworkTopologyUtil.ts +116 -33
- package/Utils/NetworkDevice/DeviceRoleKeyUtil.ts +137 -0
- package/Utils/Rules/RulePatternMatchUtil.ts +1 -1
- package/Utils/Slug.ts +34 -1
- package/build/dist/Models/DatabaseModels/AlertState.js +0 -2
- package/build/dist/Models/DatabaseModels/AlertState.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Domain.js +1 -1
- package/build/dist/Models/DatabaseModels/Domain.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Incident.js +1 -1
- package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentTemplate.js +1 -1
- package/build/dist/Models/DatabaseModels/IncidentTemplate.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +2 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MetricType.js +0 -2
- package/build/dist/Models/DatabaseModels/MetricType.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MonitorStatusTimeline.js +0 -2
- package/build/dist/Models/DatabaseModels/MonitorStatusTimeline.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MonitorTest.js +0 -2
- package/build/dist/Models/DatabaseModels/MonitorTest.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDevice.js +124 -3
- package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceOidTemplate.js +3 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceOidTemplate.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceRole.js +677 -0
- package/build/dist/Models/DatabaseModels/NetworkDeviceRole.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplate.js +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplate.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageAnnouncement.js +0 -2
- package/build/dist/Models/DatabaseModels/StatusPageAnnouncement.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageAnnouncementTemplate.js +0 -2
- package/build/dist/Models/DatabaseModels/StatusPageAnnouncementTemplate.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPagePrivateUser.js +0 -2
- package/build/dist/Models/DatabaseModels/StatusPagePrivateUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageResource.js +0 -2
- package/build/dist/Models/DatabaseModels/StatusPageResource.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageSubscriber.js +0 -2
- package/build/dist/Models/DatabaseModels/StatusPageSubscriber.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790800000000-AddNetworkDeviceRoleTable.js +39 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790800000000-AddNetworkDeviceRoleTable.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +2 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Services/DatabaseService.js +31 -5
- package/build/dist/Server/Services/DatabaseService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +2 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceRoleService.js +70 -0
- package/build/dist/Server/Services/NetworkDeviceRoleService.js.map +1 -0
- package/build/dist/Server/Services/ProjectService.js +65 -0
- package/build/dist/Server/Services/ProjectService.js.map +1 -1
- package/build/dist/Server/Services/UserNotificationSettingService.js +0 -1
- package/build/dist/Server/Services/UserNotificationSettingService.js.map +1 -1
- package/build/dist/Types/NetworkDevice/DefaultNetworkDeviceRole.js +105 -0
- package/build/dist/Types/NetworkDevice/DefaultNetworkDeviceRole.js.map +1 -0
- package/build/dist/Types/Permission.js +40 -0
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/UI/Components/Charts/Area/AreaChart.js +1 -1
- package/build/dist/UI/Components/Charts/Area/AreaChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/Bar/BarChart.js +1 -1
- package/build/dist/UI/Components/Charts/Bar/BarChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js +6 -1
- package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js +79 -31
- package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js +7 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js +79 -31
- package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/Utils/DoubleClick.js +14 -0
- package/build/dist/UI/Components/Charts/ChartLibrary/Utils/DoubleClick.js.map +1 -0
- package/build/dist/UI/Components/Charts/Line/LineChart.js +1 -1
- package/build/dist/UI/Components/Charts/Line/LineChart.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js +39 -13
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
- package/build/dist/UI/Components/Navbar/NavBar.js +44 -9
- package/build/dist/UI/Components/Navbar/NavBar.js.map +1 -1
- package/build/dist/UI/Components/Navbar/NavBarMenuModal.js +2 -2
- package/build/dist/UI/Components/Navbar/NavBarMenuModal.js.map +1 -1
- package/build/dist/UI/Components/SideMenu/CountModelSideMenuItem.js +1 -1
- package/build/dist/UI/Components/SideMenu/CountModelSideMenuItem.js.map +1 -1
- package/build/dist/UI/Components/SideMenu/SideMenu.js +9 -6
- package/build/dist/UI/Components/SideMenu/SideMenu.js.map +1 -1
- package/build/dist/UI/Components/SideMenu/SideMenuItem.js +1 -1
- package/build/dist/UI/Components/SideMenu/SideMenuItem.js.map +1 -1
- package/build/dist/UI/Components/SideMenu/SideMenuSection.js +7 -2
- package/build/dist/UI/Components/SideMenu/SideMenuSection.js.map +1 -1
- package/build/dist/UI/Utils/UseDashboardTimeRangeZoom.js +42 -0
- package/build/dist/UI/Utils/UseDashboardTimeRangeZoom.js.map +1 -0
- package/build/dist/Utils/Dashboard/DashboardTimeRangeZoom.js +74 -0
- package/build/dist/Utils/Dashboard/DashboardTimeRangeZoom.js.map +1 -0
- package/build/dist/Utils/Monitor/NetworkDeviceRoleCatalog.js +126 -0
- package/build/dist/Utils/Monitor/NetworkDeviceRoleCatalog.js.map +1 -0
- package/build/dist/Utils/Monitor/NetworkDeviceRoleUtil.js +2 -1
- package/build/dist/Utils/Monitor/NetworkDeviceRoleUtil.js.map +1 -1
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js +67 -32
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js.map +1 -1
- package/build/dist/Utils/NetworkDevice/DeviceRoleKeyUtil.js +114 -0
- package/build/dist/Utils/NetworkDevice/DeviceRoleKeyUtil.js.map +1 -0
- package/build/dist/Utils/Rules/RulePatternMatchUtil.js +1 -1
- package/build/dist/Utils/Slug.js +31 -1
- package/build/dist/Utils/Slug.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,648 @@
|
|
|
1
|
+
import Project from "./Project";
|
|
2
|
+
import User from "./User";
|
|
3
|
+
import BaseModel from "./DatabaseBaseModel/DatabaseBaseModel";
|
|
4
|
+
import Route from "../../Types/API/Route";
|
|
5
|
+
import ColumnAccessControl from "../../Types/Database/AccessControl/ColumnAccessControl";
|
|
6
|
+
import TableAccessControl from "../../Types/Database/AccessControl/TableAccessControl";
|
|
7
|
+
import ColumnLength from "../../Types/Database/ColumnLength";
|
|
8
|
+
import ColumnType from "../../Types/Database/ColumnType";
|
|
9
|
+
import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
|
|
10
|
+
import EnableDocumentation from "../../Types/Database/EnableDocumentation";
|
|
11
|
+
import SlugifyColumn from "../../Types/Database/SlugifyColumn";
|
|
12
|
+
import TableColumn from "../../Types/Database/TableColumn";
|
|
13
|
+
import TableColumnType from "../../Types/Database/TableColumnType";
|
|
14
|
+
import TableMetadata from "../../Types/Database/TableMetadata";
|
|
15
|
+
import TenantColumn from "../../Types/Database/TenantColumn";
|
|
16
|
+
import UniqueColumnBy from "../../Types/Database/UniqueColumnBy";
|
|
17
|
+
import IconProp from "../../Types/Icon/IconProp";
|
|
18
|
+
import ObjectID from "../../Types/ObjectID";
|
|
19
|
+
import Permission from "../../Types/Permission";
|
|
20
|
+
import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
|
|
21
|
+
|
|
22
|
+
@EnableDocumentation()
|
|
23
|
+
@TenantColumn("projectId")
|
|
24
|
+
@TableAccessControl({
|
|
25
|
+
create: [
|
|
26
|
+
Permission.ProjectOwner,
|
|
27
|
+
Permission.ProjectAdmin,
|
|
28
|
+
Permission.ProjectMember,
|
|
29
|
+
Permission.SettingsAdmin,
|
|
30
|
+
Permission.SettingsMember,
|
|
31
|
+
Permission.CreateNetworkDeviceRole,
|
|
32
|
+
],
|
|
33
|
+
read: [
|
|
34
|
+
Permission.ProjectOwner,
|
|
35
|
+
Permission.ProjectAdmin,
|
|
36
|
+
Permission.ProjectMember,
|
|
37
|
+
Permission.Viewer,
|
|
38
|
+
Permission.SettingsAdmin,
|
|
39
|
+
Permission.SettingsMember,
|
|
40
|
+
Permission.SettingsViewer,
|
|
41
|
+
Permission.ReadNetworkDeviceRole,
|
|
42
|
+
],
|
|
43
|
+
delete: [
|
|
44
|
+
Permission.ProjectOwner,
|
|
45
|
+
Permission.ProjectAdmin,
|
|
46
|
+
Permission.ProjectMember,
|
|
47
|
+
Permission.SettingsAdmin,
|
|
48
|
+
Permission.SettingsMember,
|
|
49
|
+
Permission.DeleteNetworkDeviceRole,
|
|
50
|
+
],
|
|
51
|
+
update: [
|
|
52
|
+
Permission.ProjectOwner,
|
|
53
|
+
Permission.ProjectAdmin,
|
|
54
|
+
Permission.ProjectMember,
|
|
55
|
+
Permission.SettingsAdmin,
|
|
56
|
+
Permission.SettingsMember,
|
|
57
|
+
Permission.EditNetworkDeviceRole,
|
|
58
|
+
],
|
|
59
|
+
})
|
|
60
|
+
@CrudApiEndpoint(new Route("/network-device-role"))
|
|
61
|
+
@SlugifyColumn("name", "slug")
|
|
62
|
+
@TableMetadata({
|
|
63
|
+
tableName: "NetworkDeviceRole",
|
|
64
|
+
singularName: "Network Device Role",
|
|
65
|
+
pluralName: "Network Device Roles",
|
|
66
|
+
icon: IconProp.Cube,
|
|
67
|
+
tableDescription:
|
|
68
|
+
"Configure what a device can be on your network (Router, Switch, Firewall and so on), how each role is drawn on the topology map, and which roles sit at the core.",
|
|
69
|
+
})
|
|
70
|
+
@Entity({
|
|
71
|
+
name: "NetworkDeviceRole",
|
|
72
|
+
})
|
|
73
|
+
export default class NetworkDeviceRole extends BaseModel {
|
|
74
|
+
@ColumnAccessControl({
|
|
75
|
+
create: [
|
|
76
|
+
Permission.ProjectOwner,
|
|
77
|
+
Permission.ProjectAdmin,
|
|
78
|
+
Permission.ProjectMember,
|
|
79
|
+
Permission.SettingsAdmin,
|
|
80
|
+
Permission.SettingsMember,
|
|
81
|
+
Permission.CreateNetworkDeviceRole,
|
|
82
|
+
],
|
|
83
|
+
read: [
|
|
84
|
+
Permission.ProjectOwner,
|
|
85
|
+
Permission.ProjectAdmin,
|
|
86
|
+
Permission.ProjectMember,
|
|
87
|
+
Permission.Viewer,
|
|
88
|
+
Permission.SettingsAdmin,
|
|
89
|
+
Permission.SettingsMember,
|
|
90
|
+
Permission.SettingsViewer,
|
|
91
|
+
Permission.ReadNetworkDeviceRole,
|
|
92
|
+
],
|
|
93
|
+
update: [],
|
|
94
|
+
})
|
|
95
|
+
@TableColumn({
|
|
96
|
+
manyToOneRelationColumn: "projectId",
|
|
97
|
+
type: TableColumnType.Entity,
|
|
98
|
+
modelType: Project,
|
|
99
|
+
title: "Project",
|
|
100
|
+
description: "Relation to Project Resource in which this object belongs",
|
|
101
|
+
})
|
|
102
|
+
@ManyToOne(
|
|
103
|
+
() => {
|
|
104
|
+
return Project;
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
eager: false,
|
|
108
|
+
nullable: true,
|
|
109
|
+
onDelete: "CASCADE",
|
|
110
|
+
orphanedRowAction: "nullify",
|
|
111
|
+
},
|
|
112
|
+
)
|
|
113
|
+
@JoinColumn({ name: "projectId" })
|
|
114
|
+
public project?: Project = undefined;
|
|
115
|
+
|
|
116
|
+
@ColumnAccessControl({
|
|
117
|
+
create: [
|
|
118
|
+
Permission.ProjectOwner,
|
|
119
|
+
Permission.ProjectAdmin,
|
|
120
|
+
Permission.ProjectMember,
|
|
121
|
+
Permission.SettingsAdmin,
|
|
122
|
+
Permission.SettingsMember,
|
|
123
|
+
Permission.CreateNetworkDeviceRole,
|
|
124
|
+
],
|
|
125
|
+
read: [
|
|
126
|
+
Permission.ProjectOwner,
|
|
127
|
+
Permission.ProjectAdmin,
|
|
128
|
+
Permission.ProjectMember,
|
|
129
|
+
Permission.Viewer,
|
|
130
|
+
Permission.SettingsAdmin,
|
|
131
|
+
Permission.SettingsMember,
|
|
132
|
+
Permission.SettingsViewer,
|
|
133
|
+
Permission.ReadNetworkDeviceRole,
|
|
134
|
+
],
|
|
135
|
+
update: [],
|
|
136
|
+
})
|
|
137
|
+
@Index()
|
|
138
|
+
@TableColumn({
|
|
139
|
+
type: TableColumnType.ObjectID,
|
|
140
|
+
required: true,
|
|
141
|
+
canReadOnRelationQuery: true,
|
|
142
|
+
title: "Project ID",
|
|
143
|
+
description: "ID of your OneUptime Project in which this object belongs",
|
|
144
|
+
})
|
|
145
|
+
@Column({
|
|
146
|
+
type: ColumnType.ObjectID,
|
|
147
|
+
nullable: false,
|
|
148
|
+
transformer: ObjectID.getDatabaseTransformer(),
|
|
149
|
+
})
|
|
150
|
+
public projectId?: ObjectID = undefined;
|
|
151
|
+
|
|
152
|
+
@ColumnAccessControl({
|
|
153
|
+
create: [
|
|
154
|
+
Permission.ProjectOwner,
|
|
155
|
+
Permission.ProjectAdmin,
|
|
156
|
+
Permission.ProjectMember,
|
|
157
|
+
Permission.SettingsAdmin,
|
|
158
|
+
Permission.SettingsMember,
|
|
159
|
+
Permission.CreateNetworkDeviceRole,
|
|
160
|
+
],
|
|
161
|
+
read: [
|
|
162
|
+
Permission.ProjectOwner,
|
|
163
|
+
Permission.ProjectAdmin,
|
|
164
|
+
Permission.ProjectMember,
|
|
165
|
+
Permission.Viewer,
|
|
166
|
+
Permission.SettingsAdmin,
|
|
167
|
+
Permission.SettingsMember,
|
|
168
|
+
Permission.SettingsViewer,
|
|
169
|
+
Permission.ReadNetworkDeviceRole,
|
|
170
|
+
],
|
|
171
|
+
update: [
|
|
172
|
+
Permission.ProjectOwner,
|
|
173
|
+
Permission.ProjectAdmin,
|
|
174
|
+
Permission.ProjectMember,
|
|
175
|
+
Permission.SettingsAdmin,
|
|
176
|
+
Permission.SettingsMember,
|
|
177
|
+
Permission.EditNetworkDeviceRole,
|
|
178
|
+
],
|
|
179
|
+
})
|
|
180
|
+
@TableColumn({
|
|
181
|
+
required: true,
|
|
182
|
+
type: TableColumnType.ShortText,
|
|
183
|
+
canReadOnRelationQuery: true,
|
|
184
|
+
title: "Name",
|
|
185
|
+
description: "Any friendly name of this object",
|
|
186
|
+
example: "Router",
|
|
187
|
+
})
|
|
188
|
+
@Column({
|
|
189
|
+
nullable: false,
|
|
190
|
+
type: ColumnType.ShortText,
|
|
191
|
+
length: ColumnLength.ShortText,
|
|
192
|
+
})
|
|
193
|
+
@UniqueColumnBy("projectId")
|
|
194
|
+
public name?: string = undefined;
|
|
195
|
+
|
|
196
|
+
@ColumnAccessControl({
|
|
197
|
+
create: [],
|
|
198
|
+
read: [
|
|
199
|
+
Permission.ProjectOwner,
|
|
200
|
+
Permission.ProjectAdmin,
|
|
201
|
+
Permission.ProjectMember,
|
|
202
|
+
Permission.Viewer,
|
|
203
|
+
Permission.SettingsAdmin,
|
|
204
|
+
Permission.SettingsMember,
|
|
205
|
+
Permission.SettingsViewer,
|
|
206
|
+
Permission.ReadNetworkDeviceRole,
|
|
207
|
+
],
|
|
208
|
+
update: [],
|
|
209
|
+
})
|
|
210
|
+
@TableColumn({
|
|
211
|
+
required: true,
|
|
212
|
+
unique: true,
|
|
213
|
+
type: TableColumnType.Slug,
|
|
214
|
+
computed: true,
|
|
215
|
+
title: "Slug",
|
|
216
|
+
description: "Friendly globally unique name for your object",
|
|
217
|
+
})
|
|
218
|
+
@Column({
|
|
219
|
+
nullable: false,
|
|
220
|
+
type: ColumnType.Slug,
|
|
221
|
+
length: ColumnLength.Slug,
|
|
222
|
+
})
|
|
223
|
+
public slug?: string = undefined;
|
|
224
|
+
|
|
225
|
+
@ColumnAccessControl({
|
|
226
|
+
create: [],
|
|
227
|
+
read: [
|
|
228
|
+
Permission.ProjectOwner,
|
|
229
|
+
Permission.ProjectAdmin,
|
|
230
|
+
Permission.ProjectMember,
|
|
231
|
+
Permission.Viewer,
|
|
232
|
+
Permission.SettingsAdmin,
|
|
233
|
+
Permission.SettingsMember,
|
|
234
|
+
Permission.SettingsViewer,
|
|
235
|
+
Permission.ReadNetworkDeviceRole,
|
|
236
|
+
],
|
|
237
|
+
update: [],
|
|
238
|
+
})
|
|
239
|
+
/*
|
|
240
|
+
* The role's STABLE identity, and the reason renaming a role is safe.
|
|
241
|
+
*
|
|
242
|
+
* The SNMP classifier (NetworkDeviceRoleUtil) works out what a device is
|
|
243
|
+
* from its own identity, and it can only ever answer in the built-in
|
|
244
|
+
* vocabulary - "router", "switch", "wirelessAccessPoint" and so on. This
|
|
245
|
+
* column is what its answer is matched against, so a project that renames
|
|
246
|
+
* "Wireless AP" to "Access Point" keeps every classified AP pointing at the
|
|
247
|
+
* renamed row instead of falling off the map.
|
|
248
|
+
*
|
|
249
|
+
* Derived by the service from the name on create and never editable
|
|
250
|
+
* afterwards (create/update are both empty above): the name is the label,
|
|
251
|
+
* this is the identity, and letting the identity move would silently
|
|
252
|
+
* re-point every device already classified into it.
|
|
253
|
+
*/
|
|
254
|
+
@TableColumn({
|
|
255
|
+
required: true,
|
|
256
|
+
type: TableColumnType.ShortText,
|
|
257
|
+
canReadOnRelationQuery: true,
|
|
258
|
+
computed: true,
|
|
259
|
+
title: "Key",
|
|
260
|
+
description:
|
|
261
|
+
"Stable identifier for this role, derived from its name when it is created. SNMP classification and the topology map match on this, so it never changes when the role is renamed.",
|
|
262
|
+
example: "wirelessAccessPoint",
|
|
263
|
+
})
|
|
264
|
+
@Column({
|
|
265
|
+
nullable: false,
|
|
266
|
+
type: ColumnType.ShortText,
|
|
267
|
+
length: ColumnLength.ShortText,
|
|
268
|
+
})
|
|
269
|
+
@UniqueColumnBy("projectId")
|
|
270
|
+
public key?: string = undefined;
|
|
271
|
+
|
|
272
|
+
@ColumnAccessControl({
|
|
273
|
+
create: [
|
|
274
|
+
Permission.ProjectOwner,
|
|
275
|
+
Permission.ProjectAdmin,
|
|
276
|
+
Permission.ProjectMember,
|
|
277
|
+
Permission.SettingsAdmin,
|
|
278
|
+
Permission.SettingsMember,
|
|
279
|
+
Permission.CreateNetworkDeviceRole,
|
|
280
|
+
],
|
|
281
|
+
read: [
|
|
282
|
+
Permission.ProjectOwner,
|
|
283
|
+
Permission.ProjectAdmin,
|
|
284
|
+
Permission.ProjectMember,
|
|
285
|
+
Permission.Viewer,
|
|
286
|
+
Permission.SettingsAdmin,
|
|
287
|
+
Permission.SettingsMember,
|
|
288
|
+
Permission.SettingsViewer,
|
|
289
|
+
Permission.ReadNetworkDeviceRole,
|
|
290
|
+
],
|
|
291
|
+
update: [
|
|
292
|
+
Permission.ProjectOwner,
|
|
293
|
+
Permission.ProjectAdmin,
|
|
294
|
+
Permission.ProjectMember,
|
|
295
|
+
Permission.SettingsAdmin,
|
|
296
|
+
Permission.SettingsMember,
|
|
297
|
+
Permission.EditNetworkDeviceRole,
|
|
298
|
+
],
|
|
299
|
+
})
|
|
300
|
+
@TableColumn({
|
|
301
|
+
required: false,
|
|
302
|
+
type: TableColumnType.LongText,
|
|
303
|
+
title: "Description",
|
|
304
|
+
description: "Friendly description that will help you remember",
|
|
305
|
+
example: "Moves traffic between networks.",
|
|
306
|
+
})
|
|
307
|
+
@Column({
|
|
308
|
+
nullable: true,
|
|
309
|
+
type: ColumnType.LongText,
|
|
310
|
+
length: ColumnLength.LongText,
|
|
311
|
+
})
|
|
312
|
+
public description?: string = undefined;
|
|
313
|
+
|
|
314
|
+
@ColumnAccessControl({
|
|
315
|
+
create: [
|
|
316
|
+
Permission.ProjectOwner,
|
|
317
|
+
Permission.ProjectAdmin,
|
|
318
|
+
Permission.ProjectMember,
|
|
319
|
+
Permission.SettingsAdmin,
|
|
320
|
+
Permission.SettingsMember,
|
|
321
|
+
Permission.CreateNetworkDeviceRole,
|
|
322
|
+
],
|
|
323
|
+
read: [
|
|
324
|
+
Permission.ProjectOwner,
|
|
325
|
+
Permission.ProjectAdmin,
|
|
326
|
+
Permission.ProjectMember,
|
|
327
|
+
Permission.Viewer,
|
|
328
|
+
Permission.SettingsAdmin,
|
|
329
|
+
Permission.SettingsMember,
|
|
330
|
+
Permission.SettingsViewer,
|
|
331
|
+
Permission.ReadNetworkDeviceRole,
|
|
332
|
+
],
|
|
333
|
+
update: [
|
|
334
|
+
Permission.ProjectOwner,
|
|
335
|
+
Permission.ProjectAdmin,
|
|
336
|
+
Permission.ProjectMember,
|
|
337
|
+
Permission.SettingsAdmin,
|
|
338
|
+
Permission.SettingsMember,
|
|
339
|
+
Permission.EditNetworkDeviceRole,
|
|
340
|
+
],
|
|
341
|
+
})
|
|
342
|
+
/*
|
|
343
|
+
* The silhouette devices of this role are drawn with on the topology map -
|
|
344
|
+
* one of the NetworkTopologyNodeShape values. Stored as text rather than an
|
|
345
|
+
* enum column because the renderer owns the geometry and adding a shape must
|
|
346
|
+
* not need a database migration.
|
|
347
|
+
*/
|
|
348
|
+
@TableColumn({
|
|
349
|
+
required: false,
|
|
350
|
+
type: TableColumnType.ShortText,
|
|
351
|
+
canReadOnRelationQuery: true,
|
|
352
|
+
title: "Topology Shape",
|
|
353
|
+
description:
|
|
354
|
+
"The shape devices of this role are drawn with on the network topology map.",
|
|
355
|
+
example: "rounded-square",
|
|
356
|
+
})
|
|
357
|
+
@Column({
|
|
358
|
+
nullable: true,
|
|
359
|
+
type: ColumnType.ShortText,
|
|
360
|
+
length: ColumnLength.ShortText,
|
|
361
|
+
})
|
|
362
|
+
public topologyShape?: string = undefined;
|
|
363
|
+
|
|
364
|
+
@ColumnAccessControl({
|
|
365
|
+
create: [
|
|
366
|
+
Permission.ProjectOwner,
|
|
367
|
+
Permission.ProjectAdmin,
|
|
368
|
+
Permission.ProjectMember,
|
|
369
|
+
Permission.SettingsAdmin,
|
|
370
|
+
Permission.SettingsMember,
|
|
371
|
+
Permission.CreateNetworkDeviceRole,
|
|
372
|
+
],
|
|
373
|
+
read: [
|
|
374
|
+
Permission.ProjectOwner,
|
|
375
|
+
Permission.ProjectAdmin,
|
|
376
|
+
Permission.ProjectMember,
|
|
377
|
+
Permission.Viewer,
|
|
378
|
+
Permission.SettingsAdmin,
|
|
379
|
+
Permission.SettingsMember,
|
|
380
|
+
Permission.SettingsViewer,
|
|
381
|
+
Permission.ReadNetworkDeviceRole,
|
|
382
|
+
],
|
|
383
|
+
update: [
|
|
384
|
+
Permission.ProjectOwner,
|
|
385
|
+
Permission.ProjectAdmin,
|
|
386
|
+
Permission.ProjectMember,
|
|
387
|
+
Permission.SettingsAdmin,
|
|
388
|
+
Permission.SettingsMember,
|
|
389
|
+
Permission.EditNetworkDeviceRole,
|
|
390
|
+
],
|
|
391
|
+
})
|
|
392
|
+
/*
|
|
393
|
+
* Load-bearing flag, not a label. Roles are renameable per project, so no
|
|
394
|
+
* layout may branch on the role's name - "is this device at the top of the
|
|
395
|
+
* network?" keys off this boolean instead.
|
|
396
|
+
*/
|
|
397
|
+
@TableColumn({
|
|
398
|
+
isDefaultValueColumn: true,
|
|
399
|
+
type: TableColumnType.Boolean,
|
|
400
|
+
canReadOnRelationQuery: true,
|
|
401
|
+
title: "Is Core Layer",
|
|
402
|
+
description:
|
|
403
|
+
"Devices of this role sit at the top of the network - the tiered and radial topology layouts band them above everything else.",
|
|
404
|
+
defaultValue: false,
|
|
405
|
+
})
|
|
406
|
+
@Column({
|
|
407
|
+
type: ColumnType.Boolean,
|
|
408
|
+
default: false,
|
|
409
|
+
})
|
|
410
|
+
public isCoreLayer?: boolean = undefined;
|
|
411
|
+
|
|
412
|
+
@ColumnAccessControl({
|
|
413
|
+
create: [
|
|
414
|
+
Permission.ProjectOwner,
|
|
415
|
+
Permission.ProjectAdmin,
|
|
416
|
+
Permission.ProjectMember,
|
|
417
|
+
Permission.SettingsAdmin,
|
|
418
|
+
Permission.SettingsMember,
|
|
419
|
+
Permission.CreateNetworkDeviceRole,
|
|
420
|
+
],
|
|
421
|
+
read: [
|
|
422
|
+
Permission.ProjectOwner,
|
|
423
|
+
Permission.ProjectAdmin,
|
|
424
|
+
Permission.ProjectMember,
|
|
425
|
+
Permission.Viewer,
|
|
426
|
+
Permission.SettingsAdmin,
|
|
427
|
+
Permission.SettingsMember,
|
|
428
|
+
Permission.SettingsViewer,
|
|
429
|
+
Permission.ReadNetworkDeviceRole,
|
|
430
|
+
],
|
|
431
|
+
update: [
|
|
432
|
+
Permission.ProjectOwner,
|
|
433
|
+
Permission.ProjectAdmin,
|
|
434
|
+
Permission.ProjectMember,
|
|
435
|
+
Permission.SettingsAdmin,
|
|
436
|
+
Permission.SettingsMember,
|
|
437
|
+
Permission.EditNetworkDeviceRole,
|
|
438
|
+
],
|
|
439
|
+
})
|
|
440
|
+
/*
|
|
441
|
+
* Whether a device of this role is worth walking with SNMP.
|
|
442
|
+
*
|
|
443
|
+
* A handset, a camera and a desk printer answer a ping and nothing else,
|
|
444
|
+
* so adopting one off the topology map as an SNMP device produces a device
|
|
445
|
+
* that is permanently unreachable. This flag is what the adopt-a-neighbour
|
|
446
|
+
* flow reads to open on monitor-based checks instead - and, being a column,
|
|
447
|
+
* it now says so for a project's OWN roles too.
|
|
448
|
+
*/
|
|
449
|
+
@TableColumn({
|
|
450
|
+
isDefaultValueColumn: true,
|
|
451
|
+
type: TableColumnType.Boolean,
|
|
452
|
+
canReadOnRelationQuery: true,
|
|
453
|
+
title: "Is SNMP Walkable",
|
|
454
|
+
description:
|
|
455
|
+
"Devices of this role usually speak SNMP. Turn it off for roles that only answer a ping - adopting one from the topology map then defaults to a monitor rather than SNMP polling.",
|
|
456
|
+
defaultValue: true,
|
|
457
|
+
})
|
|
458
|
+
@Column({
|
|
459
|
+
type: ColumnType.Boolean,
|
|
460
|
+
default: true,
|
|
461
|
+
})
|
|
462
|
+
public isSnmpWalkable?: boolean = undefined;
|
|
463
|
+
|
|
464
|
+
@ColumnAccessControl({
|
|
465
|
+
create: [
|
|
466
|
+
Permission.ProjectOwner,
|
|
467
|
+
Permission.ProjectAdmin,
|
|
468
|
+
Permission.ProjectMember,
|
|
469
|
+
Permission.SettingsAdmin,
|
|
470
|
+
Permission.SettingsMember,
|
|
471
|
+
Permission.CreateNetworkDeviceRole,
|
|
472
|
+
],
|
|
473
|
+
read: [
|
|
474
|
+
Permission.ProjectOwner,
|
|
475
|
+
Permission.ProjectAdmin,
|
|
476
|
+
Permission.ProjectMember,
|
|
477
|
+
Permission.Viewer,
|
|
478
|
+
Permission.SettingsAdmin,
|
|
479
|
+
Permission.SettingsMember,
|
|
480
|
+
Permission.SettingsViewer,
|
|
481
|
+
Permission.ReadNetworkDeviceRole,
|
|
482
|
+
],
|
|
483
|
+
update: [
|
|
484
|
+
Permission.ProjectOwner,
|
|
485
|
+
Permission.ProjectAdmin,
|
|
486
|
+
Permission.ProjectMember,
|
|
487
|
+
Permission.SettingsAdmin,
|
|
488
|
+
Permission.SettingsMember,
|
|
489
|
+
Permission.EditNetworkDeviceRole,
|
|
490
|
+
],
|
|
491
|
+
})
|
|
492
|
+
@TableColumn({
|
|
493
|
+
isDefaultValueColumn: false,
|
|
494
|
+
required: false,
|
|
495
|
+
type: TableColumnType.Number,
|
|
496
|
+
canReadOnRelationQuery: true,
|
|
497
|
+
title: "Order",
|
|
498
|
+
description:
|
|
499
|
+
"Where this role appears in the role picker and the topology map legend. Lower numbers come first.",
|
|
500
|
+
example: "1",
|
|
501
|
+
})
|
|
502
|
+
@Column({
|
|
503
|
+
type: ColumnType.Number,
|
|
504
|
+
nullable: true,
|
|
505
|
+
})
|
|
506
|
+
public order?: number = undefined;
|
|
507
|
+
|
|
508
|
+
@ColumnAccessControl({
|
|
509
|
+
create: [
|
|
510
|
+
Permission.ProjectOwner,
|
|
511
|
+
Permission.ProjectAdmin,
|
|
512
|
+
Permission.ProjectMember,
|
|
513
|
+
Permission.SettingsAdmin,
|
|
514
|
+
Permission.SettingsMember,
|
|
515
|
+
Permission.CreateNetworkDeviceRole,
|
|
516
|
+
],
|
|
517
|
+
read: [
|
|
518
|
+
Permission.ProjectOwner,
|
|
519
|
+
Permission.ProjectAdmin,
|
|
520
|
+
Permission.ProjectMember,
|
|
521
|
+
Permission.Viewer,
|
|
522
|
+
Permission.SettingsAdmin,
|
|
523
|
+
Permission.SettingsMember,
|
|
524
|
+
Permission.SettingsViewer,
|
|
525
|
+
Permission.ReadNetworkDeviceRole,
|
|
526
|
+
],
|
|
527
|
+
update: [],
|
|
528
|
+
})
|
|
529
|
+
@TableColumn({
|
|
530
|
+
manyToOneRelationColumn: "createdByUserId",
|
|
531
|
+
type: TableColumnType.Entity,
|
|
532
|
+
modelType: User,
|
|
533
|
+
title: "Created by User",
|
|
534
|
+
description:
|
|
535
|
+
"Relation to User who created this object (if this object was created by a User)",
|
|
536
|
+
})
|
|
537
|
+
@ManyToOne(
|
|
538
|
+
() => {
|
|
539
|
+
return User;
|
|
540
|
+
},
|
|
541
|
+
{
|
|
542
|
+
eager: false,
|
|
543
|
+
nullable: true,
|
|
544
|
+
onDelete: "SET NULL",
|
|
545
|
+
orphanedRowAction: "nullify",
|
|
546
|
+
},
|
|
547
|
+
)
|
|
548
|
+
@JoinColumn({ name: "createdByUserId" })
|
|
549
|
+
public createdByUser?: User = undefined;
|
|
550
|
+
|
|
551
|
+
@ColumnAccessControl({
|
|
552
|
+
create: [
|
|
553
|
+
Permission.ProjectOwner,
|
|
554
|
+
Permission.ProjectAdmin,
|
|
555
|
+
Permission.ProjectMember,
|
|
556
|
+
Permission.SettingsAdmin,
|
|
557
|
+
Permission.SettingsMember,
|
|
558
|
+
Permission.CreateNetworkDeviceRole,
|
|
559
|
+
],
|
|
560
|
+
read: [
|
|
561
|
+
Permission.ProjectOwner,
|
|
562
|
+
Permission.ProjectAdmin,
|
|
563
|
+
Permission.ProjectMember,
|
|
564
|
+
Permission.Viewer,
|
|
565
|
+
Permission.SettingsAdmin,
|
|
566
|
+
Permission.SettingsMember,
|
|
567
|
+
Permission.SettingsViewer,
|
|
568
|
+
Permission.ReadNetworkDeviceRole,
|
|
569
|
+
],
|
|
570
|
+
update: [],
|
|
571
|
+
})
|
|
572
|
+
@TableColumn({
|
|
573
|
+
type: TableColumnType.ObjectID,
|
|
574
|
+
title: "Created by User ID",
|
|
575
|
+
description:
|
|
576
|
+
"User ID who created this object (if this object was created by a User)",
|
|
577
|
+
})
|
|
578
|
+
@Column({
|
|
579
|
+
type: ColumnType.ObjectID,
|
|
580
|
+
nullable: true,
|
|
581
|
+
transformer: ObjectID.getDatabaseTransformer(),
|
|
582
|
+
})
|
|
583
|
+
public createdByUserId?: ObjectID = undefined;
|
|
584
|
+
|
|
585
|
+
@ColumnAccessControl({
|
|
586
|
+
create: [],
|
|
587
|
+
read: [
|
|
588
|
+
Permission.ProjectOwner,
|
|
589
|
+
Permission.ProjectAdmin,
|
|
590
|
+
Permission.ProjectMember,
|
|
591
|
+
Permission.Viewer,
|
|
592
|
+
Permission.SettingsAdmin,
|
|
593
|
+
Permission.SettingsMember,
|
|
594
|
+
Permission.SettingsViewer,
|
|
595
|
+
Permission.ReadNetworkDeviceRole,
|
|
596
|
+
],
|
|
597
|
+
update: [],
|
|
598
|
+
})
|
|
599
|
+
@TableColumn({
|
|
600
|
+
manyToOneRelationColumn: "deletedByUserId",
|
|
601
|
+
type: TableColumnType.Entity,
|
|
602
|
+
title: "Deleted by User",
|
|
603
|
+
modelType: User,
|
|
604
|
+
description:
|
|
605
|
+
"Relation to User who deleted this object (if this object was deleted by a User)",
|
|
606
|
+
})
|
|
607
|
+
@ManyToOne(
|
|
608
|
+
() => {
|
|
609
|
+
return User;
|
|
610
|
+
},
|
|
611
|
+
{
|
|
612
|
+
cascade: false,
|
|
613
|
+
eager: false,
|
|
614
|
+
nullable: true,
|
|
615
|
+
onDelete: "SET NULL",
|
|
616
|
+
orphanedRowAction: "nullify",
|
|
617
|
+
},
|
|
618
|
+
)
|
|
619
|
+
@JoinColumn({ name: "deletedByUserId" })
|
|
620
|
+
public deletedByUser?: User = undefined;
|
|
621
|
+
|
|
622
|
+
@ColumnAccessControl({
|
|
623
|
+
create: [],
|
|
624
|
+
read: [
|
|
625
|
+
Permission.ProjectOwner,
|
|
626
|
+
Permission.ProjectAdmin,
|
|
627
|
+
Permission.ProjectMember,
|
|
628
|
+
Permission.Viewer,
|
|
629
|
+
Permission.SettingsAdmin,
|
|
630
|
+
Permission.SettingsMember,
|
|
631
|
+
Permission.SettingsViewer,
|
|
632
|
+
Permission.ReadNetworkDeviceRole,
|
|
633
|
+
],
|
|
634
|
+
update: [],
|
|
635
|
+
})
|
|
636
|
+
@TableColumn({
|
|
637
|
+
type: TableColumnType.ObjectID,
|
|
638
|
+
title: "Deleted by User ID",
|
|
639
|
+
description:
|
|
640
|
+
"User ID who deleted this object (if this object was deleted by a User)",
|
|
641
|
+
})
|
|
642
|
+
@Column({
|
|
643
|
+
type: ColumnType.ObjectID,
|
|
644
|
+
nullable: true,
|
|
645
|
+
transformer: ObjectID.getDatabaseTransformer(),
|
|
646
|
+
})
|
|
647
|
+
public deletedByUserId?: ObjectID = undefined;
|
|
648
|
+
}
|
|
@@ -94,7 +94,7 @@ import NotificationRuleWorkspaceChannel from "../../Types/Workspace/Notification
|
|
|
94
94
|
],
|
|
95
95
|
})
|
|
96
96
|
@CrudApiEndpoint(new Route("/scheduled-maintenance"))
|
|
97
|
-
@SlugifyColumn("
|
|
97
|
+
@SlugifyColumn("title", "slug")
|
|
98
98
|
@Entity({
|
|
99
99
|
name: "ScheduledMaintenance",
|
|
100
100
|
})
|
|
@@ -90,7 +90,7 @@ import { PlanType } from "../../Types/Billing/SubscriptionPlan";
|
|
|
90
90
|
],
|
|
91
91
|
})
|
|
92
92
|
@CrudApiEndpoint(new Route("/scheduled-maintenance-template"))
|
|
93
|
-
@SlugifyColumn("
|
|
93
|
+
@SlugifyColumn("templateName", "slug")
|
|
94
94
|
@Entity({
|
|
95
95
|
name: "ScheduledMaintenanceTemplate",
|
|
96
96
|
})
|
|
@@ -16,7 +16,6 @@ import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
|
|
|
16
16
|
import EnableDocumentation from "../../Types/Database/EnableDocumentation";
|
|
17
17
|
import EnableMCP from "../../Types/Database/EnableMCP";
|
|
18
18
|
import EnableWorkflow from "../../Types/Database/EnableWorkflow";
|
|
19
|
-
import SlugifyColumn from "../../Types/Database/SlugifyColumn";
|
|
20
19
|
import TableColumn from "../../Types/Database/TableColumn";
|
|
21
20
|
import TableColumnType from "../../Types/Database/TableColumnType";
|
|
22
21
|
import TableMetadata from "../../Types/Database/TableMetadata";
|
|
@@ -88,7 +87,6 @@ import {
|
|
|
88
87
|
read: true,
|
|
89
88
|
})
|
|
90
89
|
@CrudApiEndpoint(new Route("/status-page-announcement"))
|
|
91
|
-
@SlugifyColumn("name", "slug")
|
|
92
90
|
@TableMetadata({
|
|
93
91
|
tableName: "StatusPageAnnouncement",
|
|
94
92
|
singularName: "Status Page Announcement",
|
|
@@ -14,7 +14,6 @@ import ColumnType from "../../Types/Database/ColumnType";
|
|
|
14
14
|
import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
|
|
15
15
|
import EnableDocumentation from "../../Types/Database/EnableDocumentation";
|
|
16
16
|
import EnableWorkflow from "../../Types/Database/EnableWorkflow";
|
|
17
|
-
import SlugifyColumn from "../../Types/Database/SlugifyColumn";
|
|
18
17
|
import TableColumn from "../../Types/Database/TableColumn";
|
|
19
18
|
import TableColumnType from "../../Types/Database/TableColumnType";
|
|
20
19
|
import TableMetadata from "../../Types/Database/TableMetadata";
|
|
@@ -84,7 +83,6 @@ import {
|
|
|
84
83
|
read: true,
|
|
85
84
|
})
|
|
86
85
|
@CrudApiEndpoint(new Route("/status-page-announcement-template"))
|
|
87
|
-
@SlugifyColumn("templateName", "slug")
|
|
88
86
|
@TableMetadata({
|
|
89
87
|
tableName: "StatusPageAnnouncementTemplate",
|
|
90
88
|
singularName: "Status Page Announcement Template",
|