@oneuptime/common 9.4.12 → 9.4.13

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.
Files changed (256) hide show
  1. package/Models/DatabaseModels/Incident.ts +77 -0
  2. package/Models/DatabaseModels/IncidentEpisode.ts +1223 -0
  3. package/Models/DatabaseModels/IncidentEpisodeFeed.ts +533 -0
  4. package/Models/DatabaseModels/IncidentEpisodeInternalNote.ts +456 -0
  5. package/Models/DatabaseModels/IncidentEpisodeMember.ts +587 -0
  6. package/Models/DatabaseModels/IncidentEpisodeOwnerTeam.ts +421 -0
  7. package/Models/DatabaseModels/IncidentEpisodeOwnerUser.ts +419 -0
  8. package/Models/DatabaseModels/IncidentEpisodeStateTimeline.ts +524 -0
  9. package/Models/DatabaseModels/IncidentGroupingRule.ts +1430 -0
  10. package/Models/DatabaseModels/Index.ts +18 -0
  11. package/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.ts +70 -0
  12. package/Models/DatabaseModels/OnCallDutyPolicyExecutionLogTimeline.ts +59 -0
  13. package/Models/DatabaseModels/UserOnCallLog.ts +48 -0
  14. package/Models/DatabaseModels/UserOnCallLogTimeline.ts +49 -0
  15. package/Models/DatabaseModels/WorkspaceNotificationLog.ts +57 -0
  16. package/Server/API/IncidentEpisodeAPI.ts +150 -0
  17. package/Server/API/SlackAPI.ts +23 -0
  18. package/Server/API/UserOnCallLogTimelineAPI.ts +24 -4
  19. package/Server/Infrastructure/Postgres/SchemaMigrations/1769626069479-MigrationName.ts +729 -0
  20. package/Server/Infrastructure/Postgres/SchemaMigrations/1769629928240-MigrationName.ts +261 -0
  21. package/Server/Infrastructure/Postgres/SchemaMigrations/1769676117342-RenameEvaluateOverTimeInCriteriaFilter.ts +28 -0
  22. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +6 -0
  23. package/Server/Services/BillingService.ts +1 -3
  24. package/Server/Services/CallService.ts +1 -0
  25. package/Server/Services/IncidentEpisodeFeedService.ts +94 -0
  26. package/Server/Services/IncidentEpisodeInternalNoteService.ts +71 -0
  27. package/Server/Services/IncidentEpisodeMemberService.ts +321 -0
  28. package/Server/Services/IncidentEpisodeOwnerTeamService.ts +10 -0
  29. package/Server/Services/IncidentEpisodeOwnerUserService.ts +10 -0
  30. package/Server/Services/IncidentEpisodeService.ts +1045 -0
  31. package/Server/Services/IncidentEpisodeStateTimelineService.ts +566 -0
  32. package/Server/Services/IncidentGroupingEngineService.ts +1047 -0
  33. package/Server/Services/IncidentGroupingRuleService.ts +14 -0
  34. package/Server/Services/IncidentService.ts +11 -0
  35. package/Server/Services/Index.ts +18 -0
  36. package/Server/Services/MailService.ts +1 -0
  37. package/Server/Services/MonitorService.ts +9 -0
  38. package/Server/Services/OnCallDutyPolicyEscalationRuleService.ts +18 -0
  39. package/Server/Services/OnCallDutyPolicyExecutionLogService.ts +64 -2
  40. package/Server/Services/OnCallDutyPolicyExecutionLogTimelineService.ts +26 -1
  41. package/Server/Services/OnCallDutyPolicyService.ts +15 -0
  42. package/Server/Services/SmsService.ts +1 -0
  43. package/Server/Services/UserNotificationRuleService.ts +48 -2
  44. package/Server/Services/UserNotificationSettingService.ts +23 -0
  45. package/Server/Services/UserOnCallLogService.ts +41 -4
  46. package/Server/Services/WhatsAppService.ts +1 -0
  47. package/Server/Services/WorkspaceNotificationLogService.ts +16 -0
  48. package/Server/Services/WorkspaceNotificationRuleService.ts +116 -0
  49. package/Server/Utils/AI/IncidentEpisodeAIContextBuilder.ts +490 -0
  50. package/Server/Utils/Monitor/Criteria/APIRequestCriteria.ts +1 -1
  51. package/Server/Utils/Monitor/Criteria/CompareCriteria.ts +1 -1
  52. package/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.ts +1 -1
  53. package/Server/Utils/Monitor/Criteria/SSLMonitorCriteria.ts +1 -1
  54. package/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.ts +2 -2
  55. package/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.ts +182 -0
  56. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +13 -0
  57. package/Server/Utils/Monitor/MonitorCriteriaExpectationBuilder.ts +1 -1
  58. package/Server/Utils/Monitor/MonitorTemplateUtil.ts +37 -0
  59. package/Server/Utils/PushNotificationUtil.ts +31 -0
  60. package/Server/Utils/WhatsAppTemplateUtil.ts +14 -0
  61. package/Server/Utils/Workspace/MicrosoftTeams/Actions/ActionTypes.ts +18 -0
  62. package/Server/Utils/Workspace/MicrosoftTeams/Actions/IncidentEpisode.ts +702 -0
  63. package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +20 -0
  64. package/Server/Utils/Workspace/Slack/Actions/ActionTypes.ts +11 -0
  65. package/Server/Utils/Workspace/Slack/Actions/IncidentEpisode.ts +918 -0
  66. package/Server/Utils/Workspace/Slack/Messages/IncidentEpisode.ts +120 -0
  67. package/Server/Utils/Workspace/WorkspaceMessages/IncidentEpisode.ts +74 -0
  68. package/Types/Email/EmailTemplateType.ts +6 -0
  69. package/Types/Monitor/CriteriaFilter.ts +24 -4
  70. package/Types/Monitor/MonitorCriteriaInstance.ts +67 -0
  71. package/Types/Monitor/MonitorStep.ts +37 -0
  72. package/Types/Monitor/MonitorStepSnmpMonitor.ts +102 -0
  73. package/Types/Monitor/MonitorType.ts +15 -2
  74. package/Types/Monitor/SnmpMonitor/SnmpAuthProtocol.ts +8 -0
  75. package/Types/Monitor/SnmpMonitor/SnmpDataType.ts +21 -0
  76. package/Types/Monitor/SnmpMonitor/SnmpMonitorResponse.ts +16 -0
  77. package/Types/Monitor/SnmpMonitor/SnmpOid.ts +60 -0
  78. package/Types/Monitor/SnmpMonitor/SnmpPrivProtocol.ts +7 -0
  79. package/Types/Monitor/SnmpMonitor/SnmpSecurityLevel.ts +7 -0
  80. package/Types/Monitor/SnmpMonitor/SnmpV3Auth.ts +12 -0
  81. package/Types/Monitor/SnmpMonitor/SnmpVersion.ts +7 -0
  82. package/Types/NotificationSetting/NotificationSettingEventType.ts +7 -0
  83. package/Types/Permission.ts +311 -0
  84. package/Types/Probe/ProbeMonitorResponse.ts +2 -0
  85. package/Types/UserNotification/UserNotificationEventType.ts +1 -0
  86. package/Types/WhatsApp/WhatsAppTemplates.ts +24 -0
  87. package/Types/Workspace/NotificationRules/EventType.ts +1 -0
  88. package/Types/Workspace/NotificationRules/NotificationRuleCondition.ts +38 -1
  89. package/Utils/Monitor/MonitorMetricType.ts +2 -1
  90. package/build/dist/Models/DatabaseModels/Incident.js +78 -0
  91. package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
  92. package/build/dist/Models/DatabaseModels/IncidentEpisode.js +1250 -0
  93. package/build/dist/Models/DatabaseModels/IncidentEpisode.js.map +1 -0
  94. package/build/dist/Models/DatabaseModels/IncidentEpisodeFeed.js +555 -0
  95. package/build/dist/Models/DatabaseModels/IncidentEpisodeFeed.js.map +1 -0
  96. package/build/dist/Models/DatabaseModels/IncidentEpisodeInternalNote.js +467 -0
  97. package/build/dist/Models/DatabaseModels/IncidentEpisodeInternalNote.js.map +1 -0
  98. package/build/dist/Models/DatabaseModels/IncidentEpisodeMember.js +607 -0
  99. package/build/dist/Models/DatabaseModels/IncidentEpisodeMember.js.map +1 -0
  100. package/build/dist/Models/DatabaseModels/IncidentEpisodeOwnerTeam.js +437 -0
  101. package/build/dist/Models/DatabaseModels/IncidentEpisodeOwnerTeam.js.map +1 -0
  102. package/build/dist/Models/DatabaseModels/IncidentEpisodeOwnerUser.js +436 -0
  103. package/build/dist/Models/DatabaseModels/IncidentEpisodeOwnerUser.js.map +1 -0
  104. package/build/dist/Models/DatabaseModels/IncidentEpisodeStateTimeline.js +546 -0
  105. package/build/dist/Models/DatabaseModels/IncidentEpisodeStateTimeline.js.map +1 -0
  106. package/build/dist/Models/DatabaseModels/IncidentGroupingRule.js +1437 -0
  107. package/build/dist/Models/DatabaseModels/IncidentGroupingRule.js.map +1 -0
  108. package/build/dist/Models/DatabaseModels/Index.js +16 -0
  109. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  110. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.js +69 -0
  111. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.js.map +1 -1
  112. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLogTimeline.js +58 -0
  113. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLogTimeline.js.map +1 -1
  114. package/build/dist/Models/DatabaseModels/UserOnCallLog.js +47 -0
  115. package/build/dist/Models/DatabaseModels/UserOnCallLog.js.map +1 -1
  116. package/build/dist/Models/DatabaseModels/UserOnCallLogTimeline.js +48 -0
  117. package/build/dist/Models/DatabaseModels/UserOnCallLogTimeline.js.map +1 -1
  118. package/build/dist/Models/DatabaseModels/WorkspaceNotificationLog.js +58 -0
  119. package/build/dist/Models/DatabaseModels/WorkspaceNotificationLog.js.map +1 -1
  120. package/build/dist/Server/API/IncidentEpisodeAPI.js +97 -0
  121. package/build/dist/Server/API/IncidentEpisodeAPI.js.map +1 -0
  122. package/build/dist/Server/API/SlackAPI.js +18 -0
  123. package/build/dist/Server/API/SlackAPI.js.map +1 -1
  124. package/build/dist/Server/API/UserOnCallLogTimelineAPI.js +30 -10
  125. package/build/dist/Server/API/UserOnCallLogTimelineAPI.js.map +1 -1
  126. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769626069479-MigrationName.js +256 -0
  127. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769626069479-MigrationName.js.map +1 -0
  128. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769629928240-MigrationName.js +96 -0
  129. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769629928240-MigrationName.js.map +1 -0
  130. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769676117342-RenameEvaluateOverTimeInCriteriaFilter.js +25 -0
  131. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769676117342-RenameEvaluateOverTimeInCriteriaFilter.js.map +1 -0
  132. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +6 -0
  133. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  134. package/build/dist/Server/Services/BillingService.js +1 -2
  135. package/build/dist/Server/Services/BillingService.js.map +1 -1
  136. package/build/dist/Server/Services/CallService.js.map +1 -1
  137. package/build/dist/Server/Services/IncidentEpisodeFeedService.js +83 -0
  138. package/build/dist/Server/Services/IncidentEpisodeFeedService.js.map +1 -0
  139. package/build/dist/Server/Services/IncidentEpisodeInternalNoteService.js +70 -0
  140. package/build/dist/Server/Services/IncidentEpisodeInternalNoteService.js.map +1 -0
  141. package/build/dist/Server/Services/IncidentEpisodeMemberService.js +298 -0
  142. package/build/dist/Server/Services/IncidentEpisodeMemberService.js.map +1 -0
  143. package/build/dist/Server/Services/IncidentEpisodeOwnerTeamService.js +9 -0
  144. package/build/dist/Server/Services/IncidentEpisodeOwnerTeamService.js.map +1 -0
  145. package/build/dist/Server/Services/IncidentEpisodeOwnerUserService.js +9 -0
  146. package/build/dist/Server/Services/IncidentEpisodeOwnerUserService.js.map +1 -0
  147. package/build/dist/Server/Services/IncidentEpisodeService.js +933 -0
  148. package/build/dist/Server/Services/IncidentEpisodeService.js.map +1 -0
  149. package/build/dist/Server/Services/IncidentEpisodeStateTimelineService.js +498 -0
  150. package/build/dist/Server/Services/IncidentEpisodeStateTimelineService.js.map +1 -0
  151. package/build/dist/Server/Services/IncidentGroupingEngineService.js +799 -0
  152. package/build/dist/Server/Services/IncidentGroupingEngineService.js.map +1 -0
  153. package/build/dist/Server/Services/IncidentGroupingRuleService.js +13 -0
  154. package/build/dist/Server/Services/IncidentGroupingRuleService.js.map +1 -0
  155. package/build/dist/Server/Services/IncidentService.js +10 -0
  156. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  157. package/build/dist/Server/Services/Index.js +16 -0
  158. package/build/dist/Server/Services/Index.js.map +1 -1
  159. package/build/dist/Server/Services/MailService.js.map +1 -1
  160. package/build/dist/Server/Services/MonitorService.js +9 -1
  161. package/build/dist/Server/Services/MonitorService.js.map +1 -1
  162. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleService.js +10 -0
  163. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleService.js.map +1 -1
  164. package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogService.js +48 -2
  165. package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogService.js.map +1 -1
  166. package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogTimelineService.js +20 -1
  167. package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogTimelineService.js.map +1 -1
  168. package/build/dist/Server/Services/OnCallDutyPolicyService.js +8 -0
  169. package/build/dist/Server/Services/OnCallDutyPolicyService.js.map +1 -1
  170. package/build/dist/Server/Services/SmsService.js.map +1 -1
  171. package/build/dist/Server/Services/UserNotificationRuleService.js +39 -2
  172. package/build/dist/Server/Services/UserNotificationRuleService.js.map +1 -1
  173. package/build/dist/Server/Services/UserNotificationSettingService.js +9 -0
  174. package/build/dist/Server/Services/UserNotificationSettingService.js.map +1 -1
  175. package/build/dist/Server/Services/UserOnCallLogService.js +35 -3
  176. package/build/dist/Server/Services/UserOnCallLogService.js.map +1 -1
  177. package/build/dist/Server/Services/WhatsAppService.js.map +1 -1
  178. package/build/dist/Server/Services/WorkspaceNotificationLogService.js +12 -0
  179. package/build/dist/Server/Services/WorkspaceNotificationLogService.js.map +1 -1
  180. package/build/dist/Server/Services/WorkspaceNotificationRuleService.js +95 -1
  181. package/build/dist/Server/Services/WorkspaceNotificationRuleService.js.map +1 -1
  182. package/build/dist/Server/Utils/AI/IncidentEpisodeAIContextBuilder.js +402 -0
  183. package/build/dist/Server/Utils/AI/IncidentEpisodeAIContextBuilder.js.map +1 -0
  184. package/build/dist/Server/Utils/Monitor/Criteria/APIRequestCriteria.js +1 -1
  185. package/build/dist/Server/Utils/Monitor/Criteria/CompareCriteria.js +1 -1
  186. package/build/dist/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.js +1 -1
  187. package/build/dist/Server/Utils/Monitor/Criteria/SSLMonitorCriteria.js +1 -1
  188. package/build/dist/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.js +2 -2
  189. package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js +135 -0
  190. package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js.map +1 -0
  191. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +10 -0
  192. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  193. package/build/dist/Server/Utils/Monitor/MonitorCriteriaExpectationBuilder.js +1 -1
  194. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +26 -0
  195. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
  196. package/build/dist/Server/Utils/PushNotificationUtil.js +20 -0
  197. package/build/dist/Server/Utils/PushNotificationUtil.js.map +1 -1
  198. package/build/dist/Server/Utils/WhatsAppTemplateUtil.js +8 -0
  199. package/build/dist/Server/Utils/WhatsAppTemplateUtil.js.map +1 -1
  200. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/ActionTypes.js +17 -0
  201. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/ActionTypes.js.map +1 -1
  202. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/IncidentEpisode.js +547 -0
  203. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/IncidentEpisode.js.map +1 -0
  204. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +15 -0
  205. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
  206. package/build/dist/Server/Utils/Workspace/Slack/Actions/ActionTypes.js +10 -0
  207. package/build/dist/Server/Utils/Workspace/Slack/Actions/ActionTypes.js.map +1 -1
  208. package/build/dist/Server/Utils/Workspace/Slack/Actions/IncidentEpisode.js +651 -0
  209. package/build/dist/Server/Utils/Workspace/Slack/Actions/IncidentEpisode.js.map +1 -0
  210. package/build/dist/Server/Utils/Workspace/Slack/Messages/IncidentEpisode.js +100 -0
  211. package/build/dist/Server/Utils/Workspace/Slack/Messages/IncidentEpisode.js.map +1 -0
  212. package/build/dist/Server/Utils/Workspace/WorkspaceMessages/IncidentEpisode.js +70 -0
  213. package/build/dist/Server/Utils/Workspace/WorkspaceMessages/IncidentEpisode.js.map +1 -0
  214. package/build/dist/Types/Email/EmailTemplateType.js +5 -0
  215. package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
  216. package/build/dist/Types/Monitor/CriteriaFilter.js +16 -3
  217. package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
  218. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +62 -0
  219. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
  220. package/build/dist/Types/Monitor/MonitorStep.js +26 -0
  221. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  222. package/build/dist/Types/Monitor/MonitorStepSnmpMonitor.js +77 -0
  223. package/build/dist/Types/Monitor/MonitorStepSnmpMonitor.js.map +1 -0
  224. package/build/dist/Types/Monitor/MonitorType.js +13 -2
  225. package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
  226. package/build/dist/Types/Monitor/SnmpMonitor/SnmpAuthProtocol.js +9 -0
  227. package/build/dist/Types/Monitor/SnmpMonitor/SnmpAuthProtocol.js.map +1 -0
  228. package/build/dist/Types/Monitor/SnmpMonitor/SnmpDataType.js +22 -0
  229. package/build/dist/Types/Monitor/SnmpMonitor/SnmpDataType.js.map +1 -0
  230. package/build/dist/Types/Monitor/SnmpMonitor/SnmpMonitorResponse.js +2 -0
  231. package/build/dist/Types/Monitor/SnmpMonitor/SnmpMonitorResponse.js.map +1 -0
  232. package/build/dist/Types/Monitor/SnmpMonitor/SnmpOid.js +55 -0
  233. package/build/dist/Types/Monitor/SnmpMonitor/SnmpOid.js.map +1 -0
  234. package/build/dist/Types/Monitor/SnmpMonitor/SnmpPrivProtocol.js +8 -0
  235. package/build/dist/Types/Monitor/SnmpMonitor/SnmpPrivProtocol.js.map +1 -0
  236. package/build/dist/Types/Monitor/SnmpMonitor/SnmpSecurityLevel.js +8 -0
  237. package/build/dist/Types/Monitor/SnmpMonitor/SnmpSecurityLevel.js.map +1 -0
  238. package/build/dist/Types/Monitor/SnmpMonitor/SnmpV3Auth.js +2 -0
  239. package/build/dist/Types/Monitor/SnmpMonitor/SnmpV3Auth.js.map +1 -0
  240. package/build/dist/Types/Monitor/SnmpMonitor/SnmpVersion.js +8 -0
  241. package/build/dist/Types/Monitor/SnmpMonitor/SnmpVersion.js.map +1 -0
  242. package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js +5 -0
  243. package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js.map +1 -1
  244. package/build/dist/Types/Permission.js +264 -0
  245. package/build/dist/Types/Permission.js.map +1 -1
  246. package/build/dist/Types/UserNotification/UserNotificationEventType.js +1 -0
  247. package/build/dist/Types/UserNotification/UserNotificationEventType.js.map +1 -1
  248. package/build/dist/Types/WhatsApp/WhatsAppTemplates.js +15 -0
  249. package/build/dist/Types/WhatsApp/WhatsAppTemplates.js.map +1 -1
  250. package/build/dist/Types/Workspace/NotificationRules/EventType.js +1 -0
  251. package/build/dist/Types/Workspace/NotificationRules/EventType.js.map +1 -1
  252. package/build/dist/Types/Workspace/NotificationRules/NotificationRuleCondition.js +33 -1
  253. package/build/dist/Types/Workspace/NotificationRules/NotificationRuleCondition.js.map +1 -1
  254. package/build/dist/Utils/Monitor/MonitorMetricType.js +2 -1
  255. package/build/dist/Utils/Monitor/MonitorMetricType.js.map +1 -1
  256. package/package.json +1 -1
@@ -0,0 +1,587 @@
1
+ import Incident from "./Incident";
2
+ import IncidentEpisode from "./IncidentEpisode";
3
+ import IncidentGroupingRule from "./IncidentGroupingRule";
4
+ import Project from "./Project";
5
+ import User from "./User";
6
+ import BaseModel from "./DatabaseBaseModel/DatabaseBaseModel";
7
+ import Route from "../../Types/API/Route";
8
+ import ColumnAccessControl from "../../Types/Database/AccessControl/ColumnAccessControl";
9
+ import TableAccessControl from "../../Types/Database/AccessControl/TableAccessControl";
10
+ import ColumnLength from "../../Types/Database/ColumnLength";
11
+ import ColumnType from "../../Types/Database/ColumnType";
12
+ import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
13
+ import EnableDocumentation from "../../Types/Database/EnableDocumentation";
14
+ import EnableWorkflow from "../../Types/Database/EnableWorkflow";
15
+ import TableColumn from "../../Types/Database/TableColumn";
16
+ import TableColumnType from "../../Types/Database/TableColumnType";
17
+ import TableMetadata from "../../Types/Database/TableMetadata";
18
+ import TenantColumn from "../../Types/Database/TenantColumn";
19
+ import IconProp from "../../Types/Icon/IconProp";
20
+ import ObjectID from "../../Types/ObjectID";
21
+ import Permission from "../../Types/Permission";
22
+ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
23
+
24
+ export enum IncidentEpisodeMemberAddedBy {
25
+ Rule = "rule",
26
+ Manual = "manual",
27
+ API = "api",
28
+ }
29
+
30
+ @EnableDocumentation()
31
+ @TenantColumn("projectId")
32
+ @TableAccessControl({
33
+ create: [
34
+ Permission.ProjectOwner,
35
+ Permission.ProjectAdmin,
36
+ Permission.ProjectMember,
37
+ Permission.CreateIncidentEpisodeMember,
38
+ ],
39
+ read: [
40
+ Permission.ProjectOwner,
41
+ Permission.ProjectAdmin,
42
+ Permission.ProjectMember,
43
+ Permission.ReadIncidentEpisodeMember,
44
+ ],
45
+ delete: [
46
+ Permission.ProjectOwner,
47
+ Permission.ProjectAdmin,
48
+ Permission.ProjectMember,
49
+ Permission.DeleteIncidentEpisodeMember,
50
+ ],
51
+ update: [
52
+ Permission.ProjectOwner,
53
+ Permission.ProjectAdmin,
54
+ Permission.ProjectMember,
55
+ Permission.EditIncidentEpisodeMember,
56
+ ],
57
+ })
58
+ @EnableWorkflow({
59
+ create: true,
60
+ delete: true,
61
+ update: true,
62
+ read: true,
63
+ })
64
+ @CrudApiEndpoint(new Route("/incident-episode-member"))
65
+ @TableMetadata({
66
+ tableName: "IncidentEpisodeMember",
67
+ singularName: "Incident Episode Member",
68
+ pluralName: "Incident Episode Members",
69
+ icon: IconProp.Layers,
70
+ tableDescription: "Link between incidents and episodes",
71
+ })
72
+ @Entity({
73
+ name: "IncidentEpisodeMember",
74
+ })
75
+ @Index(["incidentEpisodeId", "incidentId", "projectId"])
76
+ export default class IncidentEpisodeMember extends BaseModel {
77
+ @ColumnAccessControl({
78
+ create: [
79
+ Permission.ProjectOwner,
80
+ Permission.ProjectAdmin,
81
+ Permission.ProjectMember,
82
+ Permission.CreateIncidentEpisodeMember,
83
+ ],
84
+ read: [
85
+ Permission.ProjectOwner,
86
+ Permission.ProjectAdmin,
87
+ Permission.ProjectMember,
88
+ Permission.ReadIncidentEpisodeMember,
89
+ ],
90
+ update: [],
91
+ })
92
+ @TableColumn({
93
+ manyToOneRelationColumn: "projectId",
94
+ type: TableColumnType.Entity,
95
+ modelType: Project,
96
+ title: "Project",
97
+ description: "Relation to Project Resource in which this object belongs",
98
+ })
99
+ @ManyToOne(
100
+ () => {
101
+ return Project;
102
+ },
103
+ {
104
+ eager: false,
105
+ nullable: false,
106
+ onDelete: "CASCADE",
107
+ orphanedRowAction: "nullify",
108
+ },
109
+ )
110
+ @JoinColumn({ name: "projectId" })
111
+ public project?: Project = undefined;
112
+
113
+ @ColumnAccessControl({
114
+ create: [
115
+ Permission.ProjectOwner,
116
+ Permission.ProjectAdmin,
117
+ Permission.ProjectMember,
118
+ Permission.CreateIncidentEpisodeMember,
119
+ ],
120
+ read: [
121
+ Permission.ProjectOwner,
122
+ Permission.ProjectAdmin,
123
+ Permission.ProjectMember,
124
+ Permission.ReadIncidentEpisodeMember,
125
+ ],
126
+ update: [],
127
+ })
128
+ @Index()
129
+ @TableColumn({
130
+ type: TableColumnType.ObjectID,
131
+ required: true,
132
+ canReadOnRelationQuery: true,
133
+ title: "Project ID",
134
+ description: "ID of your OneUptime Project in which this object belongs",
135
+ })
136
+ @Column({
137
+ type: ColumnType.ObjectID,
138
+ nullable: false,
139
+ transformer: ObjectID.getDatabaseTransformer(),
140
+ })
141
+ public projectId?: ObjectID = undefined;
142
+
143
+ @ColumnAccessControl({
144
+ create: [
145
+ Permission.ProjectOwner,
146
+ Permission.ProjectAdmin,
147
+ Permission.ProjectMember,
148
+ Permission.CreateIncidentEpisodeMember,
149
+ ],
150
+ read: [
151
+ Permission.ProjectOwner,
152
+ Permission.ProjectAdmin,
153
+ Permission.ProjectMember,
154
+ Permission.ReadIncidentEpisodeMember,
155
+ ],
156
+ update: [],
157
+ })
158
+ @TableColumn({
159
+ manyToOneRelationColumn: "incidentEpisodeId",
160
+ type: TableColumnType.Entity,
161
+ modelType: IncidentEpisode,
162
+ title: "Incident Episode",
163
+ description: "Relation to Incident Episode that this incident belongs to",
164
+ })
165
+ @ManyToOne(
166
+ () => {
167
+ return IncidentEpisode;
168
+ },
169
+ {
170
+ eager: false,
171
+ nullable: false,
172
+ onDelete: "CASCADE",
173
+ orphanedRowAction: "nullify",
174
+ },
175
+ )
176
+ @JoinColumn({ name: "incidentEpisodeId" })
177
+ public incidentEpisode?: IncidentEpisode = undefined;
178
+
179
+ @ColumnAccessControl({
180
+ create: [
181
+ Permission.ProjectOwner,
182
+ Permission.ProjectAdmin,
183
+ Permission.ProjectMember,
184
+ Permission.CreateIncidentEpisodeMember,
185
+ ],
186
+ read: [
187
+ Permission.ProjectOwner,
188
+ Permission.ProjectAdmin,
189
+ Permission.ProjectMember,
190
+ Permission.ReadIncidentEpisodeMember,
191
+ ],
192
+ update: [],
193
+ })
194
+ @Index()
195
+ @TableColumn({
196
+ type: TableColumnType.ObjectID,
197
+ required: true,
198
+ canReadOnRelationQuery: true,
199
+ title: "Incident Episode ID",
200
+ description: "ID of the Incident Episode that this incident belongs to",
201
+ })
202
+ @Column({
203
+ type: ColumnType.ObjectID,
204
+ nullable: false,
205
+ transformer: ObjectID.getDatabaseTransformer(),
206
+ })
207
+ public incidentEpisodeId?: ObjectID = undefined;
208
+
209
+ @ColumnAccessControl({
210
+ create: [
211
+ Permission.ProjectOwner,
212
+ Permission.ProjectAdmin,
213
+ Permission.ProjectMember,
214
+ Permission.CreateIncidentEpisodeMember,
215
+ ],
216
+ read: [
217
+ Permission.ProjectOwner,
218
+ Permission.ProjectAdmin,
219
+ Permission.ProjectMember,
220
+ Permission.ReadIncidentEpisodeMember,
221
+ ],
222
+ update: [],
223
+ })
224
+ @TableColumn({
225
+ manyToOneRelationColumn: "incidentId",
226
+ type: TableColumnType.Entity,
227
+ modelType: Incident,
228
+ title: "Incident",
229
+ description: "Relation to Incident that is a member of this episode",
230
+ })
231
+ @ManyToOne(
232
+ () => {
233
+ return Incident;
234
+ },
235
+ {
236
+ eager: false,
237
+ nullable: false,
238
+ onDelete: "CASCADE",
239
+ orphanedRowAction: "nullify",
240
+ },
241
+ )
242
+ @JoinColumn({ name: "incidentId" })
243
+ public incident?: Incident = undefined;
244
+
245
+ @ColumnAccessControl({
246
+ create: [
247
+ Permission.ProjectOwner,
248
+ Permission.ProjectAdmin,
249
+ Permission.ProjectMember,
250
+ Permission.CreateIncidentEpisodeMember,
251
+ ],
252
+ read: [
253
+ Permission.ProjectOwner,
254
+ Permission.ProjectAdmin,
255
+ Permission.ProjectMember,
256
+ Permission.ReadIncidentEpisodeMember,
257
+ ],
258
+ update: [],
259
+ })
260
+ @Index()
261
+ @TableColumn({
262
+ type: TableColumnType.ObjectID,
263
+ required: true,
264
+ canReadOnRelationQuery: true,
265
+ title: "Incident ID",
266
+ description: "ID of the Incident that is a member of this episode",
267
+ })
268
+ @Column({
269
+ type: ColumnType.ObjectID,
270
+ nullable: false,
271
+ transformer: ObjectID.getDatabaseTransformer(),
272
+ })
273
+ public incidentId?: ObjectID = undefined;
274
+
275
+ @ColumnAccessControl({
276
+ create: [
277
+ Permission.ProjectOwner,
278
+ Permission.ProjectAdmin,
279
+ Permission.ProjectMember,
280
+ Permission.CreateIncidentEpisodeMember,
281
+ ],
282
+ read: [
283
+ Permission.ProjectOwner,
284
+ Permission.ProjectAdmin,
285
+ Permission.ProjectMember,
286
+ Permission.ReadIncidentEpisodeMember,
287
+ ],
288
+ update: [],
289
+ })
290
+ @Index()
291
+ @TableColumn({
292
+ type: TableColumnType.Date,
293
+ title: "Added At",
294
+ description: "When this incident was added to the episode",
295
+ })
296
+ @Column({
297
+ type: ColumnType.Date,
298
+ nullable: true,
299
+ unique: false,
300
+ })
301
+ public addedAt?: Date = undefined;
302
+
303
+ @ColumnAccessControl({
304
+ create: [
305
+ Permission.ProjectOwner,
306
+ Permission.ProjectAdmin,
307
+ Permission.ProjectMember,
308
+ Permission.CreateIncidentEpisodeMember,
309
+ ],
310
+ read: [
311
+ Permission.ProjectOwner,
312
+ Permission.ProjectAdmin,
313
+ Permission.ProjectMember,
314
+ Permission.ReadIncidentEpisodeMember,
315
+ ],
316
+ update: [],
317
+ })
318
+ @TableColumn({
319
+ type: TableColumnType.ShortText,
320
+ required: true,
321
+ isDefaultValueColumn: true,
322
+ title: "Added By",
323
+ description:
324
+ "How this incident was added to the episode (rule, manual, or api)",
325
+ defaultValue: IncidentEpisodeMemberAddedBy.Rule,
326
+ })
327
+ @Column({
328
+ type: ColumnType.ShortText,
329
+ nullable: false,
330
+ default: IncidentEpisodeMemberAddedBy.Rule,
331
+ length: ColumnLength.ShortText,
332
+ })
333
+ public addedBy?: IncidentEpisodeMemberAddedBy = undefined;
334
+
335
+ @ColumnAccessControl({
336
+ create: [
337
+ Permission.ProjectOwner,
338
+ Permission.ProjectAdmin,
339
+ Permission.ProjectMember,
340
+ Permission.CreateIncidentEpisodeMember,
341
+ ],
342
+ read: [
343
+ Permission.ProjectOwner,
344
+ Permission.ProjectAdmin,
345
+ Permission.ProjectMember,
346
+ Permission.ReadIncidentEpisodeMember,
347
+ ],
348
+ update: [],
349
+ })
350
+ @TableColumn({
351
+ manyToOneRelationColumn: "addedByUserId",
352
+ type: TableColumnType.Entity,
353
+ modelType: User,
354
+ title: "Added By User",
355
+ description:
356
+ "User who manually added this incident to the episode (if applicable)",
357
+ })
358
+ @ManyToOne(
359
+ () => {
360
+ return User;
361
+ },
362
+ {
363
+ eager: false,
364
+ nullable: true,
365
+ onDelete: "SET NULL",
366
+ orphanedRowAction: "nullify",
367
+ },
368
+ )
369
+ @JoinColumn({ name: "addedByUserId" })
370
+ public addedByUser?: User = undefined;
371
+
372
+ @ColumnAccessControl({
373
+ create: [
374
+ Permission.ProjectOwner,
375
+ Permission.ProjectAdmin,
376
+ Permission.ProjectMember,
377
+ Permission.CreateIncidentEpisodeMember,
378
+ ],
379
+ read: [
380
+ Permission.ProjectOwner,
381
+ Permission.ProjectAdmin,
382
+ Permission.ProjectMember,
383
+ Permission.ReadIncidentEpisodeMember,
384
+ ],
385
+ update: [],
386
+ })
387
+ @Index()
388
+ @TableColumn({
389
+ type: TableColumnType.ObjectID,
390
+ required: false,
391
+ title: "Added By User ID",
392
+ description: "User ID who manually added this incident to the episode",
393
+ })
394
+ @Column({
395
+ type: ColumnType.ObjectID,
396
+ nullable: true,
397
+ transformer: ObjectID.getDatabaseTransformer(),
398
+ })
399
+ public addedByUserId?: ObjectID = undefined;
400
+
401
+ @ColumnAccessControl({
402
+ create: [
403
+ Permission.ProjectOwner,
404
+ Permission.ProjectAdmin,
405
+ Permission.ProjectMember,
406
+ Permission.CreateIncidentEpisodeMember,
407
+ ],
408
+ read: [
409
+ Permission.ProjectOwner,
410
+ Permission.ProjectAdmin,
411
+ Permission.ProjectMember,
412
+ Permission.ReadIncidentEpisodeMember,
413
+ ],
414
+ update: [],
415
+ })
416
+ @TableColumn({
417
+ manyToOneRelationColumn: "matchedRuleId",
418
+ type: TableColumnType.Entity,
419
+ modelType: IncidentGroupingRule,
420
+ title: "Matched Grouping Rule",
421
+ description:
422
+ "Relation to the Incident Grouping Rule that matched this incident (if applicable)",
423
+ })
424
+ @ManyToOne(
425
+ () => {
426
+ return IncidentGroupingRule;
427
+ },
428
+ {
429
+ eager: false,
430
+ nullable: true,
431
+ onDelete: "SET NULL",
432
+ orphanedRowAction: "nullify",
433
+ },
434
+ )
435
+ @JoinColumn({ name: "matchedRuleId" })
436
+ public matchedRule?: IncidentGroupingRule = undefined;
437
+
438
+ @ColumnAccessControl({
439
+ create: [
440
+ Permission.ProjectOwner,
441
+ Permission.ProjectAdmin,
442
+ Permission.ProjectMember,
443
+ Permission.CreateIncidentEpisodeMember,
444
+ ],
445
+ read: [
446
+ Permission.ProjectOwner,
447
+ Permission.ProjectAdmin,
448
+ Permission.ProjectMember,
449
+ Permission.ReadIncidentEpisodeMember,
450
+ ],
451
+ update: [],
452
+ })
453
+ @Index()
454
+ @TableColumn({
455
+ type: TableColumnType.ObjectID,
456
+ required: false,
457
+ title: "Matched Rule ID",
458
+ description: "ID of the grouping rule that matched this incident",
459
+ })
460
+ @Column({
461
+ type: ColumnType.ObjectID,
462
+ nullable: true,
463
+ transformer: ObjectID.getDatabaseTransformer(),
464
+ })
465
+ public matchedRuleId?: ObjectID = undefined;
466
+
467
+ @ColumnAccessControl({
468
+ create: [
469
+ Permission.ProjectOwner,
470
+ Permission.ProjectAdmin,
471
+ Permission.ProjectMember,
472
+ Permission.CreateIncidentEpisodeMember,
473
+ ],
474
+ read: [
475
+ Permission.ProjectOwner,
476
+ Permission.ProjectAdmin,
477
+ Permission.ProjectMember,
478
+ Permission.ReadIncidentEpisodeMember,
479
+ ],
480
+ update: [],
481
+ })
482
+ @TableColumn({
483
+ manyToOneRelationColumn: "createdByUserId",
484
+ type: TableColumnType.Entity,
485
+ modelType: User,
486
+ title: "Created by User",
487
+ description:
488
+ "Relation to User who created this object (if this object was created by a User)",
489
+ })
490
+ @ManyToOne(
491
+ () => {
492
+ return User;
493
+ },
494
+ {
495
+ eager: false,
496
+ nullable: true,
497
+ onDelete: "SET NULL",
498
+ orphanedRowAction: "nullify",
499
+ },
500
+ )
501
+ @JoinColumn({ name: "createdByUserId" })
502
+ public createdByUser?: User = undefined;
503
+
504
+ @ColumnAccessControl({
505
+ create: [
506
+ Permission.ProjectOwner,
507
+ Permission.ProjectAdmin,
508
+ Permission.ProjectMember,
509
+ Permission.CreateIncidentEpisodeMember,
510
+ ],
511
+ read: [
512
+ Permission.ProjectOwner,
513
+ Permission.ProjectAdmin,
514
+ Permission.ProjectMember,
515
+ Permission.ReadIncidentEpisodeMember,
516
+ ],
517
+ update: [],
518
+ })
519
+ @TableColumn({
520
+ type: TableColumnType.ObjectID,
521
+ title: "Created by User ID",
522
+ description:
523
+ "User ID who created this object (if this object was created by a User)",
524
+ })
525
+ @Column({
526
+ type: ColumnType.ObjectID,
527
+ nullable: true,
528
+ transformer: ObjectID.getDatabaseTransformer(),
529
+ })
530
+ public createdByUserId?: ObjectID = undefined;
531
+
532
+ @ColumnAccessControl({
533
+ create: [],
534
+ read: [
535
+ Permission.ProjectOwner,
536
+ Permission.ProjectAdmin,
537
+ Permission.ProjectMember,
538
+ Permission.ReadIncidentEpisodeMember,
539
+ ],
540
+ update: [],
541
+ })
542
+ @TableColumn({
543
+ manyToOneRelationColumn: "deletedByUserId",
544
+ type: TableColumnType.Entity,
545
+ title: "Deleted by User",
546
+ modelType: User,
547
+ description:
548
+ "Relation to User who deleted this object (if this object was deleted by a User)",
549
+ })
550
+ @ManyToOne(
551
+ () => {
552
+ return User;
553
+ },
554
+ {
555
+ cascade: false,
556
+ eager: false,
557
+ nullable: true,
558
+ onDelete: "SET NULL",
559
+ orphanedRowAction: "nullify",
560
+ },
561
+ )
562
+ @JoinColumn({ name: "deletedByUserId" })
563
+ public deletedByUser?: User = undefined;
564
+
565
+ @ColumnAccessControl({
566
+ create: [],
567
+ read: [
568
+ Permission.ProjectOwner,
569
+ Permission.ProjectAdmin,
570
+ Permission.ProjectMember,
571
+ Permission.ReadIncidentEpisodeMember,
572
+ ],
573
+ update: [],
574
+ })
575
+ @TableColumn({
576
+ type: TableColumnType.ObjectID,
577
+ title: "Deleted by User ID",
578
+ description:
579
+ "User ID who deleted this object (if this object was deleted by a User)",
580
+ })
581
+ @Column({
582
+ type: ColumnType.ObjectID,
583
+ nullable: true,
584
+ transformer: ObjectID.getDatabaseTransformer(),
585
+ })
586
+ public deletedByUserId?: ObjectID = undefined;
587
+ }