@oneuptime/common 10.0.65 → 10.0.66

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 (210) hide show
  1. package/Models/DatabaseModels/DockerHostOwnerTeam.ts +464 -0
  2. package/Models/DatabaseModels/DockerHostOwnerUser.ts +463 -0
  3. package/Models/DatabaseModels/Index.ts +24 -0
  4. package/Models/DatabaseModels/KubernetesClusterOwnerTeam.ts +464 -0
  5. package/Models/DatabaseModels/KubernetesClusterOwnerUser.ts +463 -0
  6. package/Models/DatabaseModels/KubernetesResource.ts +548 -0
  7. package/Models/DatabaseModels/MetricPipelineRule.ts +804 -0
  8. package/Models/DatabaseModels/MetricRecordingRule.ts +470 -0
  9. package/Models/DatabaseModels/Monitor.ts +2 -0
  10. package/Models/DatabaseModels/Project.ts +53 -0
  11. package/Models/DatabaseModels/Service.ts +79 -0
  12. package/Models/DatabaseModels/TraceDropFilter.ts +508 -0
  13. package/Models/DatabaseModels/TracePipeline.ts +436 -0
  14. package/Models/DatabaseModels/TracePipelineProcessor.ts +454 -0
  15. package/Models/DatabaseModels/TraceRecordingRule.ts +470 -0
  16. package/Models/DatabaseModels/TraceScrubRule.ts +546 -0
  17. package/Server/API/KubernetesResourceAPI.ts +129 -0
  18. package/Server/Infrastructure/Postgres/SchemaMigrations/1776504277320-MigrationName.ts +399 -0
  19. package/Server/Infrastructure/Postgres/SchemaMigrations/1776505976155-AddTracePipelineTables.ts +205 -0
  20. package/Server/Infrastructure/Postgres/SchemaMigrations/1776509413763-MigrationName.ts +335 -0
  21. package/Server/Infrastructure/Postgres/SchemaMigrations/1776541018853-MigrationName.ts +29 -0
  22. package/Server/Infrastructure/Postgres/SchemaMigrations/1776544084793-MigrationName.ts +53 -0
  23. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +10 -1
  24. package/Server/Services/DockerHostOwnerTeamService.ts +10 -0
  25. package/Server/Services/DockerHostOwnerUserService.ts +10 -0
  26. package/Server/Services/KubernetesClusterOwnerTeamService.ts +10 -0
  27. package/Server/Services/KubernetesClusterOwnerUserService.ts +10 -0
  28. package/Server/Services/KubernetesResourceService.ts +351 -0
  29. package/Server/Services/MetricPipelineRuleService.ts +10 -0
  30. package/Server/Services/MetricRecordingRuleService.ts +10 -0
  31. package/Server/Services/TraceDropFilterService.ts +10 -0
  32. package/Server/Services/TracePipelineProcessorService.ts +10 -0
  33. package/Server/Services/TracePipelineService.ts +10 -0
  34. package/Server/Services/TraceRecordingRuleService.ts +10 -0
  35. package/Server/Services/TraceScrubRuleService.ts +10 -0
  36. package/Server/Utils/Monitor/Criteria/CompareCriteria.ts +71 -9
  37. package/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.ts +483 -75
  38. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +379 -6
  39. package/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.test.ts +502 -0
  40. package/Tests/Utils/MetricUnitUtil.test.ts +216 -0
  41. package/Tests/Utils/Metrics/MetricFormulaEvaluator.test.ts +269 -0
  42. package/Tests/Utils/Metrics/MetricResultUnitConverter.test.ts +231 -0
  43. package/Tests/Utils/RecordingRuleExpression.test.ts +177 -0
  44. package/Types/Kubernetes/KubernetesInventoryExtractor.ts +327 -0
  45. package/Types/Kubernetes/KubernetesObjectParser.ts +1949 -0
  46. package/Types/Metrics/MetricDownsamplingRetentionDays.ts +49 -0
  47. package/Types/Metrics/MetricFormulaConfigData.ts +4 -0
  48. package/Types/Metrics/MetricPipelineRuleFilterCondition.ts +136 -0
  49. package/Types/Metrics/MetricPipelineRuleType.ts +27 -0
  50. package/Types/Metrics/RecordingRuleDefinition.ts +180 -0
  51. package/Types/Monitor/CriteriaFilter.ts +43 -0
  52. package/Types/Monitor/MetricMonitor/MetricCriteriaContext.ts +70 -0
  53. package/Types/Permission.ts +520 -0
  54. package/Types/Trace/TraceAggregationType.ts +17 -0
  55. package/Types/Trace/TraceDropFilterAction.ts +6 -0
  56. package/Types/Trace/TracePipelineProcessorType.ts +56 -0
  57. package/Types/Trace/TraceRecordingRuleDefinition.ts +218 -0
  58. package/Types/Trace/TraceScrubAction.ts +7 -0
  59. package/Types/Trace/TraceScrubField.ts +8 -0
  60. package/Types/Trace/TraceScrubPatternType.ts +10 -0
  61. package/UI/Components/CardSelect/CardSelect.tsx +9 -1
  62. package/UI/Components/Charts/ChartGroup/ChartGroup.tsx +6 -10
  63. package/UI/Components/Forms/Fields/FormField.tsx +1 -0
  64. package/UI/Components/Forms/Types/Field.ts +1 -0
  65. package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +57 -0
  66. package/UI/Components/Page/Page.tsx +6 -0
  67. package/Utils/MetricUnitUtil.ts +289 -0
  68. package/Utils/Metrics/MetricFormulaEvaluator.ts +610 -0
  69. package/Utils/Metrics/MetricResultUnitConverter.ts +91 -0
  70. package/Utils/Metrics/RecordingRuleExpression.ts +359 -0
  71. package/Utils/ValueFormatter.ts +137 -13
  72. package/build/dist/Models/DatabaseModels/DockerHostOwnerTeam.js +480 -0
  73. package/build/dist/Models/DatabaseModels/DockerHostOwnerTeam.js.map +1 -0
  74. package/build/dist/Models/DatabaseModels/DockerHostOwnerUser.js +479 -0
  75. package/build/dist/Models/DatabaseModels/DockerHostOwnerUser.js.map +1 -0
  76. package/build/dist/Models/DatabaseModels/Index.js +24 -0
  77. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  78. package/build/dist/Models/DatabaseModels/KubernetesClusterOwnerTeam.js +480 -0
  79. package/build/dist/Models/DatabaseModels/KubernetesClusterOwnerTeam.js.map +1 -0
  80. package/build/dist/Models/DatabaseModels/KubernetesClusterOwnerUser.js +479 -0
  81. package/build/dist/Models/DatabaseModels/KubernetesClusterOwnerUser.js.map +1 -0
  82. package/build/dist/Models/DatabaseModels/KubernetesResource.js +590 -0
  83. package/build/dist/Models/DatabaseModels/KubernetesResource.js.map +1 -0
  84. package/build/dist/Models/DatabaseModels/MetricPipelineRule.js +836 -0
  85. package/build/dist/Models/DatabaseModels/MetricPipelineRule.js.map +1 -0
  86. package/build/dist/Models/DatabaseModels/MetricRecordingRule.js +497 -0
  87. package/build/dist/Models/DatabaseModels/MetricRecordingRule.js.map +1 -0
  88. package/build/dist/Models/DatabaseModels/Monitor.js +2 -0
  89. package/build/dist/Models/DatabaseModels/Monitor.js.map +1 -1
  90. package/build/dist/Models/DatabaseModels/Project.js +53 -0
  91. package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
  92. package/build/dist/Models/DatabaseModels/Service.js +79 -0
  93. package/build/dist/Models/DatabaseModels/Service.js.map +1 -1
  94. package/build/dist/Models/DatabaseModels/TraceDropFilter.js +536 -0
  95. package/build/dist/Models/DatabaseModels/TraceDropFilter.js.map +1 -0
  96. package/build/dist/Models/DatabaseModels/TracePipeline.js +462 -0
  97. package/build/dist/Models/DatabaseModels/TracePipeline.js.map +1 -0
  98. package/build/dist/Models/DatabaseModels/TracePipelineProcessor.js +476 -0
  99. package/build/dist/Models/DatabaseModels/TracePipelineProcessor.js.map +1 -0
  100. package/build/dist/Models/DatabaseModels/TraceRecordingRule.js +497 -0
  101. package/build/dist/Models/DatabaseModels/TraceRecordingRule.js.map +1 -0
  102. package/build/dist/Models/DatabaseModels/TraceScrubRule.js +575 -0
  103. package/build/dist/Models/DatabaseModels/TraceScrubRule.js.map +1 -0
  104. package/build/dist/Server/API/KubernetesResourceAPI.js +98 -0
  105. package/build/dist/Server/API/KubernetesResourceAPI.js.map +1 -0
  106. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776504277320-MigrationName.js +144 -0
  107. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776504277320-MigrationName.js.map +1 -0
  108. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776505976155-AddTracePipelineTables.js +82 -0
  109. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776505976155-AddTracePipelineTables.js.map +1 -0
  110. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776509413763-MigrationName.js +118 -0
  111. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776509413763-MigrationName.js.map +1 -0
  112. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776541018853-MigrationName.js +16 -0
  113. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776541018853-MigrationName.js.map +1 -0
  114. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776544084793-MigrationName.js +24 -0
  115. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776544084793-MigrationName.js.map +1 -0
  116. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +10 -0
  117. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  118. package/build/dist/Server/Services/DockerHostOwnerTeamService.js +9 -0
  119. package/build/dist/Server/Services/DockerHostOwnerTeamService.js.map +1 -0
  120. package/build/dist/Server/Services/DockerHostOwnerUserService.js +9 -0
  121. package/build/dist/Server/Services/DockerHostOwnerUserService.js.map +1 -0
  122. package/build/dist/Server/Services/KubernetesClusterOwnerTeamService.js +9 -0
  123. package/build/dist/Server/Services/KubernetesClusterOwnerTeamService.js.map +1 -0
  124. package/build/dist/Server/Services/KubernetesClusterOwnerUserService.js +9 -0
  125. package/build/dist/Server/Services/KubernetesClusterOwnerUserService.js.map +1 -0
  126. package/build/dist/Server/Services/KubernetesResourceService.js +237 -0
  127. package/build/dist/Server/Services/KubernetesResourceService.js.map +1 -0
  128. package/build/dist/Server/Services/MetricPipelineRuleService.js +9 -0
  129. package/build/dist/Server/Services/MetricPipelineRuleService.js.map +1 -0
  130. package/build/dist/Server/Services/MetricRecordingRuleService.js +9 -0
  131. package/build/dist/Server/Services/MetricRecordingRuleService.js.map +1 -0
  132. package/build/dist/Server/Services/TraceDropFilterService.js +9 -0
  133. package/build/dist/Server/Services/TraceDropFilterService.js.map +1 -0
  134. package/build/dist/Server/Services/TracePipelineProcessorService.js +9 -0
  135. package/build/dist/Server/Services/TracePipelineProcessorService.js.map +1 -0
  136. package/build/dist/Server/Services/TracePipelineService.js +9 -0
  137. package/build/dist/Server/Services/TracePipelineService.js.map +1 -0
  138. package/build/dist/Server/Services/TraceRecordingRuleService.js +9 -0
  139. package/build/dist/Server/Services/TraceRecordingRuleService.js.map +1 -0
  140. package/build/dist/Server/Services/TraceScrubRuleService.js +9 -0
  141. package/build/dist/Server/Services/TraceScrubRuleService.js.map +1 -0
  142. package/build/dist/Server/Utils/Monitor/Criteria/CompareCriteria.js +56 -9
  143. package/build/dist/Server/Utils/Monitor/Criteria/CompareCriteria.js.map +1 -1
  144. package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js +335 -53
  145. package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js.map +1 -1
  146. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +277 -5
  147. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  148. package/build/dist/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.test.js +407 -0
  149. package/build/dist/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.test.js.map +1 -0
  150. package/build/dist/Tests/Utils/MetricUnitUtil.test.js +159 -0
  151. package/build/dist/Tests/Utils/MetricUnitUtil.test.js.map +1 -0
  152. package/build/dist/Tests/Utils/Metrics/MetricFormulaEvaluator.test.js +224 -0
  153. package/build/dist/Tests/Utils/Metrics/MetricFormulaEvaluator.test.js.map +1 -0
  154. package/build/dist/Tests/Utils/Metrics/MetricResultUnitConverter.test.js +180 -0
  155. package/build/dist/Tests/Utils/Metrics/MetricResultUnitConverter.test.js.map +1 -0
  156. package/build/dist/Tests/Utils/RecordingRuleExpression.test.js +142 -0
  157. package/build/dist/Tests/Utils/RecordingRuleExpression.test.js.map +1 -0
  158. package/build/dist/Types/Kubernetes/KubernetesInventoryExtractor.js +200 -0
  159. package/build/dist/Types/Kubernetes/KubernetesInventoryExtractor.js.map +1 -0
  160. package/build/dist/Types/Kubernetes/KubernetesObjectParser.js +1205 -0
  161. package/build/dist/Types/Kubernetes/KubernetesObjectParser.js.map +1 -0
  162. package/build/dist/Types/Metrics/MetricDownsamplingRetentionDays.js +32 -0
  163. package/build/dist/Types/Metrics/MetricDownsamplingRetentionDays.js.map +1 -0
  164. package/build/dist/Types/Metrics/MetricPipelineRuleFilterCondition.js +103 -0
  165. package/build/dist/Types/Metrics/MetricPipelineRuleFilterCondition.js.map +1 -0
  166. package/build/dist/Types/Metrics/MetricPipelineRuleType.js +27 -0
  167. package/build/dist/Types/Metrics/MetricPipelineRuleType.js.map +1 -0
  168. package/build/dist/Types/Metrics/RecordingRuleDefinition.js +110 -0
  169. package/build/dist/Types/Metrics/RecordingRuleDefinition.js.map +1 -0
  170. package/build/dist/Types/Monitor/CriteriaFilter.js +22 -0
  171. package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
  172. package/build/dist/Types/Monitor/MetricMonitor/MetricCriteriaContext.js +2 -0
  173. package/build/dist/Types/Monitor/MetricMonitor/MetricCriteriaContext.js.map +1 -0
  174. package/build/dist/Types/Permission.js +454 -0
  175. package/build/dist/Types/Permission.js.map +1 -1
  176. package/build/dist/Types/Trace/TraceAggregationType.js +18 -0
  177. package/build/dist/Types/Trace/TraceAggregationType.js.map +1 -0
  178. package/build/dist/Types/Trace/TraceDropFilterAction.js +7 -0
  179. package/build/dist/Types/Trace/TraceDropFilterAction.js.map +1 -0
  180. package/build/dist/Types/Trace/TracePipelineProcessorType.js +10 -0
  181. package/build/dist/Types/Trace/TracePipelineProcessorType.js.map +1 -0
  182. package/build/dist/Types/Trace/TraceRecordingRuleDefinition.js +145 -0
  183. package/build/dist/Types/Trace/TraceRecordingRuleDefinition.js.map +1 -0
  184. package/build/dist/Types/Trace/TraceScrubAction.js +8 -0
  185. package/build/dist/Types/Trace/TraceScrubAction.js.map +1 -0
  186. package/build/dist/Types/Trace/TraceScrubField.js +9 -0
  187. package/build/dist/Types/Trace/TraceScrubField.js.map +1 -0
  188. package/build/dist/Types/Trace/TraceScrubPatternType.js +11 -0
  189. package/build/dist/Types/Trace/TraceScrubPatternType.js.map +1 -0
  190. package/build/dist/UI/Components/CardSelect/CardSelect.js +3 -1
  191. package/build/dist/UI/Components/CardSelect/CardSelect.js.map +1 -1
  192. package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js +6 -9
  193. package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js.map +1 -1
  194. package/build/dist/UI/Components/Forms/Fields/FormField.js +1 -1
  195. package/build/dist/UI/Components/Forms/Fields/FormField.js.map +1 -1
  196. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js +30 -0
  197. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js.map +1 -1
  198. package/build/dist/UI/Components/Page/Page.js +1 -0
  199. package/build/dist/UI/Components/Page/Page.js.map +1 -1
  200. package/build/dist/Utils/MetricUnitUtil.js +232 -0
  201. package/build/dist/Utils/MetricUnitUtil.js.map +1 -0
  202. package/build/dist/Utils/Metrics/MetricFormulaEvaluator.js +453 -0
  203. package/build/dist/Utils/Metrics/MetricFormulaEvaluator.js.map +1 -0
  204. package/build/dist/Utils/Metrics/MetricResultUnitConverter.js +61 -0
  205. package/build/dist/Utils/Metrics/MetricResultUnitConverter.js.map +1 -0
  206. package/build/dist/Utils/Metrics/RecordingRuleExpression.js +298 -0
  207. package/build/dist/Utils/Metrics/RecordingRuleExpression.js.map +1 -0
  208. package/build/dist/Utils/ValueFormatter.js +123 -13
  209. package/build/dist/Utils/ValueFormatter.js.map +1 -1
  210. package/package.json +1 -1
@@ -0,0 +1,470 @@
1
+ import Project from "./Project";
2
+ import User from "./User";
3
+ import BaseModel from "./DatabaseBaseModel/DatabaseBaseModel";
4
+ import Route from "../../Types/API/Route";
5
+ import ColumnAccessControl from "../../Types/Database/AccessControl/ColumnAccessControl";
6
+ import TableAccessControl from "../../Types/Database/AccessControl/TableAccessControl";
7
+ import TableBillingAccessControl from "../../Types/Database/AccessControl/TableBillingAccessControl";
8
+ import ColumnLength from "../../Types/Database/ColumnLength";
9
+ import ColumnType from "../../Types/Database/ColumnType";
10
+ import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
11
+ import EnableDocumentation from "../../Types/Database/EnableDocumentation";
12
+ import TableColumn from "../../Types/Database/TableColumn";
13
+ import TableColumnType from "../../Types/Database/TableColumnType";
14
+ import TableMetadata from "../../Types/Database/TableMetadata";
15
+ import TenantColumn from "../../Types/Database/TenantColumn";
16
+ import IconProp from "../../Types/Icon/IconProp";
17
+ import ObjectID from "../../Types/ObjectID";
18
+ import Permission from "../../Types/Permission";
19
+ import TraceRecordingRuleDefinition from "../../Types/Trace/TraceRecordingRuleDefinition";
20
+ import { PlanType } from "../../Types/Billing/SubscriptionPlan";
21
+ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
22
+
23
+ @EnableDocumentation()
24
+ @TableBillingAccessControl({
25
+ create: PlanType.Free,
26
+ read: PlanType.Free,
27
+ update: PlanType.Free,
28
+ delete: PlanType.Free,
29
+ })
30
+ @TenantColumn("projectId")
31
+ @CrudApiEndpoint(new Route("/trace-recording-rule"))
32
+ @Entity({
33
+ name: "TraceRecordingRule",
34
+ })
35
+ @TableMetadata({
36
+ tableName: "TraceRecordingRule",
37
+ singularName: "Trace Recording Rule",
38
+ pluralName: "Trace Recording Rules",
39
+ icon: IconProp.Calculator,
40
+ tableDescription:
41
+ "Derived metrics computed on a schedule from aggregations over spans. Results are written into the metric store as a new series.",
42
+ })
43
+ @TableAccessControl({
44
+ create: [
45
+ Permission.ProjectOwner,
46
+ Permission.ProjectAdmin,
47
+ Permission.CreateProjectTraceRecordingRule,
48
+ ],
49
+ read: [
50
+ Permission.ProjectOwner,
51
+ Permission.ProjectAdmin,
52
+ Permission.ProjectMember,
53
+ Permission.Viewer,
54
+ Permission.TelemetryManager,
55
+ Permission.ReadProjectTraceRecordingRule,
56
+ Permission.ReadAllProjectResources,
57
+ ],
58
+ delete: [
59
+ Permission.ProjectOwner,
60
+ Permission.ProjectAdmin,
61
+ Permission.DeleteProjectTraceRecordingRule,
62
+ ],
63
+ update: [
64
+ Permission.ProjectOwner,
65
+ Permission.ProjectAdmin,
66
+ Permission.EditProjectTraceRecordingRule,
67
+ ],
68
+ })
69
+ export default class TraceRecordingRule extends BaseModel {
70
+ @ColumnAccessControl({
71
+ create: [
72
+ Permission.ProjectOwner,
73
+ Permission.ProjectAdmin,
74
+ Permission.CreateProjectTraceRecordingRule,
75
+ ],
76
+ read: [
77
+ Permission.ProjectOwner,
78
+ Permission.ProjectAdmin,
79
+ Permission.ProjectMember,
80
+ Permission.Viewer,
81
+ Permission.TelemetryManager,
82
+ Permission.ReadProjectTraceRecordingRule,
83
+ Permission.ReadAllProjectResources,
84
+ ],
85
+ update: [],
86
+ })
87
+ @TableColumn({
88
+ manyToOneRelationColumn: "projectId",
89
+ type: TableColumnType.Entity,
90
+ modelType: Project,
91
+ title: "Project",
92
+ description: "Relation to the project this recording rule belongs to.",
93
+ })
94
+ @ManyToOne(
95
+ () => {
96
+ return Project;
97
+ },
98
+ {
99
+ eager: false,
100
+ nullable: true,
101
+ onDelete: "CASCADE",
102
+ orphanedRowAction: "nullify",
103
+ },
104
+ )
105
+ @JoinColumn({ name: "projectId" })
106
+ public project?: Project = undefined;
107
+
108
+ @ColumnAccessControl({
109
+ create: [
110
+ Permission.ProjectOwner,
111
+ Permission.ProjectAdmin,
112
+ Permission.CreateProjectTraceRecordingRule,
113
+ ],
114
+ read: [
115
+ Permission.ProjectOwner,
116
+ Permission.ProjectAdmin,
117
+ Permission.ProjectMember,
118
+ Permission.Viewer,
119
+ Permission.TelemetryManager,
120
+ Permission.ReadProjectTraceRecordingRule,
121
+ Permission.ReadAllProjectResources,
122
+ ],
123
+ update: [],
124
+ })
125
+ @Index()
126
+ @TableColumn({
127
+ type: TableColumnType.ObjectID,
128
+ required: true,
129
+ canReadOnRelationQuery: true,
130
+ title: "Project ID",
131
+ description: "ID of the project this recording rule belongs to.",
132
+ })
133
+ @Column({
134
+ type: ColumnType.ObjectID,
135
+ nullable: false,
136
+ transformer: ObjectID.getDatabaseTransformer(),
137
+ })
138
+ public projectId?: ObjectID = undefined;
139
+
140
+ @ColumnAccessControl({
141
+ create: [
142
+ Permission.ProjectOwner,
143
+ Permission.ProjectAdmin,
144
+ Permission.CreateProjectTraceRecordingRule,
145
+ ],
146
+ read: [
147
+ Permission.ProjectOwner,
148
+ Permission.ProjectAdmin,
149
+ Permission.ProjectMember,
150
+ Permission.Viewer,
151
+ Permission.TelemetryManager,
152
+ Permission.ReadProjectTraceRecordingRule,
153
+ Permission.ReadAllProjectResources,
154
+ ],
155
+ update: [
156
+ Permission.ProjectOwner,
157
+ Permission.ProjectAdmin,
158
+ Permission.EditProjectTraceRecordingRule,
159
+ ],
160
+ })
161
+ @TableColumn({
162
+ required: true,
163
+ type: TableColumnType.Name,
164
+ canReadOnRelationQuery: true,
165
+ title: "Name",
166
+ description: "Friendly name for this rule.",
167
+ })
168
+ @Column({
169
+ nullable: false,
170
+ type: ColumnType.Name,
171
+ length: ColumnLength.Name,
172
+ })
173
+ public name?: string = undefined;
174
+
175
+ @ColumnAccessControl({
176
+ create: [
177
+ Permission.ProjectOwner,
178
+ Permission.ProjectAdmin,
179
+ Permission.CreateProjectTraceRecordingRule,
180
+ ],
181
+ read: [
182
+ Permission.ProjectOwner,
183
+ Permission.ProjectAdmin,
184
+ Permission.ProjectMember,
185
+ Permission.Viewer,
186
+ Permission.TelemetryManager,
187
+ Permission.ReadProjectTraceRecordingRule,
188
+ Permission.ReadAllProjectResources,
189
+ ],
190
+ update: [
191
+ Permission.ProjectOwner,
192
+ Permission.ProjectAdmin,
193
+ Permission.EditProjectTraceRecordingRule,
194
+ ],
195
+ })
196
+ @TableColumn({
197
+ required: false,
198
+ type: TableColumnType.LongText,
199
+ canReadOnRelationQuery: true,
200
+ title: "Description",
201
+ description: "What this recording rule computes and why.",
202
+ })
203
+ @Column({
204
+ nullable: true,
205
+ type: ColumnType.LongText,
206
+ length: ColumnLength.LongText,
207
+ })
208
+ public description?: string = undefined;
209
+
210
+ @ColumnAccessControl({
211
+ create: [
212
+ Permission.ProjectOwner,
213
+ Permission.ProjectAdmin,
214
+ Permission.CreateProjectTraceRecordingRule,
215
+ ],
216
+ read: [
217
+ Permission.ProjectOwner,
218
+ Permission.ProjectAdmin,
219
+ Permission.ProjectMember,
220
+ Permission.Viewer,
221
+ Permission.TelemetryManager,
222
+ Permission.ReadProjectTraceRecordingRule,
223
+ Permission.ReadAllProjectResources,
224
+ ],
225
+ update: [
226
+ Permission.ProjectOwner,
227
+ Permission.ProjectAdmin,
228
+ Permission.EditProjectTraceRecordingRule,
229
+ ],
230
+ })
231
+ @TableColumn({
232
+ required: true,
233
+ type: TableColumnType.ShortText,
234
+ canReadOnRelationQuery: true,
235
+ title: "Output Metric Name",
236
+ description:
237
+ "Name of the new metric this rule writes (e.g. http.error_rate). Must be unique per project.",
238
+ })
239
+ @Column({
240
+ nullable: false,
241
+ type: ColumnType.ShortText,
242
+ length: ColumnLength.ShortText,
243
+ })
244
+ public outputMetricName?: string = undefined;
245
+
246
+ @ColumnAccessControl({
247
+ create: [
248
+ Permission.ProjectOwner,
249
+ Permission.ProjectAdmin,
250
+ Permission.CreateProjectTraceRecordingRule,
251
+ ],
252
+ read: [
253
+ Permission.ProjectOwner,
254
+ Permission.ProjectAdmin,
255
+ Permission.ProjectMember,
256
+ Permission.Viewer,
257
+ Permission.TelemetryManager,
258
+ Permission.ReadProjectTraceRecordingRule,
259
+ Permission.ReadAllProjectResources,
260
+ ],
261
+ update: [
262
+ Permission.ProjectOwner,
263
+ Permission.ProjectAdmin,
264
+ Permission.EditProjectTraceRecordingRule,
265
+ ],
266
+ })
267
+ @TableColumn({
268
+ required: true,
269
+ type: TableColumnType.JSON,
270
+ title: "Definition",
271
+ description:
272
+ "Sources (aliased span aggregations), arithmetic expression, and optional group-by attribute.",
273
+ })
274
+ @Column({
275
+ type: ColumnType.JSON,
276
+ nullable: false,
277
+ })
278
+ public definition?: TraceRecordingRuleDefinition = undefined;
279
+
280
+ @ColumnAccessControl({
281
+ create: [
282
+ Permission.ProjectOwner,
283
+ Permission.ProjectAdmin,
284
+ Permission.CreateProjectTraceRecordingRule,
285
+ ],
286
+ read: [
287
+ Permission.ProjectOwner,
288
+ Permission.ProjectAdmin,
289
+ Permission.ProjectMember,
290
+ Permission.Viewer,
291
+ Permission.TelemetryManager,
292
+ Permission.ReadProjectTraceRecordingRule,
293
+ Permission.ReadAllProjectResources,
294
+ ],
295
+ update: [
296
+ Permission.ProjectOwner,
297
+ Permission.ProjectAdmin,
298
+ Permission.EditProjectTraceRecordingRule,
299
+ ],
300
+ })
301
+ @Index()
302
+ @TableColumn({
303
+ required: true,
304
+ type: TableColumnType.Boolean,
305
+ canReadOnRelationQuery: true,
306
+ title: "Enabled",
307
+ description: "Whether this rule is evaluated by the recording rule cron.",
308
+ defaultValue: true,
309
+ })
310
+ @Column({
311
+ nullable: false,
312
+ type: ColumnType.Boolean,
313
+ default: true,
314
+ })
315
+ public isEnabled?: boolean = undefined;
316
+
317
+ @ColumnAccessControl({
318
+ create: [
319
+ Permission.ProjectOwner,
320
+ Permission.ProjectAdmin,
321
+ Permission.CreateProjectTraceRecordingRule,
322
+ ],
323
+ read: [
324
+ Permission.ProjectOwner,
325
+ Permission.ProjectAdmin,
326
+ Permission.ProjectMember,
327
+ Permission.Viewer,
328
+ Permission.TelemetryManager,
329
+ Permission.ReadProjectTraceRecordingRule,
330
+ Permission.ReadAllProjectResources,
331
+ ],
332
+ update: [
333
+ Permission.ProjectOwner,
334
+ Permission.ProjectAdmin,
335
+ Permission.EditProjectTraceRecordingRule,
336
+ ],
337
+ })
338
+ @TableColumn({
339
+ title: "Sort Order",
340
+ required: false,
341
+ type: TableColumnType.Number,
342
+ canReadOnRelationQuery: true,
343
+ description: "Evaluation order when multiple rules exist.",
344
+ defaultValue: 0,
345
+ })
346
+ @Column({
347
+ type: ColumnType.Number,
348
+ nullable: false,
349
+ default: 0,
350
+ })
351
+ public sortOrder?: number = undefined;
352
+
353
+ @ColumnAccessControl({
354
+ create: [],
355
+ read: [
356
+ Permission.ProjectOwner,
357
+ Permission.ProjectAdmin,
358
+ Permission.ProjectMember,
359
+ Permission.Viewer,
360
+ Permission.TelemetryManager,
361
+ Permission.ReadProjectTraceRecordingRule,
362
+ Permission.ReadAllProjectResources,
363
+ ],
364
+ update: [],
365
+ })
366
+ @TableColumn({
367
+ manyToOneRelationColumn: "createdByUserId",
368
+ type: TableColumnType.Entity,
369
+ modelType: User,
370
+ title: "Created By User",
371
+ description: "Relation to the user who created this rule.",
372
+ })
373
+ @ManyToOne(
374
+ () => {
375
+ return User;
376
+ },
377
+ {
378
+ eager: false,
379
+ nullable: true,
380
+ onDelete: "SET NULL",
381
+ orphanedRowAction: "nullify",
382
+ },
383
+ )
384
+ @JoinColumn({ name: "createdByUserId" })
385
+ public createdByUser?: User = undefined;
386
+
387
+ @ColumnAccessControl({
388
+ create: [],
389
+ read: [
390
+ Permission.ProjectOwner,
391
+ Permission.ProjectAdmin,
392
+ Permission.ProjectMember,
393
+ Permission.Viewer,
394
+ Permission.TelemetryManager,
395
+ Permission.ReadProjectTraceRecordingRule,
396
+ Permission.ReadAllProjectResources,
397
+ ],
398
+ update: [],
399
+ })
400
+ @TableColumn({
401
+ type: TableColumnType.ObjectID,
402
+ title: "Created By User ID",
403
+ description: "ID of the user who created this rule.",
404
+ })
405
+ @Column({
406
+ type: ColumnType.ObjectID,
407
+ nullable: true,
408
+ transformer: ObjectID.getDatabaseTransformer(),
409
+ })
410
+ public createdByUserId?: ObjectID = undefined;
411
+
412
+ @ColumnAccessControl({
413
+ create: [],
414
+ read: [
415
+ Permission.ProjectOwner,
416
+ Permission.ProjectAdmin,
417
+ Permission.ProjectMember,
418
+ Permission.Viewer,
419
+ Permission.TelemetryManager,
420
+ Permission.ReadProjectTraceRecordingRule,
421
+ Permission.ReadAllProjectResources,
422
+ ],
423
+ update: [],
424
+ })
425
+ @TableColumn({
426
+ manyToOneRelationColumn: "deletedByUserId",
427
+ type: TableColumnType.Entity,
428
+ modelType: User,
429
+ title: "Deleted By User",
430
+ description: "Relation to the user who deleted this rule.",
431
+ })
432
+ @ManyToOne(
433
+ () => {
434
+ return User;
435
+ },
436
+ {
437
+ eager: false,
438
+ nullable: true,
439
+ onDelete: "SET NULL",
440
+ orphanedRowAction: "nullify",
441
+ },
442
+ )
443
+ @JoinColumn({ name: "deletedByUserId" })
444
+ public deletedByUser?: User = undefined;
445
+
446
+ @ColumnAccessControl({
447
+ create: [],
448
+ read: [
449
+ Permission.ProjectOwner,
450
+ Permission.ProjectAdmin,
451
+ Permission.ProjectMember,
452
+ Permission.Viewer,
453
+ Permission.TelemetryManager,
454
+ Permission.ReadProjectTraceRecordingRule,
455
+ Permission.ReadAllProjectResources,
456
+ ],
457
+ update: [],
458
+ })
459
+ @TableColumn({
460
+ type: TableColumnType.ObjectID,
461
+ title: "Deleted By User ID",
462
+ description: "ID of the user who deleted this rule.",
463
+ })
464
+ @Column({
465
+ type: ColumnType.ObjectID,
466
+ nullable: true,
467
+ transformer: ObjectID.getDatabaseTransformer(),
468
+ })
469
+ public deletedByUserId?: ObjectID = undefined;
470
+ }