@oneuptime/common 10.0.65 → 10.0.67

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 (276) hide show
  1. package/Models/DatabaseModels/DockerHostOwnerTeam.ts +464 -0
  2. package/Models/DatabaseModels/DockerHostOwnerUser.ts +463 -0
  3. package/Models/DatabaseModels/GlobalConfig.ts +56 -0
  4. package/Models/DatabaseModels/Index.ts +28 -0
  5. package/Models/DatabaseModels/KubernetesClusterOwnerTeam.ts +464 -0
  6. package/Models/DatabaseModels/KubernetesClusterOwnerUser.ts +463 -0
  7. package/Models/DatabaseModels/KubernetesResource.ts +548 -0
  8. package/Models/DatabaseModels/MetricPipelineRule.ts +804 -0
  9. package/Models/DatabaseModels/MetricRecordingRule.ts +470 -0
  10. package/Models/DatabaseModels/Monitor.ts +2 -0
  11. package/Models/DatabaseModels/Project.ts +83 -0
  12. package/Models/DatabaseModels/Service.ts +79 -0
  13. package/Models/DatabaseModels/TelegramLog.ts +1025 -0
  14. package/Models/DatabaseModels/TraceDropFilter.ts +508 -0
  15. package/Models/DatabaseModels/TracePipeline.ts +436 -0
  16. package/Models/DatabaseModels/TracePipelineProcessor.ts +454 -0
  17. package/Models/DatabaseModels/TraceRecordingRule.ts +470 -0
  18. package/Models/DatabaseModels/TraceScrubRule.ts +546 -0
  19. package/Models/DatabaseModels/UserNotificationRule.ts +49 -0
  20. package/Models/DatabaseModels/UserNotificationSetting.ts +17 -0
  21. package/Models/DatabaseModels/UserOnCallLogTimeline.ts +48 -0
  22. package/Models/DatabaseModels/UserTelegram.ts +312 -0
  23. package/Server/API/KubernetesResourceAPI.ts +129 -0
  24. package/Server/API/UserTelegramAPI.ts +167 -0
  25. package/Server/Infrastructure/Postgres/SchemaMigrations/1776504277320-MigrationName.ts +399 -0
  26. package/Server/Infrastructure/Postgres/SchemaMigrations/1776505976155-AddTracePipelineTables.ts +205 -0
  27. package/Server/Infrastructure/Postgres/SchemaMigrations/1776509413763-MigrationName.ts +335 -0
  28. package/Server/Infrastructure/Postgres/SchemaMigrations/1776541018853-MigrationName.ts +29 -0
  29. package/Server/Infrastructure/Postgres/SchemaMigrations/1776544084793-MigrationName.ts +53 -0
  30. package/Server/Infrastructure/Postgres/SchemaMigrations/1776761171349-MigrationName.ts +325 -0
  31. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +12 -1
  32. package/Server/Services/DockerHostOwnerTeamService.ts +10 -0
  33. package/Server/Services/DockerHostOwnerUserService.ts +10 -0
  34. package/Server/Services/Index.ts +6 -0
  35. package/Server/Services/KubernetesClusterOwnerTeamService.ts +10 -0
  36. package/Server/Services/KubernetesClusterOwnerUserService.ts +10 -0
  37. package/Server/Services/KubernetesResourceService.ts +351 -0
  38. package/Server/Services/MetricPipelineRuleService.ts +10 -0
  39. package/Server/Services/MetricRecordingRuleService.ts +10 -0
  40. package/Server/Services/TelegramLogService.ts +15 -0
  41. package/Server/Services/TelegramService.ts +139 -0
  42. package/Server/Services/TraceDropFilterService.ts +10 -0
  43. package/Server/Services/TracePipelineProcessorService.ts +10 -0
  44. package/Server/Services/TracePipelineService.ts +10 -0
  45. package/Server/Services/TraceRecordingRuleService.ts +10 -0
  46. package/Server/Services/TraceScrubRuleService.ts +10 -0
  47. package/Server/Services/UserNotificationRuleService.ts +350 -1
  48. package/Server/Services/UserNotificationSettingService.ts +114 -0
  49. package/Server/Services/UserTelegramService.ts +140 -0
  50. package/Server/Utils/Monitor/Criteria/CompareCriteria.ts +71 -9
  51. package/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.ts +483 -75
  52. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +379 -6
  53. package/Server/Utils/Monitor/MonitorResource.ts +29 -15
  54. package/Server/Utils/Monitor/MonitorTemplateUtil.ts +29 -16
  55. package/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.test.ts +502 -0
  56. package/Tests/Types/Date.test.ts +158 -0
  57. package/Tests/Utils/MetricUnitUtil.test.ts +216 -0
  58. package/Tests/Utils/Metrics/MetricFormulaEvaluator.test.ts +269 -0
  59. package/Tests/Utils/Metrics/MetricResultUnitConverter.test.ts +231 -0
  60. package/Tests/Utils/RecordingRuleExpression.test.ts +177 -0
  61. package/Types/Date.ts +12 -3
  62. package/Types/Icon/IconProp.ts +1 -0
  63. package/Types/Kubernetes/KubernetesInventoryExtractor.ts +327 -0
  64. package/Types/Kubernetes/KubernetesObjectParser.ts +1949 -0
  65. package/Types/Metrics/MetricDownsamplingRetentionDays.ts +49 -0
  66. package/Types/Metrics/MetricFormulaConfigData.ts +4 -0
  67. package/Types/Metrics/MetricPipelineRuleFilterCondition.ts +136 -0
  68. package/Types/Metrics/MetricPipelineRuleType.ts +27 -0
  69. package/Types/Metrics/RecordingRuleDefinition.ts +180 -0
  70. package/Types/Monitor/CriteriaFilter.ts +43 -0
  71. package/Types/Monitor/MetricMonitor/MetricCriteriaContext.ts +70 -0
  72. package/Types/Permission.ts +531 -0
  73. package/Types/Telegram/TelegramMessage.ts +9 -0
  74. package/Types/TelegramStatus.ts +14 -0
  75. package/Types/Trace/TraceAggregationType.ts +17 -0
  76. package/Types/Trace/TraceDropFilterAction.ts +6 -0
  77. package/Types/Trace/TracePipelineProcessorType.ts +56 -0
  78. package/Types/Trace/TraceRecordingRuleDefinition.ts +218 -0
  79. package/Types/Trace/TraceScrubAction.ts +7 -0
  80. package/Types/Trace/TraceScrubField.ts +8 -0
  81. package/Types/Trace/TraceScrubPatternType.ts +10 -0
  82. package/UI/Components/CardSelect/CardSelect.tsx +9 -1
  83. package/UI/Components/Charts/ChartGroup/ChartGroup.tsx +6 -10
  84. package/UI/Components/Forms/Fields/FormField.tsx +1 -0
  85. package/UI/Components/Forms/Types/Field.ts +1 -0
  86. package/UI/Components/Icon/Icon.tsx +15 -0
  87. package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +57 -0
  88. package/UI/Components/Page/Page.tsx +6 -0
  89. package/Utils/MetricUnitUtil.ts +289 -0
  90. package/Utils/Metrics/MetricFormulaEvaluator.ts +610 -0
  91. package/Utils/Metrics/MetricResultUnitConverter.ts +91 -0
  92. package/Utils/Metrics/RecordingRuleExpression.ts +359 -0
  93. package/Utils/ValueFormatter.ts +137 -13
  94. package/build/dist/Models/DatabaseModels/DockerHostOwnerTeam.js +480 -0
  95. package/build/dist/Models/DatabaseModels/DockerHostOwnerTeam.js.map +1 -0
  96. package/build/dist/Models/DatabaseModels/DockerHostOwnerUser.js +479 -0
  97. package/build/dist/Models/DatabaseModels/DockerHostOwnerUser.js.map +1 -0
  98. package/build/dist/Models/DatabaseModels/GlobalConfig.js +59 -0
  99. package/build/dist/Models/DatabaseModels/GlobalConfig.js.map +1 -1
  100. package/build/dist/Models/DatabaseModels/Index.js +28 -0
  101. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  102. package/build/dist/Models/DatabaseModels/KubernetesClusterOwnerTeam.js +480 -0
  103. package/build/dist/Models/DatabaseModels/KubernetesClusterOwnerTeam.js.map +1 -0
  104. package/build/dist/Models/DatabaseModels/KubernetesClusterOwnerUser.js +479 -0
  105. package/build/dist/Models/DatabaseModels/KubernetesClusterOwnerUser.js.map +1 -0
  106. package/build/dist/Models/DatabaseModels/KubernetesResource.js +590 -0
  107. package/build/dist/Models/DatabaseModels/KubernetesResource.js.map +1 -0
  108. package/build/dist/Models/DatabaseModels/MetricPipelineRule.js +836 -0
  109. package/build/dist/Models/DatabaseModels/MetricPipelineRule.js.map +1 -0
  110. package/build/dist/Models/DatabaseModels/MetricRecordingRule.js +497 -0
  111. package/build/dist/Models/DatabaseModels/MetricRecordingRule.js.map +1 -0
  112. package/build/dist/Models/DatabaseModels/Monitor.js +2 -0
  113. package/build/dist/Models/DatabaseModels/Monitor.js.map +1 -1
  114. package/build/dist/Models/DatabaseModels/Project.js +85 -0
  115. package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
  116. package/build/dist/Models/DatabaseModels/Service.js +79 -0
  117. package/build/dist/Models/DatabaseModels/Service.js.map +1 -1
  118. package/build/dist/Models/DatabaseModels/TelegramLog.js +1056 -0
  119. package/build/dist/Models/DatabaseModels/TelegramLog.js.map +1 -0
  120. package/build/dist/Models/DatabaseModels/TraceDropFilter.js +536 -0
  121. package/build/dist/Models/DatabaseModels/TraceDropFilter.js.map +1 -0
  122. package/build/dist/Models/DatabaseModels/TracePipeline.js +462 -0
  123. package/build/dist/Models/DatabaseModels/TracePipeline.js.map +1 -0
  124. package/build/dist/Models/DatabaseModels/TracePipelineProcessor.js +476 -0
  125. package/build/dist/Models/DatabaseModels/TracePipelineProcessor.js.map +1 -0
  126. package/build/dist/Models/DatabaseModels/TraceRecordingRule.js +497 -0
  127. package/build/dist/Models/DatabaseModels/TraceRecordingRule.js.map +1 -0
  128. package/build/dist/Models/DatabaseModels/TraceScrubRule.js +575 -0
  129. package/build/dist/Models/DatabaseModels/TraceScrubRule.js.map +1 -0
  130. package/build/dist/Models/DatabaseModels/UserNotificationRule.js +49 -0
  131. package/build/dist/Models/DatabaseModels/UserNotificationRule.js.map +1 -1
  132. package/build/dist/Models/DatabaseModels/UserNotificationSetting.js +19 -0
  133. package/build/dist/Models/DatabaseModels/UserNotificationSetting.js.map +1 -1
  134. package/build/dist/Models/DatabaseModels/UserOnCallLogTimeline.js +48 -0
  135. package/build/dist/Models/DatabaseModels/UserOnCallLogTimeline.js.map +1 -1
  136. package/build/dist/Models/DatabaseModels/UserTelegram.js +331 -0
  137. package/build/dist/Models/DatabaseModels/UserTelegram.js.map +1 -0
  138. package/build/dist/Server/API/KubernetesResourceAPI.js +98 -0
  139. package/build/dist/Server/API/KubernetesResourceAPI.js.map +1 -0
  140. package/build/dist/Server/API/UserTelegramAPI.js +99 -0
  141. package/build/dist/Server/API/UserTelegramAPI.js.map +1 -0
  142. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776504277320-MigrationName.js +144 -0
  143. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776504277320-MigrationName.js.map +1 -0
  144. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776505976155-AddTracePipelineTables.js +82 -0
  145. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776505976155-AddTracePipelineTables.js.map +1 -0
  146. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776509413763-MigrationName.js +118 -0
  147. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776509413763-MigrationName.js.map +1 -0
  148. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776541018853-MigrationName.js +16 -0
  149. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776541018853-MigrationName.js.map +1 -0
  150. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776544084793-MigrationName.js +24 -0
  151. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776544084793-MigrationName.js.map +1 -0
  152. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776761171349-MigrationName.js +116 -0
  153. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776761171349-MigrationName.js.map +1 -0
  154. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +12 -0
  155. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  156. package/build/dist/Server/Services/DockerHostOwnerTeamService.js +9 -0
  157. package/build/dist/Server/Services/DockerHostOwnerTeamService.js.map +1 -0
  158. package/build/dist/Server/Services/DockerHostOwnerUserService.js +9 -0
  159. package/build/dist/Server/Services/DockerHostOwnerUserService.js.map +1 -0
  160. package/build/dist/Server/Services/Index.js +6 -0
  161. package/build/dist/Server/Services/Index.js.map +1 -1
  162. package/build/dist/Server/Services/KubernetesClusterOwnerTeamService.js +9 -0
  163. package/build/dist/Server/Services/KubernetesClusterOwnerTeamService.js.map +1 -0
  164. package/build/dist/Server/Services/KubernetesClusterOwnerUserService.js +9 -0
  165. package/build/dist/Server/Services/KubernetesClusterOwnerUserService.js.map +1 -0
  166. package/build/dist/Server/Services/KubernetesResourceService.js +237 -0
  167. package/build/dist/Server/Services/KubernetesResourceService.js.map +1 -0
  168. package/build/dist/Server/Services/MetricPipelineRuleService.js +9 -0
  169. package/build/dist/Server/Services/MetricPipelineRuleService.js.map +1 -0
  170. package/build/dist/Server/Services/MetricRecordingRuleService.js +9 -0
  171. package/build/dist/Server/Services/MetricRecordingRuleService.js.map +1 -0
  172. package/build/dist/Server/Services/TelegramLogService.js +13 -0
  173. package/build/dist/Server/Services/TelegramLogService.js.map +1 -0
  174. package/build/dist/Server/Services/TelegramService.js +100 -0
  175. package/build/dist/Server/Services/TelegramService.js.map +1 -0
  176. package/build/dist/Server/Services/TraceDropFilterService.js +9 -0
  177. package/build/dist/Server/Services/TraceDropFilterService.js.map +1 -0
  178. package/build/dist/Server/Services/TracePipelineProcessorService.js +9 -0
  179. package/build/dist/Server/Services/TracePipelineProcessorService.js.map +1 -0
  180. package/build/dist/Server/Services/TracePipelineService.js +9 -0
  181. package/build/dist/Server/Services/TracePipelineService.js.map +1 -0
  182. package/build/dist/Server/Services/TraceRecordingRuleService.js +9 -0
  183. package/build/dist/Server/Services/TraceRecordingRuleService.js.map +1 -0
  184. package/build/dist/Server/Services/TraceScrubRuleService.js +9 -0
  185. package/build/dist/Server/Services/TraceScrubRuleService.js.map +1 -0
  186. package/build/dist/Server/Services/UserNotificationRuleService.js +272 -21
  187. package/build/dist/Server/Services/UserNotificationRuleService.js.map +1 -1
  188. package/build/dist/Server/Services/UserNotificationSettingService.js +94 -0
  189. package/build/dist/Server/Services/UserNotificationSettingService.js.map +1 -1
  190. package/build/dist/Server/Services/UserTelegramService.js +133 -0
  191. package/build/dist/Server/Services/UserTelegramService.js.map +1 -0
  192. package/build/dist/Server/Utils/Monitor/Criteria/CompareCriteria.js +56 -9
  193. package/build/dist/Server/Utils/Monitor/Criteria/CompareCriteria.js.map +1 -1
  194. package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js +335 -53
  195. package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js.map +1 -1
  196. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +277 -5
  197. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  198. package/build/dist/Server/Utils/Monitor/MonitorResource.js +25 -12
  199. package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
  200. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +24 -12
  201. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
  202. package/build/dist/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.test.js +407 -0
  203. package/build/dist/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.test.js.map +1 -0
  204. package/build/dist/Tests/Types/Date.test.js +96 -0
  205. package/build/dist/Tests/Types/Date.test.js.map +1 -1
  206. package/build/dist/Tests/Utils/MetricUnitUtil.test.js +159 -0
  207. package/build/dist/Tests/Utils/MetricUnitUtil.test.js.map +1 -0
  208. package/build/dist/Tests/Utils/Metrics/MetricFormulaEvaluator.test.js +224 -0
  209. package/build/dist/Tests/Utils/Metrics/MetricFormulaEvaluator.test.js.map +1 -0
  210. package/build/dist/Tests/Utils/Metrics/MetricResultUnitConverter.test.js +180 -0
  211. package/build/dist/Tests/Utils/Metrics/MetricResultUnitConverter.test.js.map +1 -0
  212. package/build/dist/Tests/Utils/RecordingRuleExpression.test.js +142 -0
  213. package/build/dist/Tests/Utils/RecordingRuleExpression.test.js.map +1 -0
  214. package/build/dist/Types/Date.js +9 -3
  215. package/build/dist/Types/Date.js.map +1 -1
  216. package/build/dist/Types/Icon/IconProp.js +1 -0
  217. package/build/dist/Types/Icon/IconProp.js.map +1 -1
  218. package/build/dist/Types/Kubernetes/KubernetesInventoryExtractor.js +200 -0
  219. package/build/dist/Types/Kubernetes/KubernetesInventoryExtractor.js.map +1 -0
  220. package/build/dist/Types/Kubernetes/KubernetesObjectParser.js +1205 -0
  221. package/build/dist/Types/Kubernetes/KubernetesObjectParser.js.map +1 -0
  222. package/build/dist/Types/Metrics/MetricDownsamplingRetentionDays.js +32 -0
  223. package/build/dist/Types/Metrics/MetricDownsamplingRetentionDays.js.map +1 -0
  224. package/build/dist/Types/Metrics/MetricPipelineRuleFilterCondition.js +103 -0
  225. package/build/dist/Types/Metrics/MetricPipelineRuleFilterCondition.js.map +1 -0
  226. package/build/dist/Types/Metrics/MetricPipelineRuleType.js +27 -0
  227. package/build/dist/Types/Metrics/MetricPipelineRuleType.js.map +1 -0
  228. package/build/dist/Types/Metrics/RecordingRuleDefinition.js +110 -0
  229. package/build/dist/Types/Metrics/RecordingRuleDefinition.js.map +1 -0
  230. package/build/dist/Types/Monitor/CriteriaFilter.js +22 -0
  231. package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
  232. package/build/dist/Types/Monitor/MetricMonitor/MetricCriteriaContext.js +2 -0
  233. package/build/dist/Types/Monitor/MetricMonitor/MetricCriteriaContext.js.map +1 -0
  234. package/build/dist/Types/Permission.js +464 -0
  235. package/build/dist/Types/Permission.js.map +1 -1
  236. package/build/dist/Types/Telegram/TelegramMessage.js +2 -0
  237. package/build/dist/Types/Telegram/TelegramMessage.js.map +1 -0
  238. package/build/dist/Types/TelegramStatus.js +15 -0
  239. package/build/dist/Types/TelegramStatus.js.map +1 -0
  240. package/build/dist/Types/Trace/TraceAggregationType.js +18 -0
  241. package/build/dist/Types/Trace/TraceAggregationType.js.map +1 -0
  242. package/build/dist/Types/Trace/TraceDropFilterAction.js +7 -0
  243. package/build/dist/Types/Trace/TraceDropFilterAction.js.map +1 -0
  244. package/build/dist/Types/Trace/TracePipelineProcessorType.js +10 -0
  245. package/build/dist/Types/Trace/TracePipelineProcessorType.js.map +1 -0
  246. package/build/dist/Types/Trace/TraceRecordingRuleDefinition.js +145 -0
  247. package/build/dist/Types/Trace/TraceRecordingRuleDefinition.js.map +1 -0
  248. package/build/dist/Types/Trace/TraceScrubAction.js +8 -0
  249. package/build/dist/Types/Trace/TraceScrubAction.js.map +1 -0
  250. package/build/dist/Types/Trace/TraceScrubField.js +9 -0
  251. package/build/dist/Types/Trace/TraceScrubField.js.map +1 -0
  252. package/build/dist/Types/Trace/TraceScrubPatternType.js +11 -0
  253. package/build/dist/Types/Trace/TraceScrubPatternType.js.map +1 -0
  254. package/build/dist/UI/Components/CardSelect/CardSelect.js +3 -1
  255. package/build/dist/UI/Components/CardSelect/CardSelect.js.map +1 -1
  256. package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js +6 -9
  257. package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js.map +1 -1
  258. package/build/dist/UI/Components/Forms/Fields/FormField.js +1 -1
  259. package/build/dist/UI/Components/Forms/Fields/FormField.js.map +1 -1
  260. package/build/dist/UI/Components/Icon/Icon.js +5 -0
  261. package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
  262. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js +30 -0
  263. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js.map +1 -1
  264. package/build/dist/UI/Components/Page/Page.js +1 -0
  265. package/build/dist/UI/Components/Page/Page.js.map +1 -1
  266. package/build/dist/Utils/MetricUnitUtil.js +232 -0
  267. package/build/dist/Utils/MetricUnitUtil.js.map +1 -0
  268. package/build/dist/Utils/Metrics/MetricFormulaEvaluator.js +453 -0
  269. package/build/dist/Utils/Metrics/MetricFormulaEvaluator.js.map +1 -0
  270. package/build/dist/Utils/Metrics/MetricResultUnitConverter.js +61 -0
  271. package/build/dist/Utils/Metrics/MetricResultUnitConverter.js.map +1 -0
  272. package/build/dist/Utils/Metrics/RecordingRuleExpression.js +298 -0
  273. package/build/dist/Utils/Metrics/RecordingRuleExpression.js.map +1 -0
  274. package/build/dist/Utils/ValueFormatter.js +123 -13
  275. package/build/dist/Utils/ValueFormatter.js.map +1 -1
  276. package/package.json +2 -2
@@ -0,0 +1,804 @@
1
+ import Project from "./Project";
2
+ import Service from "./Service";
3
+ import User from "./User";
4
+ import BaseModel from "./DatabaseBaseModel/DatabaseBaseModel";
5
+ import Route from "../../Types/API/Route";
6
+ import ColumnAccessControl from "../../Types/Database/AccessControl/ColumnAccessControl";
7
+ import TableAccessControl from "../../Types/Database/AccessControl/TableAccessControl";
8
+ import TableBillingAccessControl from "../../Types/Database/AccessControl/TableBillingAccessControl";
9
+ import ColumnLength from "../../Types/Database/ColumnLength";
10
+ import ColumnType from "../../Types/Database/ColumnType";
11
+ import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
12
+ import EnableDocumentation from "../../Types/Database/EnableDocumentation";
13
+ import TableColumn from "../../Types/Database/TableColumn";
14
+ import TableColumnType from "../../Types/Database/TableColumnType";
15
+ import TableMetadata from "../../Types/Database/TableMetadata";
16
+ import TenantColumn from "../../Types/Database/TenantColumn";
17
+ import IconProp from "../../Types/Icon/IconProp";
18
+ import ObjectID from "../../Types/ObjectID";
19
+ import Permission from "../../Types/Permission";
20
+ import MetricPipelineRuleType from "../../Types/Metrics/MetricPipelineRuleType";
21
+ import MetricPipelineRuleFilterCondition from "../../Types/Metrics/MetricPipelineRuleFilterCondition";
22
+ import FilterCondition from "../../Types/Filter/FilterCondition";
23
+ import { PlanType } from "../../Types/Billing/SubscriptionPlan";
24
+ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
25
+
26
+ @EnableDocumentation()
27
+ @TableBillingAccessControl({
28
+ create: PlanType.Free,
29
+ read: PlanType.Free,
30
+ update: PlanType.Free,
31
+ delete: PlanType.Free,
32
+ })
33
+ @TenantColumn("projectId")
34
+ @CrudApiEndpoint(new Route("/metric-pipeline-rule"))
35
+ @Entity({
36
+ name: "MetricPipelineRule",
37
+ })
38
+ @TableMetadata({
39
+ tableName: "MetricPipelineRule",
40
+ singularName: "Metric Pipeline Rule",
41
+ pluralName: "Metric Pipeline Rules",
42
+ icon: IconProp.Filter,
43
+ tableDescription:
44
+ "Rules applied at metric ingest time to filter, drop, rename, enrich, redact, or sample metric data points.",
45
+ })
46
+ @TableAccessControl({
47
+ create: [
48
+ Permission.ProjectOwner,
49
+ Permission.ProjectAdmin,
50
+ Permission.CreateProjectMetricPipelineRule,
51
+ ],
52
+ read: [
53
+ Permission.ProjectOwner,
54
+ Permission.ProjectAdmin,
55
+ Permission.ProjectMember,
56
+ Permission.Viewer,
57
+ Permission.TelemetryManager,
58
+ Permission.ReadProjectMetricPipelineRule,
59
+ Permission.ReadAllProjectResources,
60
+ ],
61
+ delete: [
62
+ Permission.ProjectOwner,
63
+ Permission.ProjectAdmin,
64
+ Permission.DeleteProjectMetricPipelineRule,
65
+ ],
66
+ update: [
67
+ Permission.ProjectOwner,
68
+ Permission.ProjectAdmin,
69
+ Permission.EditProjectMetricPipelineRule,
70
+ ],
71
+ })
72
+ export default class MetricPipelineRule extends BaseModel {
73
+ @ColumnAccessControl({
74
+ create: [
75
+ Permission.ProjectOwner,
76
+ Permission.ProjectAdmin,
77
+ Permission.CreateProjectMetricPipelineRule,
78
+ ],
79
+ read: [
80
+ Permission.ProjectOwner,
81
+ Permission.ProjectAdmin,
82
+ Permission.ProjectMember,
83
+ Permission.Viewer,
84
+ Permission.TelemetryManager,
85
+ Permission.ReadProjectMetricPipelineRule,
86
+ Permission.ReadAllProjectResources,
87
+ ],
88
+ update: [],
89
+ })
90
+ @TableColumn({
91
+ manyToOneRelationColumn: "projectId",
92
+ type: TableColumnType.Entity,
93
+ modelType: Project,
94
+ title: "Project",
95
+ description:
96
+ "Relation to the project this metric pipeline rule belongs to.",
97
+ })
98
+ @ManyToOne(
99
+ () => {
100
+ return Project;
101
+ },
102
+ {
103
+ eager: false,
104
+ nullable: true,
105
+ onDelete: "CASCADE",
106
+ orphanedRowAction: "nullify",
107
+ },
108
+ )
109
+ @JoinColumn({ name: "projectId" })
110
+ public project?: Project = undefined;
111
+
112
+ @ColumnAccessControl({
113
+ create: [
114
+ Permission.ProjectOwner,
115
+ Permission.ProjectAdmin,
116
+ Permission.CreateProjectMetricPipelineRule,
117
+ ],
118
+ read: [
119
+ Permission.ProjectOwner,
120
+ Permission.ProjectAdmin,
121
+ Permission.ProjectMember,
122
+ Permission.Viewer,
123
+ Permission.TelemetryManager,
124
+ Permission.ReadProjectMetricPipelineRule,
125
+ Permission.ReadAllProjectResources,
126
+ ],
127
+ update: [],
128
+ })
129
+ @Index()
130
+ @TableColumn({
131
+ type: TableColumnType.ObjectID,
132
+ required: true,
133
+ canReadOnRelationQuery: true,
134
+ title: "Project ID",
135
+ description: "ID of the project this metric pipeline rule belongs to.",
136
+ })
137
+ @Column({
138
+ type: ColumnType.ObjectID,
139
+ nullable: false,
140
+ transformer: ObjectID.getDatabaseTransformer(),
141
+ })
142
+ public projectId?: ObjectID = undefined;
143
+
144
+ @ColumnAccessControl({
145
+ create: [
146
+ Permission.ProjectOwner,
147
+ Permission.ProjectAdmin,
148
+ Permission.CreateProjectMetricPipelineRule,
149
+ ],
150
+ read: [
151
+ Permission.ProjectOwner,
152
+ Permission.ProjectAdmin,
153
+ Permission.ProjectMember,
154
+ Permission.Viewer,
155
+ Permission.TelemetryManager,
156
+ Permission.ReadProjectMetricPipelineRule,
157
+ Permission.ReadAllProjectResources,
158
+ ],
159
+ update: [
160
+ Permission.ProjectOwner,
161
+ Permission.ProjectAdmin,
162
+ Permission.EditProjectMetricPipelineRule,
163
+ ],
164
+ })
165
+ @TableColumn({
166
+ manyToOneRelationColumn: "serviceId",
167
+ type: TableColumnType.Entity,
168
+ modelType: Service,
169
+ required: false,
170
+ title: "Service",
171
+ description:
172
+ "Optional service scope. When set, the rule only applies to metrics for this service. Leave empty for project-wide rules.",
173
+ })
174
+ @ManyToOne(
175
+ () => {
176
+ return Service;
177
+ },
178
+ {
179
+ eager: false,
180
+ nullable: true,
181
+ onDelete: "CASCADE",
182
+ orphanedRowAction: "nullify",
183
+ },
184
+ )
185
+ @JoinColumn({ name: "serviceId" })
186
+ public service?: Service = undefined;
187
+
188
+ @ColumnAccessControl({
189
+ create: [
190
+ Permission.ProjectOwner,
191
+ Permission.ProjectAdmin,
192
+ Permission.CreateProjectMetricPipelineRule,
193
+ ],
194
+ read: [
195
+ Permission.ProjectOwner,
196
+ Permission.ProjectAdmin,
197
+ Permission.ProjectMember,
198
+ Permission.Viewer,
199
+ Permission.TelemetryManager,
200
+ Permission.ReadProjectMetricPipelineRule,
201
+ Permission.ReadAllProjectResources,
202
+ ],
203
+ update: [
204
+ Permission.ProjectOwner,
205
+ Permission.ProjectAdmin,
206
+ Permission.EditProjectMetricPipelineRule,
207
+ ],
208
+ })
209
+ @Index()
210
+ @TableColumn({
211
+ type: TableColumnType.ObjectID,
212
+ required: false,
213
+ canReadOnRelationQuery: true,
214
+ title: "Service ID",
215
+ description:
216
+ "Optional service ID scoping this rule. Null means the rule is project-wide.",
217
+ })
218
+ @Column({
219
+ type: ColumnType.ObjectID,
220
+ nullable: true,
221
+ transformer: ObjectID.getDatabaseTransformer(),
222
+ })
223
+ public serviceId?: ObjectID = undefined;
224
+
225
+ @ColumnAccessControl({
226
+ create: [
227
+ Permission.ProjectOwner,
228
+ Permission.ProjectAdmin,
229
+ Permission.CreateProjectMetricPipelineRule,
230
+ ],
231
+ read: [
232
+ Permission.ProjectOwner,
233
+ Permission.ProjectAdmin,
234
+ Permission.ProjectMember,
235
+ Permission.Viewer,
236
+ Permission.TelemetryManager,
237
+ Permission.ReadProjectMetricPipelineRule,
238
+ Permission.ReadAllProjectResources,
239
+ ],
240
+ update: [
241
+ Permission.ProjectOwner,
242
+ Permission.ProjectAdmin,
243
+ Permission.EditProjectMetricPipelineRule,
244
+ ],
245
+ })
246
+ @TableColumn({
247
+ required: true,
248
+ type: TableColumnType.Name,
249
+ canReadOnRelationQuery: true,
250
+ title: "Name",
251
+ description: "Friendly name for this rule.",
252
+ })
253
+ @Column({
254
+ nullable: false,
255
+ type: ColumnType.Name,
256
+ length: ColumnLength.Name,
257
+ })
258
+ public name?: string = undefined;
259
+
260
+ @ColumnAccessControl({
261
+ create: [
262
+ Permission.ProjectOwner,
263
+ Permission.ProjectAdmin,
264
+ Permission.CreateProjectMetricPipelineRule,
265
+ ],
266
+ read: [
267
+ Permission.ProjectOwner,
268
+ Permission.ProjectAdmin,
269
+ Permission.ProjectMember,
270
+ Permission.Viewer,
271
+ Permission.TelemetryManager,
272
+ Permission.ReadProjectMetricPipelineRule,
273
+ Permission.ReadAllProjectResources,
274
+ ],
275
+ update: [
276
+ Permission.ProjectOwner,
277
+ Permission.ProjectAdmin,
278
+ Permission.EditProjectMetricPipelineRule,
279
+ ],
280
+ })
281
+ @TableColumn({
282
+ required: false,
283
+ type: TableColumnType.LongText,
284
+ canReadOnRelationQuery: true,
285
+ title: "Description",
286
+ description: "Description of what this rule does.",
287
+ })
288
+ @Column({
289
+ nullable: true,
290
+ type: ColumnType.LongText,
291
+ length: ColumnLength.LongText,
292
+ })
293
+ public description?: string = undefined;
294
+
295
+ @ColumnAccessControl({
296
+ create: [
297
+ Permission.ProjectOwner,
298
+ Permission.ProjectAdmin,
299
+ Permission.CreateProjectMetricPipelineRule,
300
+ ],
301
+ read: [
302
+ Permission.ProjectOwner,
303
+ Permission.ProjectAdmin,
304
+ Permission.ProjectMember,
305
+ Permission.Viewer,
306
+ Permission.TelemetryManager,
307
+ Permission.ReadProjectMetricPipelineRule,
308
+ Permission.ReadAllProjectResources,
309
+ ],
310
+ update: [
311
+ Permission.ProjectOwner,
312
+ Permission.ProjectAdmin,
313
+ Permission.EditProjectMetricPipelineRule,
314
+ ],
315
+ })
316
+ @TableColumn({
317
+ required: true,
318
+ type: TableColumnType.ShortText,
319
+ canReadOnRelationQuery: true,
320
+ title: "Rule Type",
321
+ description:
322
+ "One of: Filter, Drop, RenameMetric, RenameAttribute, AddAttribute, RemoveAttribute, RedactAttribute, Sample.",
323
+ })
324
+ @Column({
325
+ nullable: false,
326
+ type: ColumnType.ShortText,
327
+ length: ColumnLength.ShortText,
328
+ })
329
+ public ruleType?: MetricPipelineRuleType = undefined;
330
+
331
+ @ColumnAccessControl({
332
+ create: [
333
+ Permission.ProjectOwner,
334
+ Permission.ProjectAdmin,
335
+ Permission.CreateProjectMetricPipelineRule,
336
+ ],
337
+ read: [
338
+ Permission.ProjectOwner,
339
+ Permission.ProjectAdmin,
340
+ Permission.ProjectMember,
341
+ Permission.Viewer,
342
+ Permission.TelemetryManager,
343
+ Permission.ReadProjectMetricPipelineRule,
344
+ Permission.ReadAllProjectResources,
345
+ ],
346
+ update: [
347
+ Permission.ProjectOwner,
348
+ Permission.ProjectAdmin,
349
+ Permission.EditProjectMetricPipelineRule,
350
+ ],
351
+ })
352
+ @TableColumn({
353
+ required: true,
354
+ type: TableColumnType.ShortText,
355
+ title: "Filter Condition",
356
+ description:
357
+ "How to combine filters: 'All' requires every filter to match (AND), 'Any' requires at least one to match (OR).",
358
+ defaultValue: FilterCondition.All,
359
+ })
360
+ @Column({
361
+ nullable: false,
362
+ type: ColumnType.ShortText,
363
+ length: ColumnLength.ShortText,
364
+ default: FilterCondition.All,
365
+ })
366
+ public filterCondition?: FilterCondition = undefined;
367
+
368
+ @ColumnAccessControl({
369
+ create: [
370
+ Permission.ProjectOwner,
371
+ Permission.ProjectAdmin,
372
+ Permission.CreateProjectMetricPipelineRule,
373
+ ],
374
+ read: [
375
+ Permission.ProjectOwner,
376
+ Permission.ProjectAdmin,
377
+ Permission.ProjectMember,
378
+ Permission.Viewer,
379
+ Permission.TelemetryManager,
380
+ Permission.ReadProjectMetricPipelineRule,
381
+ Permission.ReadAllProjectResources,
382
+ ],
383
+ update: [
384
+ Permission.ProjectOwner,
385
+ Permission.ProjectAdmin,
386
+ Permission.EditProjectMetricPipelineRule,
387
+ ],
388
+ })
389
+ @TableColumn({
390
+ required: false,
391
+ type: TableColumnType.JSON,
392
+ title: "Filters",
393
+ description:
394
+ "List of filters evaluated against each metric data point. An empty list matches every data point.",
395
+ })
396
+ @Column({
397
+ nullable: true,
398
+ type: ColumnType.JSON,
399
+ })
400
+ public filters?: Array<MetricPipelineRuleFilterCondition> = undefined;
401
+
402
+ @ColumnAccessControl({
403
+ create: [
404
+ Permission.ProjectOwner,
405
+ Permission.ProjectAdmin,
406
+ Permission.CreateProjectMetricPipelineRule,
407
+ ],
408
+ read: [
409
+ Permission.ProjectOwner,
410
+ Permission.ProjectAdmin,
411
+ Permission.ProjectMember,
412
+ Permission.Viewer,
413
+ Permission.TelemetryManager,
414
+ Permission.ReadProjectMetricPipelineRule,
415
+ Permission.ReadAllProjectResources,
416
+ ],
417
+ update: [
418
+ Permission.ProjectOwner,
419
+ Permission.ProjectAdmin,
420
+ Permission.EditProjectMetricPipelineRule,
421
+ ],
422
+ })
423
+ @TableColumn({
424
+ required: false,
425
+ type: TableColumnType.ShortText,
426
+ title: "Rename From Key",
427
+ description:
428
+ "For RenameMetric: the existing metric name. For RenameAttribute: the existing attribute key.",
429
+ })
430
+ @Column({
431
+ nullable: true,
432
+ type: ColumnType.ShortText,
433
+ length: ColumnLength.ShortText,
434
+ })
435
+ public renameFromKey?: string = undefined;
436
+
437
+ @ColumnAccessControl({
438
+ create: [
439
+ Permission.ProjectOwner,
440
+ Permission.ProjectAdmin,
441
+ Permission.CreateProjectMetricPipelineRule,
442
+ ],
443
+ read: [
444
+ Permission.ProjectOwner,
445
+ Permission.ProjectAdmin,
446
+ Permission.ProjectMember,
447
+ Permission.Viewer,
448
+ Permission.TelemetryManager,
449
+ Permission.ReadProjectMetricPipelineRule,
450
+ Permission.ReadAllProjectResources,
451
+ ],
452
+ update: [
453
+ Permission.ProjectOwner,
454
+ Permission.ProjectAdmin,
455
+ Permission.EditProjectMetricPipelineRule,
456
+ ],
457
+ })
458
+ @TableColumn({
459
+ required: false,
460
+ type: TableColumnType.ShortText,
461
+ title: "Rename To Key",
462
+ description:
463
+ "For RenameMetric: the new metric name. For RenameAttribute: the new attribute key.",
464
+ })
465
+ @Column({
466
+ nullable: true,
467
+ type: ColumnType.ShortText,
468
+ length: ColumnLength.ShortText,
469
+ })
470
+ public renameToKey?: string = undefined;
471
+
472
+ @ColumnAccessControl({
473
+ create: [
474
+ Permission.ProjectOwner,
475
+ Permission.ProjectAdmin,
476
+ Permission.CreateProjectMetricPipelineRule,
477
+ ],
478
+ read: [
479
+ Permission.ProjectOwner,
480
+ Permission.ProjectAdmin,
481
+ Permission.ProjectMember,
482
+ Permission.Viewer,
483
+ Permission.TelemetryManager,
484
+ Permission.ReadProjectMetricPipelineRule,
485
+ Permission.ReadAllProjectResources,
486
+ ],
487
+ update: [
488
+ Permission.ProjectOwner,
489
+ Permission.ProjectAdmin,
490
+ Permission.EditProjectMetricPipelineRule,
491
+ ],
492
+ })
493
+ @TableColumn({
494
+ required: false,
495
+ type: TableColumnType.ShortText,
496
+ title: "Add Attribute Key",
497
+ description:
498
+ "For AddAttribute / RemoveAttribute / RedactAttribute: the attribute key to act on.",
499
+ })
500
+ @Column({
501
+ nullable: true,
502
+ type: ColumnType.ShortText,
503
+ length: ColumnLength.ShortText,
504
+ })
505
+ public addAttributeKey?: string = undefined;
506
+
507
+ @ColumnAccessControl({
508
+ create: [
509
+ Permission.ProjectOwner,
510
+ Permission.ProjectAdmin,
511
+ Permission.CreateProjectMetricPipelineRule,
512
+ ],
513
+ read: [
514
+ Permission.ProjectOwner,
515
+ Permission.ProjectAdmin,
516
+ Permission.ProjectMember,
517
+ Permission.Viewer,
518
+ Permission.TelemetryManager,
519
+ Permission.ReadProjectMetricPipelineRule,
520
+ Permission.ReadAllProjectResources,
521
+ ],
522
+ update: [
523
+ Permission.ProjectOwner,
524
+ Permission.ProjectAdmin,
525
+ Permission.EditProjectMetricPipelineRule,
526
+ ],
527
+ })
528
+ @TableColumn({
529
+ required: false,
530
+ type: TableColumnType.LongText,
531
+ title: "Add Attribute Value",
532
+ description: "For AddAttribute: the attribute value to set.",
533
+ })
534
+ @Column({
535
+ nullable: true,
536
+ type: ColumnType.LongText,
537
+ length: ColumnLength.LongText,
538
+ })
539
+ public addAttributeValue?: string = undefined;
540
+
541
+ @ColumnAccessControl({
542
+ create: [
543
+ Permission.ProjectOwner,
544
+ Permission.ProjectAdmin,
545
+ Permission.CreateProjectMetricPipelineRule,
546
+ ],
547
+ read: [
548
+ Permission.ProjectOwner,
549
+ Permission.ProjectAdmin,
550
+ Permission.ProjectMember,
551
+ Permission.Viewer,
552
+ Permission.TelemetryManager,
553
+ Permission.ReadProjectMetricPipelineRule,
554
+ Permission.ReadAllProjectResources,
555
+ ],
556
+ update: [
557
+ Permission.ProjectOwner,
558
+ Permission.ProjectAdmin,
559
+ Permission.EditProjectMetricPipelineRule,
560
+ ],
561
+ })
562
+ @TableColumn({
563
+ required: false,
564
+ type: TableColumnType.ShortText,
565
+ title: "Redact Replacement",
566
+ description:
567
+ "For RedactAttribute: the literal string to replace the value with. Defaults to [REDACTED].",
568
+ })
569
+ @Column({
570
+ nullable: false,
571
+ type: ColumnType.ShortText,
572
+ length: ColumnLength.ShortText,
573
+ default: "[REDACTED]",
574
+ })
575
+ public redactReplacement?: string = undefined;
576
+
577
+ @ColumnAccessControl({
578
+ create: [
579
+ Permission.ProjectOwner,
580
+ Permission.ProjectAdmin,
581
+ Permission.CreateProjectMetricPipelineRule,
582
+ ],
583
+ read: [
584
+ Permission.ProjectOwner,
585
+ Permission.ProjectAdmin,
586
+ Permission.ProjectMember,
587
+ Permission.Viewer,
588
+ Permission.TelemetryManager,
589
+ Permission.ReadProjectMetricPipelineRule,
590
+ Permission.ReadAllProjectResources,
591
+ ],
592
+ update: [
593
+ Permission.ProjectOwner,
594
+ Permission.ProjectAdmin,
595
+ Permission.EditProjectMetricPipelineRule,
596
+ ],
597
+ })
598
+ @TableColumn({
599
+ required: false,
600
+ type: TableColumnType.Number,
601
+ title: "Sample Percentage",
602
+ description:
603
+ "For Sample: percentage of matched rows to keep (0-100). 100 keeps all.",
604
+ defaultValue: 100,
605
+ })
606
+ @Column({
607
+ type: ColumnType.Number,
608
+ nullable: false,
609
+ default: 100,
610
+ })
611
+ public samplePercentage?: number = undefined;
612
+
613
+ @ColumnAccessControl({
614
+ create: [
615
+ Permission.ProjectOwner,
616
+ Permission.ProjectAdmin,
617
+ Permission.CreateProjectMetricPipelineRule,
618
+ ],
619
+ read: [
620
+ Permission.ProjectOwner,
621
+ Permission.ProjectAdmin,
622
+ Permission.ProjectMember,
623
+ Permission.Viewer,
624
+ Permission.TelemetryManager,
625
+ Permission.ReadProjectMetricPipelineRule,
626
+ Permission.ReadAllProjectResources,
627
+ ],
628
+ update: [
629
+ Permission.ProjectOwner,
630
+ Permission.ProjectAdmin,
631
+ Permission.EditProjectMetricPipelineRule,
632
+ ],
633
+ })
634
+ @Index()
635
+ @TableColumn({
636
+ required: true,
637
+ type: TableColumnType.Boolean,
638
+ canReadOnRelationQuery: true,
639
+ title: "Enabled",
640
+ description: "Whether this rule is active.",
641
+ defaultValue: true,
642
+ })
643
+ @Column({
644
+ nullable: false,
645
+ type: ColumnType.Boolean,
646
+ default: true,
647
+ })
648
+ public isEnabled?: boolean = undefined;
649
+
650
+ @ColumnAccessControl({
651
+ create: [
652
+ Permission.ProjectOwner,
653
+ Permission.ProjectAdmin,
654
+ Permission.CreateProjectMetricPipelineRule,
655
+ ],
656
+ read: [
657
+ Permission.ProjectOwner,
658
+ Permission.ProjectAdmin,
659
+ Permission.ProjectMember,
660
+ Permission.Viewer,
661
+ Permission.TelemetryManager,
662
+ Permission.ReadProjectMetricPipelineRule,
663
+ Permission.ReadAllProjectResources,
664
+ ],
665
+ update: [
666
+ Permission.ProjectOwner,
667
+ Permission.ProjectAdmin,
668
+ Permission.EditProjectMetricPipelineRule,
669
+ ],
670
+ })
671
+ @TableColumn({
672
+ title: "Sort Order",
673
+ required: false,
674
+ type: TableColumnType.Number,
675
+ canReadOnRelationQuery: true,
676
+ description:
677
+ "Evaluation order within its scope (service-level or project-level).",
678
+ defaultValue: 0,
679
+ })
680
+ @Column({
681
+ type: ColumnType.Number,
682
+ nullable: false,
683
+ default: 0,
684
+ })
685
+ public sortOrder?: number = undefined;
686
+
687
+ @ColumnAccessControl({
688
+ create: [],
689
+ read: [
690
+ Permission.ProjectOwner,
691
+ Permission.ProjectAdmin,
692
+ Permission.ProjectMember,
693
+ Permission.Viewer,
694
+ Permission.TelemetryManager,
695
+ Permission.ReadProjectMetricPipelineRule,
696
+ Permission.ReadAllProjectResources,
697
+ ],
698
+ update: [],
699
+ })
700
+ @TableColumn({
701
+ manyToOneRelationColumn: "createdByUserId",
702
+ type: TableColumnType.Entity,
703
+ modelType: User,
704
+ title: "Created By User",
705
+ description: "Relation to the user who created this rule.",
706
+ })
707
+ @ManyToOne(
708
+ () => {
709
+ return User;
710
+ },
711
+ {
712
+ eager: false,
713
+ nullable: true,
714
+ onDelete: "SET NULL",
715
+ orphanedRowAction: "nullify",
716
+ },
717
+ )
718
+ @JoinColumn({ name: "createdByUserId" })
719
+ public createdByUser?: User = undefined;
720
+
721
+ @ColumnAccessControl({
722
+ create: [],
723
+ read: [
724
+ Permission.ProjectOwner,
725
+ Permission.ProjectAdmin,
726
+ Permission.ProjectMember,
727
+ Permission.Viewer,
728
+ Permission.TelemetryManager,
729
+ Permission.ReadProjectMetricPipelineRule,
730
+ Permission.ReadAllProjectResources,
731
+ ],
732
+ update: [],
733
+ })
734
+ @TableColumn({
735
+ type: TableColumnType.ObjectID,
736
+ title: "Created By User ID",
737
+ description: "ID of the user who created this rule.",
738
+ })
739
+ @Column({
740
+ type: ColumnType.ObjectID,
741
+ nullable: true,
742
+ transformer: ObjectID.getDatabaseTransformer(),
743
+ })
744
+ public createdByUserId?: ObjectID = undefined;
745
+
746
+ @ColumnAccessControl({
747
+ create: [],
748
+ read: [
749
+ Permission.ProjectOwner,
750
+ Permission.ProjectAdmin,
751
+ Permission.ProjectMember,
752
+ Permission.Viewer,
753
+ Permission.TelemetryManager,
754
+ Permission.ReadProjectMetricPipelineRule,
755
+ Permission.ReadAllProjectResources,
756
+ ],
757
+ update: [],
758
+ })
759
+ @TableColumn({
760
+ manyToOneRelationColumn: "deletedByUserId",
761
+ type: TableColumnType.Entity,
762
+ modelType: User,
763
+ title: "Deleted By User",
764
+ description: "Relation to the user who deleted this rule.",
765
+ })
766
+ @ManyToOne(
767
+ () => {
768
+ return User;
769
+ },
770
+ {
771
+ eager: false,
772
+ nullable: true,
773
+ onDelete: "SET NULL",
774
+ orphanedRowAction: "nullify",
775
+ },
776
+ )
777
+ @JoinColumn({ name: "deletedByUserId" })
778
+ public deletedByUser?: User = undefined;
779
+
780
+ @ColumnAccessControl({
781
+ create: [],
782
+ read: [
783
+ Permission.ProjectOwner,
784
+ Permission.ProjectAdmin,
785
+ Permission.ProjectMember,
786
+ Permission.Viewer,
787
+ Permission.TelemetryManager,
788
+ Permission.ReadProjectMetricPipelineRule,
789
+ Permission.ReadAllProjectResources,
790
+ ],
791
+ update: [],
792
+ })
793
+ @TableColumn({
794
+ type: TableColumnType.ObjectID,
795
+ title: "Deleted By User ID",
796
+ description: "ID of the user who deleted this rule.",
797
+ })
798
+ @Column({
799
+ type: ColumnType.ObjectID,
800
+ nullable: true,
801
+ transformer: ObjectID.getDatabaseTransformer(),
802
+ })
803
+ public deletedByUserId?: ObjectID = undefined;
804
+ }