@oneuptime/common 7.0.3621 → 7.0.3655
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/Alert.ts +48 -0
- package/Models/DatabaseModels/Incident.ts +19 -0
- package/Models/DatabaseModels/Index.ts +10 -0
- package/Models/DatabaseModels/ScheduledMaintenance.ts +48 -0
- package/Models/DatabaseModels/WorkspaceNotificationRule.ts +461 -0
- package/Models/DatabaseModels/WorkspaceProjectAuthToken.ts +379 -0
- package/Models/DatabaseModels/WorkspaceSetting.ts +230 -0
- package/Models/DatabaseModels/WorkspaceUserAuthToken.ts +312 -0
- package/Server/API/SlackAPI.ts +368 -0
- package/Server/EnvironmentConfig.ts +10 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1739209832500-MigrationName.ts +147 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1739210586538-MigrationName.ts +19 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1739217257089-MigrationName.ts +23 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1739282331053-MigrationName.ts +29 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +8 -0
- package/Server/Middleware/SlackAuthorization.ts +60 -0
- package/Server/Services/AlertService.ts +38 -2
- package/Server/Services/Index.ts +9 -0
- package/Server/Services/ProjectService.ts +6 -4
- package/Server/Services/ScheduledMaintenanceService.ts +39 -2
- package/Server/Services/TeamMemberService.ts +1 -0
- package/Server/Services/UserService.ts +7 -2
- package/Server/Services/WorkspaceCommunicationTools/Slack.ts +0 -0
- package/Server/Services/WorkspaceCommunicationTools/Teams.ts +0 -0
- package/Server/Services/WorkspaceCommunicationTools/WorkspaceCommunicationBaseService.ts +0 -0
- package/Server/Services/WorkspaceNotificationRuleService.ts +31 -0
- package/Server/Services/WorkspaceProjectAuthTokenService.ts +84 -0
- package/Server/Services/WorkspaceSettingService.ts +78 -0
- package/Server/Services/WorkspaceUserAuthTokenService.ts +89 -0
- package/Server/Types/Workflow/Components/Slack/SendMessageToChannel.ts +2 -2
- package/Server/Utils/Express.ts +2 -1
- package/Server/Utils/Monitor/MonitorResource.ts +2 -5
- package/Server/Utils/Slack/Slack.ts +271 -0
- package/Server/Utils/Slack/app-manifest-temp.json +198 -0
- package/Server/Utils/Slack/app-manifest.json +67 -0
- package/Server/Utils/StartServer.ts +2 -1
- package/Types/Filter/FilterCondition.ts +2 -2
- package/Types/Monitor/CriteriaFilter.ts +31 -5
- package/Types/Monitor/MonitorCriteriaInstance.ts +40 -10
- package/Types/Monitor/MonitorStep.ts +1 -1
- package/Types/Permission.ts +34 -0
- package/Types/Workspace/NotificationRules/BaseNotificationRule.ts +3 -0
- package/Types/Workspace/NotificationRules/EventType.ts +8 -0
- package/Types/Workspace/NotificationRules/NotificationRuleCondition.ts +355 -0
- package/Types/Workspace/NotificationRules/SlackNotificationRule.ts +19 -0
- package/Types/Workspace/WorkspaceNotificationPayload.ts +29 -0
- package/Types/Workspace/WorkspaceType.ts +6 -0
- package/UI/Components/Forms/BasicForm.tsx +9 -0
- package/UI/Components/Forms/Fields/FormField.tsx +36 -1
- package/UI/Components/Forms/Types/Field.ts +2 -0
- package/UI/Components/Forms/Types/FormFieldSchemaType.ts +1 -1
- package/UI/Components/Forms/Utils/FormFieldSchemaTypeUtil.ts +2 -2
- package/UI/Components/Icon/Icon.tsx +18 -5
- package/UI/Components/Radio/Radio.tsx +12 -10
- package/UI/Config.ts +3 -0
- package/build/dist/Models/DatabaseModels/Alert.js +52 -0
- package/build/dist/Models/DatabaseModels/Alert.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Incident.js +21 -0
- package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +8 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +52 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
- package/build/dist/Models/DatabaseModels/WorkspaceNotificationRule.js +481 -0
- package/build/dist/Models/DatabaseModels/WorkspaceNotificationRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/WorkspaceProjectAuthToken.js +390 -0
- package/build/dist/Models/DatabaseModels/WorkspaceProjectAuthToken.js.map +1 -0
- package/build/dist/Models/DatabaseModels/WorkspaceSetting.js +236 -0
- package/build/dist/Models/DatabaseModels/WorkspaceSetting.js.map +1 -0
- package/build/dist/Models/DatabaseModels/WorkspaceUserAuthToken.js +326 -0
- package/build/dist/Models/DatabaseModels/WorkspaceUserAuthToken.js.map +1 -0
- package/build/dist/Server/API/SlackAPI.js +237 -0
- package/build/dist/Server/API/SlackAPI.js.map +1 -0
- package/build/dist/Server/EnvironmentConfig.js +5 -1
- package/build/dist/Server/EnvironmentConfig.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1739209832500-MigrationName.js +58 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1739209832500-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1739210586538-MigrationName.js +14 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1739210586538-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1739217257089-MigrationName.js +14 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1739217257089-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1739282331053-MigrationName.js +16 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1739282331053-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +8 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Middleware/SlackAuthorization.js +28 -0
- package/build/dist/Server/Middleware/SlackAuthorization.js.map +1 -0
- package/build/dist/Server/Services/AlertService.js +31 -5
- package/build/dist/Server/Services/AlertService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +8 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/ProjectService.js +5 -4
- package/build/dist/Server/Services/ProjectService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceService.js +30 -3
- package/build/dist/Server/Services/ScheduledMaintenanceService.js.map +1 -1
- package/build/dist/Server/Services/TeamMemberService.js +1 -0
- package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
- package/build/dist/Server/Services/UserService.js +5 -2
- package/build/dist/Server/Services/UserService.js.map +1 -1
- package/build/dist/Server/Services/WorkspaceCommunicationTools/Slack.js +2 -0
- package/build/dist/Server/Services/WorkspaceCommunicationTools/Slack.js.map +1 -0
- package/build/dist/Server/Services/WorkspaceCommunicationTools/Teams.js +2 -0
- package/build/dist/Server/Services/WorkspaceCommunicationTools/Teams.js.map +1 -0
- package/build/dist/Server/Services/WorkspaceCommunicationTools/WorkspaceCommunicationBaseService.js +2 -0
- package/build/dist/Server/Services/WorkspaceCommunicationTools/WorkspaceCommunicationBaseService.js.map +1 -0
- package/build/dist/Server/Services/WorkspaceNotificationRuleService.js +22 -0
- package/build/dist/Server/Services/WorkspaceNotificationRuleService.js.map +1 -0
- package/build/dist/Server/Services/WorkspaceProjectAuthTokenService.js +63 -0
- package/build/dist/Server/Services/WorkspaceProjectAuthTokenService.js.map +1 -0
- package/build/dist/Server/Services/WorkspaceSettingService.js +59 -0
- package/build/dist/Server/Services/WorkspaceSettingService.js.map +1 -0
- package/build/dist/Server/Services/WorkspaceUserAuthTokenService.js +66 -0
- package/build/dist/Server/Services/WorkspaceUserAuthTokenService.js.map +1 -0
- package/build/dist/Server/Types/Workflow/Components/Slack/SendMessageToChannel.js +2 -2
- package/build/dist/Server/Types/Workflow/Components/Slack/SendMessageToChannel.js.map +1 -1
- package/build/dist/Server/Utils/Express.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorResource.js +2 -1
- package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
- package/build/dist/Server/Utils/Slack/Slack.js +172 -0
- package/build/dist/Server/Utils/Slack/Slack.js.map +1 -0
- package/build/dist/Server/Utils/Slack/app-manifest.json +67 -0
- package/build/dist/Server/Utils/StartServer.js.map +1 -1
- package/build/dist/Types/Filter/FilterCondition.js +2 -2
- package/build/dist/Types/Filter/FilterCondition.js.map +1 -1
- package/build/dist/Types/Monitor/CriteriaFilter.js +19 -5
- package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +33 -10
- package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStep.js +1 -1
- package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
- package/build/dist/Types/Permission.js +32 -0
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/Workspace/NotificationRules/BaseNotificationRule.js +2 -0
- package/build/dist/Types/Workspace/NotificationRules/BaseNotificationRule.js.map +1 -0
- package/build/dist/Types/Workspace/NotificationRules/EventType.js +9 -0
- package/build/dist/Types/Workspace/NotificationRules/EventType.js.map +1 -0
- package/build/dist/Types/Workspace/NotificationRules/NotificationRuleCondition.js +275 -0
- package/build/dist/Types/Workspace/NotificationRules/NotificationRuleCondition.js.map +1 -0
- package/build/dist/Types/Workspace/NotificationRules/SlackNotificationRule.js +2 -0
- package/build/dist/Types/Workspace/NotificationRules/SlackNotificationRule.js.map +1 -0
- package/build/dist/Types/Workspace/WorkspaceNotificationPayload.js +2 -0
- package/build/dist/Types/Workspace/WorkspaceNotificationPayload.js.map +1 -0
- package/build/dist/Types/Workspace/WorkspaceType.js +7 -0
- package/build/dist/Types/Workspace/WorkspaceType.js.map +1 -0
- package/build/dist/UI/Components/Forms/BasicForm.js +7 -0
- package/build/dist/UI/Components/Forms/BasicForm.js.map +1 -1
- package/build/dist/UI/Components/Forms/Fields/FormField.js +21 -4
- package/build/dist/UI/Components/Forms/Fields/FormField.js.map +1 -1
- package/build/dist/UI/Components/Forms/Types/FormFieldSchemaType.js +1 -1
- package/build/dist/UI/Components/Forms/Types/FormFieldSchemaType.js.map +1 -1
- package/build/dist/UI/Components/Forms/Utils/FormFieldSchemaTypeUtil.js +2 -2
- package/build/dist/UI/Components/Forms/Utils/FormFieldSchemaTypeUtil.js.map +1 -1
- package/build/dist/UI/Components/Icon/Icon.js +5 -1
- package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
- package/build/dist/UI/Components/Radio/Radio.js +4 -4
- package/build/dist/UI/Components/Radio/Radio.js.map +1 -1
- package/build/dist/UI/Config.js +1 -0
- package/build/dist/UI/Config.js.map +1 -1
- package/package.json +2 -2
- package/Server/Utils/Slack.ts +0 -29
- package/build/dist/Server/Utils/Slack.js +0 -20
- package/build/dist/Server/Utils/Slack.js.map +0 -1
|
@@ -0,0 +1,379 @@
|
|
|
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 AllowAccessIfSubscriptionIsUnpaid from "../../Types/Database/AccessControl/AllowAccessIfSubscriptionIsUnpaid";
|
|
6
|
+
import ColumnAccessControl from "../../Types/Database/AccessControl/ColumnAccessControl";
|
|
7
|
+
import TableAccessControl from "../../Types/Database/AccessControl/TableAccessControl";
|
|
8
|
+
import ColumnLength from "../../Types/Database/ColumnLength";
|
|
9
|
+
import ColumnType from "../../Types/Database/ColumnType";
|
|
10
|
+
import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
|
|
11
|
+
import TableColumn from "../../Types/Database/TableColumn";
|
|
12
|
+
import TableColumnType from "../../Types/Database/TableColumnType";
|
|
13
|
+
import TableMetadata from "../../Types/Database/TableMetadata";
|
|
14
|
+
import TenantColumn from "../../Types/Database/TenantColumn";
|
|
15
|
+
import IconProp from "../../Types/Icon/IconProp";
|
|
16
|
+
import ObjectID from "../../Types/ObjectID";
|
|
17
|
+
import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
|
|
18
|
+
import WorkspaceType from "../../Types/Workspace/WorkspaceType";
|
|
19
|
+
import Permission from "../../Types/Permission";
|
|
20
|
+
|
|
21
|
+
export interface MiscData {
|
|
22
|
+
[key: string]: string;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface SlackMiscData extends MiscData {
|
|
26
|
+
teamId: string;
|
|
27
|
+
teamName: string;
|
|
28
|
+
botUserId: string;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
@TenantColumn("projectId")
|
|
32
|
+
@AllowAccessIfSubscriptionIsUnpaid()
|
|
33
|
+
@TableAccessControl({
|
|
34
|
+
create: [
|
|
35
|
+
Permission.ProjectOwner,
|
|
36
|
+
Permission.ProjectAdmin,
|
|
37
|
+
Permission.ProjectMember,
|
|
38
|
+
],
|
|
39
|
+
read: [
|
|
40
|
+
Permission.ProjectOwner,
|
|
41
|
+
Permission.ProjectAdmin,
|
|
42
|
+
Permission.ProjectMember,
|
|
43
|
+
],
|
|
44
|
+
delete: [Permission.ProjectOwner, Permission.ProjectAdmin],
|
|
45
|
+
update: [
|
|
46
|
+
Permission.ProjectOwner,
|
|
47
|
+
Permission.ProjectAdmin,
|
|
48
|
+
Permission.ProjectMember,
|
|
49
|
+
],
|
|
50
|
+
})
|
|
51
|
+
@CrudApiEndpoint(new Route("/workspace-project-auth-token"))
|
|
52
|
+
@Entity({
|
|
53
|
+
name: "WorkspaceProjectAuthToken",
|
|
54
|
+
})
|
|
55
|
+
@TableMetadata({
|
|
56
|
+
tableName: "WorkspaceProjectAuthToken",
|
|
57
|
+
singularName: "Workspace Project Auth Token",
|
|
58
|
+
pluralName: "Workspace Project Auth Tokens",
|
|
59
|
+
icon: IconProp.Lock,
|
|
60
|
+
tableDescription: "Third Party Auth Token for the Project",
|
|
61
|
+
})
|
|
62
|
+
class WorkspaceProjectAuthToken extends BaseModel {
|
|
63
|
+
@ColumnAccessControl({
|
|
64
|
+
create: [
|
|
65
|
+
Permission.ProjectOwner,
|
|
66
|
+
Permission.ProjectAdmin,
|
|
67
|
+
Permission.ProjectMember,
|
|
68
|
+
],
|
|
69
|
+
read: [
|
|
70
|
+
Permission.ProjectOwner,
|
|
71
|
+
Permission.ProjectAdmin,
|
|
72
|
+
Permission.ProjectMember,
|
|
73
|
+
],
|
|
74
|
+
update: [],
|
|
75
|
+
})
|
|
76
|
+
@TableColumn({
|
|
77
|
+
manyToOneRelationColumn: "projectId",
|
|
78
|
+
type: TableColumnType.Entity,
|
|
79
|
+
modelType: Project,
|
|
80
|
+
title: "Project",
|
|
81
|
+
description: "Relation to Project Resource in which this object belongs",
|
|
82
|
+
})
|
|
83
|
+
@ManyToOne(
|
|
84
|
+
() => {
|
|
85
|
+
return Project;
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
eager: false,
|
|
89
|
+
nullable: true,
|
|
90
|
+
onDelete: "CASCADE",
|
|
91
|
+
orphanedRowAction: "nullify",
|
|
92
|
+
},
|
|
93
|
+
)
|
|
94
|
+
@JoinColumn({ name: "projectId" })
|
|
95
|
+
public project?: Project = undefined;
|
|
96
|
+
|
|
97
|
+
@ColumnAccessControl({
|
|
98
|
+
create: [
|
|
99
|
+
Permission.ProjectOwner,
|
|
100
|
+
Permission.ProjectAdmin,
|
|
101
|
+
Permission.ProjectMember,
|
|
102
|
+
],
|
|
103
|
+
read: [
|
|
104
|
+
Permission.ProjectOwner,
|
|
105
|
+
Permission.ProjectAdmin,
|
|
106
|
+
Permission.ProjectMember,
|
|
107
|
+
],
|
|
108
|
+
update: [],
|
|
109
|
+
})
|
|
110
|
+
@Index()
|
|
111
|
+
@TableColumn({
|
|
112
|
+
type: TableColumnType.ObjectID,
|
|
113
|
+
required: true,
|
|
114
|
+
canReadOnRelationQuery: true,
|
|
115
|
+
title: "Project ID",
|
|
116
|
+
description: "ID of your OneUptime Project in which this object belongs",
|
|
117
|
+
})
|
|
118
|
+
@Column({
|
|
119
|
+
type: ColumnType.ObjectID,
|
|
120
|
+
nullable: false,
|
|
121
|
+
transformer: ObjectID.getDatabaseTransformer(),
|
|
122
|
+
})
|
|
123
|
+
public projectId?: ObjectID = undefined;
|
|
124
|
+
|
|
125
|
+
@ColumnAccessControl({
|
|
126
|
+
create: [
|
|
127
|
+
Permission.ProjectOwner,
|
|
128
|
+
Permission.ProjectAdmin,
|
|
129
|
+
Permission.ProjectMember,
|
|
130
|
+
],
|
|
131
|
+
read: [],
|
|
132
|
+
update: [],
|
|
133
|
+
})
|
|
134
|
+
@TableColumn({
|
|
135
|
+
title: "Auth Token",
|
|
136
|
+
required: true,
|
|
137
|
+
unique: false,
|
|
138
|
+
type: TableColumnType.VeryLongText,
|
|
139
|
+
canReadOnRelationQuery: true,
|
|
140
|
+
})
|
|
141
|
+
@Column({
|
|
142
|
+
type: ColumnType.VeryLongText,
|
|
143
|
+
unique: false,
|
|
144
|
+
nullable: false,
|
|
145
|
+
})
|
|
146
|
+
public authToken?: string = undefined;
|
|
147
|
+
|
|
148
|
+
@ColumnAccessControl({
|
|
149
|
+
create: [
|
|
150
|
+
Permission.ProjectOwner,
|
|
151
|
+
Permission.ProjectAdmin,
|
|
152
|
+
Permission.ProjectMember,
|
|
153
|
+
],
|
|
154
|
+
read: [
|
|
155
|
+
Permission.ProjectOwner,
|
|
156
|
+
Permission.ProjectAdmin,
|
|
157
|
+
Permission.ProjectMember,
|
|
158
|
+
],
|
|
159
|
+
update: [],
|
|
160
|
+
})
|
|
161
|
+
@TableColumn({
|
|
162
|
+
title: "Workspace Type",
|
|
163
|
+
description: "Type of Workspace - slack, microsoft teams etc.",
|
|
164
|
+
required: true,
|
|
165
|
+
unique: false,
|
|
166
|
+
type: TableColumnType.LongText,
|
|
167
|
+
canReadOnRelationQuery: true,
|
|
168
|
+
})
|
|
169
|
+
@Column({
|
|
170
|
+
type: ColumnType.LongText,
|
|
171
|
+
length: ColumnLength.LongText,
|
|
172
|
+
unique: false,
|
|
173
|
+
nullable: false,
|
|
174
|
+
})
|
|
175
|
+
public workspaceType?: WorkspaceType = undefined;
|
|
176
|
+
|
|
177
|
+
@ColumnAccessControl({
|
|
178
|
+
create: [
|
|
179
|
+
Permission.ProjectOwner,
|
|
180
|
+
Permission.ProjectAdmin,
|
|
181
|
+
Permission.ProjectMember,
|
|
182
|
+
],
|
|
183
|
+
read: [
|
|
184
|
+
Permission.ProjectOwner,
|
|
185
|
+
Permission.ProjectAdmin,
|
|
186
|
+
Permission.ProjectMember,
|
|
187
|
+
],
|
|
188
|
+
update: [
|
|
189
|
+
Permission.ProjectOwner,
|
|
190
|
+
Permission.ProjectAdmin,
|
|
191
|
+
Permission.ProjectMember,
|
|
192
|
+
],
|
|
193
|
+
})
|
|
194
|
+
@TableColumn({
|
|
195
|
+
title: "Project ID in Workspace",
|
|
196
|
+
required: true,
|
|
197
|
+
unique: false,
|
|
198
|
+
type: TableColumnType.LongText,
|
|
199
|
+
canReadOnRelationQuery: true,
|
|
200
|
+
})
|
|
201
|
+
@Column({
|
|
202
|
+
type: ColumnType.LongText,
|
|
203
|
+
length: ColumnLength.LongText,
|
|
204
|
+
unique: false,
|
|
205
|
+
nullable: false,
|
|
206
|
+
})
|
|
207
|
+
public workspaceProjectId?: string = undefined;
|
|
208
|
+
|
|
209
|
+
@ColumnAccessControl({
|
|
210
|
+
create: [
|
|
211
|
+
Permission.ProjectOwner,
|
|
212
|
+
Permission.ProjectAdmin,
|
|
213
|
+
Permission.ProjectMember,
|
|
214
|
+
],
|
|
215
|
+
read: [
|
|
216
|
+
Permission.ProjectOwner,
|
|
217
|
+
Permission.ProjectAdmin,
|
|
218
|
+
Permission.ProjectMember,
|
|
219
|
+
],
|
|
220
|
+
update: [
|
|
221
|
+
Permission.ProjectOwner,
|
|
222
|
+
Permission.ProjectAdmin,
|
|
223
|
+
Permission.ProjectMember,
|
|
224
|
+
],
|
|
225
|
+
})
|
|
226
|
+
@TableColumn({
|
|
227
|
+
title: "Misc Data",
|
|
228
|
+
required: true,
|
|
229
|
+
unique: false,
|
|
230
|
+
type: TableColumnType.JSON,
|
|
231
|
+
canReadOnRelationQuery: true,
|
|
232
|
+
})
|
|
233
|
+
@Column({
|
|
234
|
+
type: ColumnType.JSON,
|
|
235
|
+
unique: false,
|
|
236
|
+
nullable: false,
|
|
237
|
+
})
|
|
238
|
+
public miscData?: MiscData = undefined;
|
|
239
|
+
|
|
240
|
+
@ColumnAccessControl({
|
|
241
|
+
create: [
|
|
242
|
+
Permission.ProjectOwner,
|
|
243
|
+
Permission.ProjectAdmin,
|
|
244
|
+
Permission.ProjectMember,
|
|
245
|
+
],
|
|
246
|
+
read: [
|
|
247
|
+
Permission.ProjectOwner,
|
|
248
|
+
Permission.ProjectAdmin,
|
|
249
|
+
Permission.ProjectMember,
|
|
250
|
+
],
|
|
251
|
+
update: [
|
|
252
|
+
Permission.ProjectOwner,
|
|
253
|
+
Permission.ProjectAdmin,
|
|
254
|
+
Permission.ProjectMember,
|
|
255
|
+
],
|
|
256
|
+
})
|
|
257
|
+
@TableColumn({
|
|
258
|
+
manyToOneRelationColumn: "createdByUserId",
|
|
259
|
+
type: TableColumnType.Entity,
|
|
260
|
+
modelType: User,
|
|
261
|
+
title: "Created by User",
|
|
262
|
+
description:
|
|
263
|
+
"Relation to User who created this object (if this object was created by a User)",
|
|
264
|
+
})
|
|
265
|
+
@ManyToOne(
|
|
266
|
+
() => {
|
|
267
|
+
return User;
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
eager: false,
|
|
271
|
+
nullable: true,
|
|
272
|
+
onDelete: "SET NULL",
|
|
273
|
+
orphanedRowAction: "nullify",
|
|
274
|
+
},
|
|
275
|
+
)
|
|
276
|
+
@JoinColumn({ name: "createdByUserId" })
|
|
277
|
+
public createdByUser?: User = undefined;
|
|
278
|
+
|
|
279
|
+
@ColumnAccessControl({
|
|
280
|
+
create: [
|
|
281
|
+
Permission.ProjectOwner,
|
|
282
|
+
Permission.ProjectAdmin,
|
|
283
|
+
Permission.ProjectMember,
|
|
284
|
+
],
|
|
285
|
+
read: [
|
|
286
|
+
Permission.ProjectOwner,
|
|
287
|
+
Permission.ProjectAdmin,
|
|
288
|
+
Permission.ProjectMember,
|
|
289
|
+
],
|
|
290
|
+
update: [
|
|
291
|
+
Permission.ProjectOwner,
|
|
292
|
+
Permission.ProjectAdmin,
|
|
293
|
+
Permission.ProjectMember,
|
|
294
|
+
],
|
|
295
|
+
})
|
|
296
|
+
@TableColumn({
|
|
297
|
+
type: TableColumnType.ObjectID,
|
|
298
|
+
title: "Created by User ID",
|
|
299
|
+
description:
|
|
300
|
+
"User ID who created this object (if this object was created by a User)",
|
|
301
|
+
})
|
|
302
|
+
@Column({
|
|
303
|
+
type: ColumnType.ObjectID,
|
|
304
|
+
nullable: true,
|
|
305
|
+
transformer: ObjectID.getDatabaseTransformer(),
|
|
306
|
+
})
|
|
307
|
+
public createdByUserId?: ObjectID = undefined;
|
|
308
|
+
|
|
309
|
+
@ColumnAccessControl({
|
|
310
|
+
create: [
|
|
311
|
+
Permission.ProjectOwner,
|
|
312
|
+
Permission.ProjectAdmin,
|
|
313
|
+
Permission.ProjectMember,
|
|
314
|
+
],
|
|
315
|
+
read: [
|
|
316
|
+
Permission.ProjectOwner,
|
|
317
|
+
Permission.ProjectAdmin,
|
|
318
|
+
Permission.ProjectMember,
|
|
319
|
+
],
|
|
320
|
+
update: [
|
|
321
|
+
Permission.ProjectOwner,
|
|
322
|
+
Permission.ProjectAdmin,
|
|
323
|
+
Permission.ProjectMember,
|
|
324
|
+
],
|
|
325
|
+
})
|
|
326
|
+
@TableColumn({
|
|
327
|
+
manyToOneRelationColumn: "deletedByUserId",
|
|
328
|
+
type: TableColumnType.Entity,
|
|
329
|
+
title: "Deleted by User",
|
|
330
|
+
description:
|
|
331
|
+
"Relation to User who deleted this object (if this object was deleted by a User)",
|
|
332
|
+
})
|
|
333
|
+
@ManyToOne(
|
|
334
|
+
() => {
|
|
335
|
+
return User;
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
cascade: false,
|
|
339
|
+
eager: false,
|
|
340
|
+
nullable: true,
|
|
341
|
+
onDelete: "SET NULL",
|
|
342
|
+
orphanedRowAction: "nullify",
|
|
343
|
+
},
|
|
344
|
+
)
|
|
345
|
+
@JoinColumn({ name: "deletedByUserId" })
|
|
346
|
+
public deletedByUser?: User = undefined;
|
|
347
|
+
|
|
348
|
+
@ColumnAccessControl({
|
|
349
|
+
create: [
|
|
350
|
+
Permission.ProjectOwner,
|
|
351
|
+
Permission.ProjectAdmin,
|
|
352
|
+
Permission.ProjectMember,
|
|
353
|
+
],
|
|
354
|
+
read: [
|
|
355
|
+
Permission.ProjectOwner,
|
|
356
|
+
Permission.ProjectAdmin,
|
|
357
|
+
Permission.ProjectMember,
|
|
358
|
+
],
|
|
359
|
+
update: [
|
|
360
|
+
Permission.ProjectOwner,
|
|
361
|
+
Permission.ProjectAdmin,
|
|
362
|
+
Permission.ProjectMember,
|
|
363
|
+
],
|
|
364
|
+
})
|
|
365
|
+
@TableColumn({
|
|
366
|
+
type: TableColumnType.ObjectID,
|
|
367
|
+
title: "Deleted by User ID",
|
|
368
|
+
description:
|
|
369
|
+
"User ID who deleted this object (if this object was deleted by a User)",
|
|
370
|
+
})
|
|
371
|
+
@Column({
|
|
372
|
+
type: ColumnType.ObjectID,
|
|
373
|
+
nullable: true,
|
|
374
|
+
transformer: ObjectID.getDatabaseTransformer(),
|
|
375
|
+
})
|
|
376
|
+
public deletedByUserId?: ObjectID = undefined;
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
export default WorkspaceProjectAuthToken;
|
|
@@ -0,0 +1,230 @@
|
|
|
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 AllowAccessIfSubscriptionIsUnpaid from "../../Types/Database/AccessControl/AllowAccessIfSubscriptionIsUnpaid";
|
|
6
|
+
import ColumnAccessControl from "../../Types/Database/AccessControl/ColumnAccessControl";
|
|
7
|
+
import TableAccessControl from "../../Types/Database/AccessControl/TableAccessControl";
|
|
8
|
+
import ColumnLength from "../../Types/Database/ColumnLength";
|
|
9
|
+
import ColumnType from "../../Types/Database/ColumnType";
|
|
10
|
+
import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
|
|
11
|
+
import TableColumn from "../../Types/Database/TableColumn";
|
|
12
|
+
import TableColumnType from "../../Types/Database/TableColumnType";
|
|
13
|
+
import TableMetadata from "../../Types/Database/TableMetadata";
|
|
14
|
+
import TenantColumn from "../../Types/Database/TenantColumn";
|
|
15
|
+
import IconProp from "../../Types/Icon/IconProp";
|
|
16
|
+
import ObjectID from "../../Types/ObjectID";
|
|
17
|
+
import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
|
|
18
|
+
import WorkspaceType from "../../Types/Workspace/WorkspaceType";
|
|
19
|
+
|
|
20
|
+
export interface Settings {
|
|
21
|
+
[key: string]: string;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export interface SlackSettings extends Settings {
|
|
25
|
+
teamId: string;
|
|
26
|
+
teamName: string;
|
|
27
|
+
botUserId: string;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
@TenantColumn("projectId")
|
|
31
|
+
@AllowAccessIfSubscriptionIsUnpaid()
|
|
32
|
+
@TableAccessControl({
|
|
33
|
+
create: [],
|
|
34
|
+
read: [],
|
|
35
|
+
delete: [],
|
|
36
|
+
update: [],
|
|
37
|
+
})
|
|
38
|
+
@CrudApiEndpoint(new Route("/workspace-setting"))
|
|
39
|
+
@Entity({
|
|
40
|
+
name: "WorkspaceSetting",
|
|
41
|
+
})
|
|
42
|
+
@TableMetadata({
|
|
43
|
+
tableName: "WorkspaceSetting",
|
|
44
|
+
singularName: "Workspace Setting",
|
|
45
|
+
pluralName: "Workspace Settings",
|
|
46
|
+
icon: IconProp.Settings,
|
|
47
|
+
tableDescription: "Settings for Third Party Workspaces",
|
|
48
|
+
})
|
|
49
|
+
class WorkspaceSetting extends BaseModel {
|
|
50
|
+
@ColumnAccessControl({
|
|
51
|
+
create: [],
|
|
52
|
+
read: [],
|
|
53
|
+
update: [],
|
|
54
|
+
})
|
|
55
|
+
@TableColumn({
|
|
56
|
+
manyToOneRelationColumn: "projectId",
|
|
57
|
+
type: TableColumnType.Entity,
|
|
58
|
+
modelType: Project,
|
|
59
|
+
title: "Project",
|
|
60
|
+
description: "Relation to Project Resource in which this object belongs",
|
|
61
|
+
})
|
|
62
|
+
@ManyToOne(
|
|
63
|
+
() => {
|
|
64
|
+
return Project;
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
eager: false,
|
|
68
|
+
nullable: true,
|
|
69
|
+
onDelete: "CASCADE",
|
|
70
|
+
orphanedRowAction: "nullify",
|
|
71
|
+
},
|
|
72
|
+
)
|
|
73
|
+
@JoinColumn({ name: "projectId" })
|
|
74
|
+
public project?: Project = undefined;
|
|
75
|
+
|
|
76
|
+
@ColumnAccessControl({
|
|
77
|
+
create: [],
|
|
78
|
+
read: [],
|
|
79
|
+
update: [],
|
|
80
|
+
})
|
|
81
|
+
@Index()
|
|
82
|
+
@TableColumn({
|
|
83
|
+
type: TableColumnType.ObjectID,
|
|
84
|
+
required: true,
|
|
85
|
+
canReadOnRelationQuery: true,
|
|
86
|
+
title: "Project ID",
|
|
87
|
+
description: "ID of your OneUptime Project in which this object belongs",
|
|
88
|
+
})
|
|
89
|
+
@Column({
|
|
90
|
+
type: ColumnType.ObjectID,
|
|
91
|
+
nullable: false,
|
|
92
|
+
transformer: ObjectID.getDatabaseTransformer(),
|
|
93
|
+
})
|
|
94
|
+
public projectId?: ObjectID = undefined;
|
|
95
|
+
|
|
96
|
+
@ColumnAccessControl({
|
|
97
|
+
create: [],
|
|
98
|
+
read: [],
|
|
99
|
+
update: [],
|
|
100
|
+
})
|
|
101
|
+
@TableColumn({
|
|
102
|
+
title: "Workspace Settings",
|
|
103
|
+
description: "Settings for the Workspace",
|
|
104
|
+
required: true,
|
|
105
|
+
unique: false,
|
|
106
|
+
type: TableColumnType.JSON,
|
|
107
|
+
canReadOnRelationQuery: true,
|
|
108
|
+
})
|
|
109
|
+
@Column({
|
|
110
|
+
type: ColumnType.JSON,
|
|
111
|
+
unique: false,
|
|
112
|
+
nullable: false,
|
|
113
|
+
})
|
|
114
|
+
public settings?: SlackSettings = undefined;
|
|
115
|
+
|
|
116
|
+
@ColumnAccessControl({
|
|
117
|
+
create: [],
|
|
118
|
+
read: [],
|
|
119
|
+
update: [],
|
|
120
|
+
})
|
|
121
|
+
@TableColumn({
|
|
122
|
+
title: "Workspace Type",
|
|
123
|
+
description: "Type of Workspace - slack, microsoft teams etc.",
|
|
124
|
+
required: true,
|
|
125
|
+
unique: false,
|
|
126
|
+
type: TableColumnType.LongText,
|
|
127
|
+
canReadOnRelationQuery: true,
|
|
128
|
+
})
|
|
129
|
+
@Column({
|
|
130
|
+
type: ColumnType.LongText,
|
|
131
|
+
length: ColumnLength.LongText,
|
|
132
|
+
unique: false,
|
|
133
|
+
nullable: false,
|
|
134
|
+
})
|
|
135
|
+
public workspaceType?: WorkspaceType = undefined;
|
|
136
|
+
|
|
137
|
+
@ColumnAccessControl({
|
|
138
|
+
create: [],
|
|
139
|
+
read: [],
|
|
140
|
+
update: [],
|
|
141
|
+
})
|
|
142
|
+
@TableColumn({
|
|
143
|
+
manyToOneRelationColumn: "createdByUserId",
|
|
144
|
+
type: TableColumnType.Entity,
|
|
145
|
+
modelType: User,
|
|
146
|
+
title: "Created by User",
|
|
147
|
+
description:
|
|
148
|
+
"Relation to User who created this object (if this object was created by a User)",
|
|
149
|
+
})
|
|
150
|
+
@ManyToOne(
|
|
151
|
+
() => {
|
|
152
|
+
return User;
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
eager: false,
|
|
156
|
+
nullable: true,
|
|
157
|
+
onDelete: "SET NULL",
|
|
158
|
+
orphanedRowAction: "nullify",
|
|
159
|
+
},
|
|
160
|
+
)
|
|
161
|
+
@JoinColumn({ name: "createdByUserId" })
|
|
162
|
+
public createdByUser?: User = undefined;
|
|
163
|
+
|
|
164
|
+
@ColumnAccessControl({
|
|
165
|
+
create: [],
|
|
166
|
+
read: [],
|
|
167
|
+
update: [],
|
|
168
|
+
})
|
|
169
|
+
@TableColumn({
|
|
170
|
+
type: TableColumnType.ObjectID,
|
|
171
|
+
title: "Created by User ID",
|
|
172
|
+
description:
|
|
173
|
+
"User ID who created this object (if this object was created by a User)",
|
|
174
|
+
})
|
|
175
|
+
@Column({
|
|
176
|
+
type: ColumnType.ObjectID,
|
|
177
|
+
nullable: true,
|
|
178
|
+
transformer: ObjectID.getDatabaseTransformer(),
|
|
179
|
+
})
|
|
180
|
+
public createdByUserId?: ObjectID = undefined;
|
|
181
|
+
|
|
182
|
+
@ColumnAccessControl({
|
|
183
|
+
create: [],
|
|
184
|
+
read: [],
|
|
185
|
+
update: [],
|
|
186
|
+
})
|
|
187
|
+
@TableColumn({
|
|
188
|
+
manyToOneRelationColumn: "deletedByUserId",
|
|
189
|
+
type: TableColumnType.Entity,
|
|
190
|
+
title: "Deleted by User",
|
|
191
|
+
description:
|
|
192
|
+
"Relation to User who deleted this object (if this object was deleted by a User)",
|
|
193
|
+
})
|
|
194
|
+
@ManyToOne(
|
|
195
|
+
() => {
|
|
196
|
+
return User;
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
cascade: false,
|
|
200
|
+
eager: false,
|
|
201
|
+
nullable: true,
|
|
202
|
+
onDelete: "SET NULL",
|
|
203
|
+
orphanedRowAction: "nullify",
|
|
204
|
+
},
|
|
205
|
+
)
|
|
206
|
+
@JoinColumn({ name: "deletedByUserId" })
|
|
207
|
+
public deletedByUser?: User = undefined;
|
|
208
|
+
|
|
209
|
+
// deleted by userId
|
|
210
|
+
|
|
211
|
+
@ColumnAccessControl({
|
|
212
|
+
create: [],
|
|
213
|
+
read: [],
|
|
214
|
+
update: [],
|
|
215
|
+
})
|
|
216
|
+
@TableColumn({
|
|
217
|
+
type: TableColumnType.ObjectID,
|
|
218
|
+
title: "Deleted by User ID",
|
|
219
|
+
description:
|
|
220
|
+
"User ID who deleted this object (if this object was deleted by a User)",
|
|
221
|
+
})
|
|
222
|
+
@Column({
|
|
223
|
+
type: ColumnType.ObjectID,
|
|
224
|
+
nullable: true,
|
|
225
|
+
transformer: ObjectID.getDatabaseTransformer(),
|
|
226
|
+
})
|
|
227
|
+
public deletedByUserId?: ObjectID = undefined;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
export default WorkspaceSetting;
|