@oneuptime/common 10.7.2 → 10.8.1

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/CloudResource.ts +846 -0
  2. package/Models/DatabaseModels/CloudResourceInstance.ts +276 -0
  3. package/Models/DatabaseModels/CloudResourceLabelRule.ts +510 -0
  4. package/Models/DatabaseModels/CloudResourceOwnerRule.ts +592 -0
  5. package/Models/DatabaseModels/CloudResourceOwnerTeam.ts +487 -0
  6. package/Models/DatabaseModels/CloudResourceOwnerUser.ts +486 -0
  7. package/Models/DatabaseModels/Host.ts +209 -0
  8. package/Models/DatabaseModels/Index.ts +36 -0
  9. package/Models/DatabaseModels/RumApplication.ts +731 -0
  10. package/Models/DatabaseModels/RumApplicationClient.ts +229 -0
  11. package/Models/DatabaseModels/RumApplicationLabelRule.ts +510 -0
  12. package/Models/DatabaseModels/RumApplicationOwnerRule.ts +592 -0
  13. package/Models/DatabaseModels/RumApplicationOwnerTeam.ts +486 -0
  14. package/Models/DatabaseModels/RumApplicationOwnerUser.ts +485 -0
  15. package/Models/DatabaseModels/ServerlessFunction.ts +881 -0
  16. package/Models/DatabaseModels/ServerlessFunctionInstance.ts +212 -0
  17. package/Models/DatabaseModels/ServerlessFunctionLabelRule.ts +510 -0
  18. package/Models/DatabaseModels/ServerlessFunctionOwnerRule.ts +592 -0
  19. package/Models/DatabaseModels/ServerlessFunctionOwnerTeam.ts +487 -0
  20. package/Models/DatabaseModels/ServerlessFunctionOwnerUser.ts +486 -0
  21. package/Models/DatabaseModels/Service.ts +268 -0
  22. package/Models/DatabaseModels/TelemetryException.ts +15 -1
  23. package/Models/DatabaseModels/WorkflowLog.ts +52 -0
  24. package/Server/API/TelemetryAPI.ts +78 -25
  25. package/Server/Infrastructure/Postgres/SchemaMigrations/1780931746908-AddResumeStateToWorkflowLog.ts +21 -0
  26. package/Server/Infrastructure/Postgres/SchemaMigrations/1780931863719-AddTelemetryResourceMetadataColumns.ts +108 -0
  27. package/Server/Infrastructure/Postgres/SchemaMigrations/1780933132562-AddServerlessFunctionTables.ts +205 -0
  28. package/Server/Infrastructure/Postgres/SchemaMigrations/1780935387827-AddCloudResourceTables.ts +195 -0
  29. package/Server/Infrastructure/Postgres/SchemaMigrations/1780936579718-AddRumApplicationTables.ts +202 -0
  30. package/Server/Infrastructure/Postgres/SchemaMigrations/1780938407319-AddServerlessFunctionRuleTables.ts +156 -0
  31. package/Server/Infrastructure/Postgres/SchemaMigrations/1780940721814-AddCloudResourceRuleTables.ts +149 -0
  32. package/Server/Infrastructure/Postgres/SchemaMigrations/1780940998002-AddRumApplicationRuleTables.ts +149 -0
  33. package/Server/Infrastructure/Postgres/SchemaMigrations/1780941762204-AddTelemetryResourceInventoryTables.ts +95 -0
  34. package/Server/Infrastructure/Postgres/SchemaMigrations/1780985763463-AddRumApplicationSdkLanguage.ts +25 -0
  35. package/Server/Infrastructure/Postgres/SchemaMigrations/1780987192743-RecastCloudResourcesByEnvironment.ts +30 -0
  36. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +22 -0
  37. package/Server/Infrastructure/Queue.ts +11 -0
  38. package/Server/Services/CloudResourceInstanceService.ts +76 -0
  39. package/Server/Services/CloudResourceLabelRuleEngineService.ts +175 -0
  40. package/Server/Services/CloudResourceLabelRuleService.ts +14 -0
  41. package/Server/Services/CloudResourceOwnerRuleEngineService.ts +192 -0
  42. package/Server/Services/CloudResourceOwnerRuleService.ts +14 -0
  43. package/Server/Services/CloudResourceOwnerTeamService.ts +10 -0
  44. package/Server/Services/CloudResourceOwnerUserService.ts +10 -0
  45. package/Server/Services/CloudResourceService.ts +342 -0
  46. package/Server/Services/ExceptionAggregationService.ts +3 -0
  47. package/Server/Services/HostService.ts +42 -0
  48. package/Server/Services/LogAggregationService.ts +44 -16
  49. package/Server/Services/MetricAggregationService.ts +3 -0
  50. package/Server/Services/OpenTelemetryIngestService.ts +148 -1
  51. package/Server/Services/RumApplicationClientService.ts +69 -0
  52. package/Server/Services/RumApplicationLabelRuleEngineService.ts +175 -0
  53. package/Server/Services/RumApplicationLabelRuleService.ts +14 -0
  54. package/Server/Services/RumApplicationOwnerRuleEngineService.ts +192 -0
  55. package/Server/Services/RumApplicationOwnerRuleService.ts +14 -0
  56. package/Server/Services/RumApplicationOwnerTeamService.ts +10 -0
  57. package/Server/Services/RumApplicationOwnerUserService.ts +10 -0
  58. package/Server/Services/RumApplicationService.ts +301 -0
  59. package/Server/Services/ServerlessFunctionInstanceService.ts +61 -0
  60. package/Server/Services/ServerlessFunctionLabelRuleEngineService.ts +182 -0
  61. package/Server/Services/ServerlessFunctionLabelRuleService.ts +14 -0
  62. package/Server/Services/ServerlessFunctionOwnerRuleEngineService.ts +199 -0
  63. package/Server/Services/ServerlessFunctionOwnerRuleService.ts +14 -0
  64. package/Server/Services/ServerlessFunctionOwnerTeamService.ts +10 -0
  65. package/Server/Services/ServerlessFunctionOwnerUserService.ts +10 -0
  66. package/Server/Services/ServerlessFunctionService.ts +351 -0
  67. package/Server/Services/ServiceService.ts +95 -8
  68. package/Server/Services/TraceAggregationService.ts +131 -4
  69. package/Server/Types/Database/Permissions/OwnerTableRegistry.ts +39 -0
  70. package/Server/Types/Workflow/ComponentCode.ts +9 -0
  71. package/Server/Types/Workflow/Components/Index.ts +2 -0
  72. package/Server/Types/Workflow/Components/Sleep.ts +105 -0
  73. package/Server/Types/Workflow/Workflow.ts +6 -0
  74. package/Server/Utils/Telemetry/ResourceFacetResolver.ts +150 -0
  75. package/Types/Permission.ts +692 -1
  76. package/Types/Telemetry/ServiceType.ts +3 -0
  77. package/Types/Workflow/ComponentID.ts +1 -0
  78. package/Types/Workflow/Components/Sleep.ts +71 -0
  79. package/Types/Workflow/Components.ts +2 -0
  80. package/Types/Workflow/WorkflowStatus.ts +1 -0
  81. package/UI/Components/BulkUpdate/BulkLabelActions.tsx +159 -32
  82. package/UI/Components/Navbar/NavBar.tsx +72 -123
  83. package/UI/Components/Navbar/NavBarMenuModal.tsx +642 -0
  84. package/UI/Components/Workflow/WorkflowStatus.tsx +3 -0
  85. package/build/dist/Models/DatabaseModels/CloudResource.js +871 -0
  86. package/build/dist/Models/DatabaseModels/CloudResource.js.map +1 -0
  87. package/build/dist/Models/DatabaseModels/CloudResourceInstance.js +300 -0
  88. package/build/dist/Models/DatabaseModels/CloudResourceInstance.js.map +1 -0
  89. package/build/dist/Models/DatabaseModels/CloudResourceLabelRule.js +520 -0
  90. package/build/dist/Models/DatabaseModels/CloudResourceLabelRule.js.map +1 -0
  91. package/build/dist/Models/DatabaseModels/CloudResourceOwnerRule.js +601 -0
  92. package/build/dist/Models/DatabaseModels/CloudResourceOwnerRule.js.map +1 -0
  93. package/build/dist/Models/DatabaseModels/CloudResourceOwnerTeam.js +503 -0
  94. package/build/dist/Models/DatabaseModels/CloudResourceOwnerTeam.js.map +1 -0
  95. package/build/dist/Models/DatabaseModels/CloudResourceOwnerUser.js +502 -0
  96. package/build/dist/Models/DatabaseModels/CloudResourceOwnerUser.js.map +1 -0
  97. package/build/dist/Models/DatabaseModels/Host.js +215 -0
  98. package/build/dist/Models/DatabaseModels/Host.js.map +1 -1
  99. package/build/dist/Models/DatabaseModels/Index.js +36 -0
  100. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  101. package/build/dist/Models/DatabaseModels/RumApplication.js +751 -0
  102. package/build/dist/Models/DatabaseModels/RumApplication.js.map +1 -0
  103. package/build/dist/Models/DatabaseModels/RumApplicationClient.js +252 -0
  104. package/build/dist/Models/DatabaseModels/RumApplicationClient.js.map +1 -0
  105. package/build/dist/Models/DatabaseModels/RumApplicationLabelRule.js +520 -0
  106. package/build/dist/Models/DatabaseModels/RumApplicationLabelRule.js.map +1 -0
  107. package/build/dist/Models/DatabaseModels/RumApplicationOwnerRule.js +601 -0
  108. package/build/dist/Models/DatabaseModels/RumApplicationOwnerRule.js.map +1 -0
  109. package/build/dist/Models/DatabaseModels/RumApplicationOwnerTeam.js +503 -0
  110. package/build/dist/Models/DatabaseModels/RumApplicationOwnerTeam.js.map +1 -0
  111. package/build/dist/Models/DatabaseModels/RumApplicationOwnerUser.js +502 -0
  112. package/build/dist/Models/DatabaseModels/RumApplicationOwnerUser.js.map +1 -0
  113. package/build/dist/Models/DatabaseModels/ServerlessFunction.js +908 -0
  114. package/build/dist/Models/DatabaseModels/ServerlessFunction.js.map +1 -0
  115. package/build/dist/Models/DatabaseModels/ServerlessFunctionInstance.js +234 -0
  116. package/build/dist/Models/DatabaseModels/ServerlessFunctionInstance.js.map +1 -0
  117. package/build/dist/Models/DatabaseModels/ServerlessFunctionLabelRule.js +520 -0
  118. package/build/dist/Models/DatabaseModels/ServerlessFunctionLabelRule.js.map +1 -0
  119. package/build/dist/Models/DatabaseModels/ServerlessFunctionOwnerRule.js +601 -0
  120. package/build/dist/Models/DatabaseModels/ServerlessFunctionOwnerRule.js.map +1 -0
  121. package/build/dist/Models/DatabaseModels/ServerlessFunctionOwnerTeam.js +503 -0
  122. package/build/dist/Models/DatabaseModels/ServerlessFunctionOwnerTeam.js.map +1 -0
  123. package/build/dist/Models/DatabaseModels/ServerlessFunctionOwnerUser.js +502 -0
  124. package/build/dist/Models/DatabaseModels/ServerlessFunctionOwnerUser.js.map +1 -0
  125. package/build/dist/Models/DatabaseModels/Service.js +276 -0
  126. package/build/dist/Models/DatabaseModels/Service.js.map +1 -1
  127. package/build/dist/Models/DatabaseModels/TelemetryException.js +12 -1
  128. package/build/dist/Models/DatabaseModels/TelemetryException.js.map +1 -1
  129. package/build/dist/Models/DatabaseModels/WorkflowLog.js +53 -0
  130. package/build/dist/Models/DatabaseModels/WorkflowLog.js.map +1 -1
  131. package/build/dist/Server/API/TelemetryAPI.js +61 -23
  132. package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
  133. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780931746908-AddResumeStateToWorkflowLog.js +14 -0
  134. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780931746908-AddResumeStateToWorkflowLog.js.map +1 -0
  135. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780931863719-AddTelemetryResourceMetadataColumns.js +53 -0
  136. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780931863719-AddTelemetryResourceMetadataColumns.js.map +1 -0
  137. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780933132562-AddServerlessFunctionTables.js +82 -0
  138. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780933132562-AddServerlessFunctionTables.js.map +1 -0
  139. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780935387827-AddCloudResourceTables.js +82 -0
  140. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780935387827-AddCloudResourceTables.js.map +1 -0
  141. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780936579718-AddRumApplicationTables.js +83 -0
  142. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780936579718-AddRumApplicationTables.js.map +1 -0
  143. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780938407319-AddServerlessFunctionRuleTables.js +67 -0
  144. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780938407319-AddServerlessFunctionRuleTables.js.map +1 -0
  145. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780940721814-AddCloudResourceRuleTables.js +60 -0
  146. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780940721814-AddCloudResourceRuleTables.js.map +1 -0
  147. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780940998002-AddRumApplicationRuleTables.js +60 -0
  148. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780940998002-AddRumApplicationRuleTables.js.map +1 -0
  149. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780941762204-AddTelemetryResourceInventoryTables.js +45 -0
  150. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780941762204-AddTelemetryResourceInventoryTables.js.map +1 -0
  151. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780985763463-AddRumApplicationSdkLanguage.js +18 -0
  152. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780985763463-AddRumApplicationSdkLanguage.js.map +1 -0
  153. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780987192743-RecastCloudResourcesByEnvironment.js +27 -0
  154. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780987192743-RecastCloudResourcesByEnvironment.js.map +1 -0
  155. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +22 -0
  156. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  157. package/build/dist/Server/Infrastructure/Queue.js +3 -0
  158. package/build/dist/Server/Infrastructure/Queue.js.map +1 -1
  159. package/build/dist/Server/Services/CloudResourceInstanceService.js +76 -0
  160. package/build/dist/Server/Services/CloudResourceInstanceService.js.map +1 -0
  161. package/build/dist/Server/Services/CloudResourceLabelRuleEngineService.js +160 -0
  162. package/build/dist/Server/Services/CloudResourceLabelRuleEngineService.js.map +1 -0
  163. package/build/dist/Server/Services/CloudResourceLabelRuleService.js +13 -0
  164. package/build/dist/Server/Services/CloudResourceLabelRuleService.js.map +1 -0
  165. package/build/dist/Server/Services/CloudResourceOwnerRuleEngineService.js +179 -0
  166. package/build/dist/Server/Services/CloudResourceOwnerRuleEngineService.js.map +1 -0
  167. package/build/dist/Server/Services/CloudResourceOwnerRuleService.js +13 -0
  168. package/build/dist/Server/Services/CloudResourceOwnerRuleService.js.map +1 -0
  169. package/build/dist/Server/Services/CloudResourceOwnerTeamService.js +9 -0
  170. package/build/dist/Server/Services/CloudResourceOwnerTeamService.js.map +1 -0
  171. package/build/dist/Server/Services/CloudResourceOwnerUserService.js +9 -0
  172. package/build/dist/Server/Services/CloudResourceOwnerUserService.js.map +1 -0
  173. package/build/dist/Server/Services/CloudResourceService.js +287 -0
  174. package/build/dist/Server/Services/CloudResourceService.js.map +1 -0
  175. package/build/dist/Server/Services/ExceptionAggregationService.js +3 -0
  176. package/build/dist/Server/Services/ExceptionAggregationService.js.map +1 -1
  177. package/build/dist/Server/Services/HostService.js +29 -1
  178. package/build/dist/Server/Services/HostService.js.map +1 -1
  179. package/build/dist/Server/Services/LogAggregationService.js +36 -10
  180. package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
  181. package/build/dist/Server/Services/MetricAggregationService.js +3 -0
  182. package/build/dist/Server/Services/MetricAggregationService.js.map +1 -1
  183. package/build/dist/Server/Services/OpenTelemetryIngestService.js +98 -2
  184. package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
  185. package/build/dist/Server/Services/RumApplicationClientService.js +70 -0
  186. package/build/dist/Server/Services/RumApplicationClientService.js.map +1 -0
  187. package/build/dist/Server/Services/RumApplicationLabelRuleEngineService.js +160 -0
  188. package/build/dist/Server/Services/RumApplicationLabelRuleEngineService.js.map +1 -0
  189. package/build/dist/Server/Services/RumApplicationLabelRuleService.js +13 -0
  190. package/build/dist/Server/Services/RumApplicationLabelRuleService.js.map +1 -0
  191. package/build/dist/Server/Services/RumApplicationOwnerRuleEngineService.js +179 -0
  192. package/build/dist/Server/Services/RumApplicationOwnerRuleEngineService.js.map +1 -0
  193. package/build/dist/Server/Services/RumApplicationOwnerRuleService.js +13 -0
  194. package/build/dist/Server/Services/RumApplicationOwnerRuleService.js.map +1 -0
  195. package/build/dist/Server/Services/RumApplicationOwnerTeamService.js +9 -0
  196. package/build/dist/Server/Services/RumApplicationOwnerTeamService.js.map +1 -0
  197. package/build/dist/Server/Services/RumApplicationOwnerUserService.js +9 -0
  198. package/build/dist/Server/Services/RumApplicationOwnerUserService.js.map +1 -0
  199. package/build/dist/Server/Services/RumApplicationService.js +259 -0
  200. package/build/dist/Server/Services/RumApplicationService.js.map +1 -0
  201. package/build/dist/Server/Services/ServerlessFunctionInstanceService.js +64 -0
  202. package/build/dist/Server/Services/ServerlessFunctionInstanceService.js.map +1 -0
  203. package/build/dist/Server/Services/ServerlessFunctionLabelRuleEngineService.js +160 -0
  204. package/build/dist/Server/Services/ServerlessFunctionLabelRuleEngineService.js.map +1 -0
  205. package/build/dist/Server/Services/ServerlessFunctionLabelRuleService.js +13 -0
  206. package/build/dist/Server/Services/ServerlessFunctionLabelRuleService.js.map +1 -0
  207. package/build/dist/Server/Services/ServerlessFunctionOwnerRuleEngineService.js +179 -0
  208. package/build/dist/Server/Services/ServerlessFunctionOwnerRuleEngineService.js.map +1 -0
  209. package/build/dist/Server/Services/ServerlessFunctionOwnerRuleService.js +13 -0
  210. package/build/dist/Server/Services/ServerlessFunctionOwnerRuleService.js.map +1 -0
  211. package/build/dist/Server/Services/ServerlessFunctionOwnerTeamService.js +9 -0
  212. package/build/dist/Server/Services/ServerlessFunctionOwnerTeamService.js.map +1 -0
  213. package/build/dist/Server/Services/ServerlessFunctionOwnerUserService.js +9 -0
  214. package/build/dist/Server/Services/ServerlessFunctionOwnerUserService.js.map +1 -0
  215. package/build/dist/Server/Services/ServerlessFunctionService.js +299 -0
  216. package/build/dist/Server/Services/ServerlessFunctionService.js.map +1 -0
  217. package/build/dist/Server/Services/ServiceService.js +63 -7
  218. package/build/dist/Server/Services/ServiceService.js.map +1 -1
  219. package/build/dist/Server/Services/TraceAggregationService.js +108 -4
  220. package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
  221. package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js +39 -0
  222. package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js.map +1 -1
  223. package/build/dist/Server/Types/Workflow/ComponentCode.js.map +1 -1
  224. package/build/dist/Server/Types/Workflow/Components/Index.js +2 -0
  225. package/build/dist/Server/Types/Workflow/Components/Index.js.map +1 -1
  226. package/build/dist/Server/Types/Workflow/Components/Sleep.js +85 -0
  227. package/build/dist/Server/Types/Workflow/Components/Sleep.js.map +1 -0
  228. package/build/dist/Server/Utils/Telemetry/ResourceFacetResolver.js +90 -0
  229. package/build/dist/Server/Utils/Telemetry/ResourceFacetResolver.js.map +1 -1
  230. package/build/dist/Types/Permission.js +609 -1
  231. package/build/dist/Types/Permission.js.map +1 -1
  232. package/build/dist/Types/Telemetry/ServiceType.js +3 -0
  233. package/build/dist/Types/Telemetry/ServiceType.js.map +1 -1
  234. package/build/dist/Types/Workflow/ComponentID.js +1 -0
  235. package/build/dist/Types/Workflow/ComponentID.js.map +1 -1
  236. package/build/dist/Types/Workflow/Components/Sleep.js +64 -0
  237. package/build/dist/Types/Workflow/Components/Sleep.js.map +1 -0
  238. package/build/dist/Types/Workflow/Components.js +2 -0
  239. package/build/dist/Types/Workflow/Components.js.map +1 -1
  240. package/build/dist/Types/Workflow/WorkflowStatus.js +1 -0
  241. package/build/dist/Types/Workflow/WorkflowStatus.js.map +1 -1
  242. package/build/dist/UI/Components/BulkUpdate/BulkLabelActions.js +113 -19
  243. package/build/dist/UI/Components/BulkUpdate/BulkLabelActions.js.map +1 -1
  244. package/build/dist/UI/Components/Navbar/NavBar.js +34 -66
  245. package/build/dist/UI/Components/Navbar/NavBar.js.map +1 -1
  246. package/build/dist/UI/Components/Navbar/NavBarMenuModal.js +412 -0
  247. package/build/dist/UI/Components/Navbar/NavBarMenuModal.js.map +1 -0
  248. package/build/dist/UI/Components/Workflow/WorkflowStatus.js +3 -0
  249. package/build/dist/UI/Components/Workflow/WorkflowStatus.js.map +1 -1
  250. package/package.json +1 -1
  251. package/UI/Components/Navbar/NavBarMenu.tsx +0 -183
  252. package/UI/Components/Navbar/NavBarMenuItem.tsx +0 -146
  253. package/build/dist/UI/Components/Navbar/NavBarMenu.js +0 -82
  254. package/build/dist/UI/Components/Navbar/NavBarMenu.js.map +0 -1
  255. package/build/dist/UI/Components/Navbar/NavBarMenuItem.js +0 -109
  256. package/build/dist/UI/Components/Navbar/NavBarMenuItem.js.map +0 -1
@@ -0,0 +1,82 @@
1
+ /*
2
+ * Phase 2: Cloud platform compute resource type. Creates the CloudResource
3
+ * resource table, its owner-user / owner-team tables, and the label join
4
+ * table — mirroring the ServerlessFunction shape so the polymorphic telemetry
5
+ * serviceId can point at a CloudResource row.
6
+ */
7
+ export class AddCloudResourceTables1780935387827 {
8
+ constructor() {
9
+ this.name = "AddCloudResourceTables1780935387827";
10
+ }
11
+ async up(queryRunner) {
12
+ await queryRunner.query(`CREATE TABLE "CloudResource" ("_id" uuid NOT NULL DEFAULT uuid_generate_v4(), "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP WITH TIME ZONE, "version" integer NOT NULL, "projectId" uuid NOT NULL, "name" character varying(100) NOT NULL, "slug" character varying(100) NOT NULL, "description" character varying(500), "resourceIdentifier" character varying(100) NOT NULL, "cloudPlatform" character varying(100), "cloudProvider" character varying(100), "cloudRegion" character varying(100), "cloudAccountId" character varying(100), "runtimeName" character varying(100), "runtimeVersion" character varying(100), "otelCollectorStatus" character varying(100) DEFAULT 'disconnected', "agentVersion" character varying(100), "lastSeenAt" TIMESTAMP WITH TIME ZONE, "retainTelemetryDataForDays" integer, "telemetryRetentionConfig" jsonb, "createdByUserId" uuid, "deletedByUserId" uuid, CONSTRAINT "PK_CloudResource" PRIMARY KEY ("_id"))`);
13
+ await queryRunner.query(`CREATE INDEX "IDX_CloudResource_projectId" ON "CloudResource" ("projectId") `);
14
+ await queryRunner.query(`CREATE UNIQUE INDEX "UQ_CloudResource_project_resId" ON "CloudResource" ("projectId", "resourceIdentifier") `);
15
+ await queryRunner.query(`CREATE TABLE "CloudResourceOwnerTeam" ("_id" uuid NOT NULL DEFAULT uuid_generate_v4(), "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP WITH TIME ZONE, "version" integer NOT NULL, "projectId" uuid NOT NULL, "teamId" uuid NOT NULL, "cloudResourceId" uuid NOT NULL, "createdByUserId" uuid, "deletedByUserId" uuid, "isOwnerNotified" boolean NOT NULL DEFAULT false, CONSTRAINT "PK_CloudResourceOwnerTeam" PRIMARY KEY ("_id"))`);
16
+ await queryRunner.query(`CREATE INDEX "IDX_CloudResOwnerTeam_projectId" ON "CloudResourceOwnerTeam" ("projectId") `);
17
+ await queryRunner.query(`CREATE INDEX "IDX_CloudResOwnerTeam_teamId" ON "CloudResourceOwnerTeam" ("teamId") `);
18
+ await queryRunner.query(`CREATE INDEX "IDX_CloudResOwnerTeam_resId" ON "CloudResourceOwnerTeam" ("cloudResourceId") `);
19
+ await queryRunner.query(`CREATE INDEX "IDX_CloudResOwnerTeam_notified" ON "CloudResourceOwnerTeam" ("isOwnerNotified") `);
20
+ await queryRunner.query(`CREATE TABLE "CloudResourceOwnerUser" ("_id" uuid NOT NULL DEFAULT uuid_generate_v4(), "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP WITH TIME ZONE, "version" integer NOT NULL, "projectId" uuid NOT NULL, "userId" uuid NOT NULL, "cloudResourceId" uuid NOT NULL, "createdByUserId" uuid, "deletedByUserId" uuid, "isOwnerNotified" boolean NOT NULL DEFAULT false, CONSTRAINT "PK_CloudResourceOwnerUser" PRIMARY KEY ("_id"))`);
21
+ await queryRunner.query(`CREATE INDEX "IDX_CloudResOwnerUser_projectId" ON "CloudResourceOwnerUser" ("projectId") `);
22
+ await queryRunner.query(`CREATE INDEX "IDX_CloudResOwnerUser_userId" ON "CloudResourceOwnerUser" ("userId") `);
23
+ await queryRunner.query(`CREATE INDEX "IDX_CloudResOwnerUser_resId" ON "CloudResourceOwnerUser" ("cloudResourceId") `);
24
+ await queryRunner.query(`CREATE INDEX "IDX_CloudResOwnerUser_notified" ON "CloudResourceOwnerUser" ("isOwnerNotified") `);
25
+ await queryRunner.query(`CREATE TABLE "CloudResourceLabel" ("cloudResourceId" uuid NOT NULL, "labelId" uuid NOT NULL, CONSTRAINT "PK_CloudResourceLabel" PRIMARY KEY ("cloudResourceId", "labelId"))`);
26
+ await queryRunner.query(`CREATE INDEX "IDX_CloudResourceLabel_resId" ON "CloudResourceLabel" ("cloudResourceId") `);
27
+ await queryRunner.query(`CREATE INDEX "IDX_CloudResourceLabel_labelId" ON "CloudResourceLabel" ("labelId") `);
28
+ // Foreign keys: CloudResource
29
+ await queryRunner.query(`ALTER TABLE "CloudResource" ADD CONSTRAINT "FK_CloudResource_projectId" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
30
+ await queryRunner.query(`ALTER TABLE "CloudResource" ADD CONSTRAINT "FK_CloudResource_createdBy" FOREIGN KEY ("createdByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
31
+ await queryRunner.query(`ALTER TABLE "CloudResource" ADD CONSTRAINT "FK_CloudResource_deletedBy" FOREIGN KEY ("deletedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
32
+ // Foreign keys: CloudResourceOwnerTeam
33
+ await queryRunner.query(`ALTER TABLE "CloudResourceOwnerTeam" ADD CONSTRAINT "FK_CloudResOwnerTeam_projectId" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
34
+ await queryRunner.query(`ALTER TABLE "CloudResourceOwnerTeam" ADD CONSTRAINT "FK_CloudResOwnerTeam_teamId" FOREIGN KEY ("teamId") REFERENCES "Team"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
35
+ await queryRunner.query(`ALTER TABLE "CloudResourceOwnerTeam" ADD CONSTRAINT "FK_CloudResOwnerTeam_resId" FOREIGN KEY ("cloudResourceId") REFERENCES "CloudResource"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
36
+ await queryRunner.query(`ALTER TABLE "CloudResourceOwnerTeam" ADD CONSTRAINT "FK_CloudResOwnerTeam_createdBy" FOREIGN KEY ("createdByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
37
+ await queryRunner.query(`ALTER TABLE "CloudResourceOwnerTeam" ADD CONSTRAINT "FK_CloudResOwnerTeam_deletedBy" FOREIGN KEY ("deletedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
38
+ // Foreign keys: CloudResourceOwnerUser
39
+ await queryRunner.query(`ALTER TABLE "CloudResourceOwnerUser" ADD CONSTRAINT "FK_CloudResOwnerUser_projectId" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
40
+ await queryRunner.query(`ALTER TABLE "CloudResourceOwnerUser" ADD CONSTRAINT "FK_CloudResOwnerUser_userId" FOREIGN KEY ("userId") REFERENCES "User"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
41
+ await queryRunner.query(`ALTER TABLE "CloudResourceOwnerUser" ADD CONSTRAINT "FK_CloudResOwnerUser_resId" FOREIGN KEY ("cloudResourceId") REFERENCES "CloudResource"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
42
+ await queryRunner.query(`ALTER TABLE "CloudResourceOwnerUser" ADD CONSTRAINT "FK_CloudResOwnerUser_createdBy" FOREIGN KEY ("createdByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
43
+ await queryRunner.query(`ALTER TABLE "CloudResourceOwnerUser" ADD CONSTRAINT "FK_CloudResOwnerUser_deletedBy" FOREIGN KEY ("deletedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
44
+ // Foreign keys: CloudResourceLabel join table
45
+ await queryRunner.query(`ALTER TABLE "CloudResourceLabel" ADD CONSTRAINT "FK_CloudResourceLabel_resId" FOREIGN KEY ("cloudResourceId") REFERENCES "CloudResource"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
46
+ await queryRunner.query(`ALTER TABLE "CloudResourceLabel" ADD CONSTRAINT "FK_CloudResourceLabel_labelId" FOREIGN KEY ("labelId") REFERENCES "Label"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
47
+ }
48
+ async down(queryRunner) {
49
+ await queryRunner.query(`ALTER TABLE "CloudResourceLabel" DROP CONSTRAINT "FK_CloudResourceLabel_labelId"`);
50
+ await queryRunner.query(`ALTER TABLE "CloudResourceLabel" DROP CONSTRAINT "FK_CloudResourceLabel_resId"`);
51
+ await queryRunner.query(`ALTER TABLE "CloudResourceOwnerUser" DROP CONSTRAINT "FK_CloudResOwnerUser_deletedBy"`);
52
+ await queryRunner.query(`ALTER TABLE "CloudResourceOwnerUser" DROP CONSTRAINT "FK_CloudResOwnerUser_createdBy"`);
53
+ await queryRunner.query(`ALTER TABLE "CloudResourceOwnerUser" DROP CONSTRAINT "FK_CloudResOwnerUser_resId"`);
54
+ await queryRunner.query(`ALTER TABLE "CloudResourceOwnerUser" DROP CONSTRAINT "FK_CloudResOwnerUser_userId"`);
55
+ await queryRunner.query(`ALTER TABLE "CloudResourceOwnerUser" DROP CONSTRAINT "FK_CloudResOwnerUser_projectId"`);
56
+ await queryRunner.query(`ALTER TABLE "CloudResourceOwnerTeam" DROP CONSTRAINT "FK_CloudResOwnerTeam_deletedBy"`);
57
+ await queryRunner.query(`ALTER TABLE "CloudResourceOwnerTeam" DROP CONSTRAINT "FK_CloudResOwnerTeam_createdBy"`);
58
+ await queryRunner.query(`ALTER TABLE "CloudResourceOwnerTeam" DROP CONSTRAINT "FK_CloudResOwnerTeam_resId"`);
59
+ await queryRunner.query(`ALTER TABLE "CloudResourceOwnerTeam" DROP CONSTRAINT "FK_CloudResOwnerTeam_teamId"`);
60
+ await queryRunner.query(`ALTER TABLE "CloudResourceOwnerTeam" DROP CONSTRAINT "FK_CloudResOwnerTeam_projectId"`);
61
+ await queryRunner.query(`ALTER TABLE "CloudResource" DROP CONSTRAINT "FK_CloudResource_deletedBy"`);
62
+ await queryRunner.query(`ALTER TABLE "CloudResource" DROP CONSTRAINT "FK_CloudResource_createdBy"`);
63
+ await queryRunner.query(`ALTER TABLE "CloudResource" DROP CONSTRAINT "FK_CloudResource_projectId"`);
64
+ await queryRunner.query(`DROP INDEX "public"."IDX_CloudResourceLabel_labelId"`);
65
+ await queryRunner.query(`DROP INDEX "public"."IDX_CloudResourceLabel_resId"`);
66
+ await queryRunner.query(`DROP TABLE "CloudResourceLabel"`);
67
+ await queryRunner.query(`DROP INDEX "public"."IDX_CloudResOwnerUser_notified"`);
68
+ await queryRunner.query(`DROP INDEX "public"."IDX_CloudResOwnerUser_resId"`);
69
+ await queryRunner.query(`DROP INDEX "public"."IDX_CloudResOwnerUser_userId"`);
70
+ await queryRunner.query(`DROP INDEX "public"."IDX_CloudResOwnerUser_projectId"`);
71
+ await queryRunner.query(`DROP TABLE "CloudResourceOwnerUser"`);
72
+ await queryRunner.query(`DROP INDEX "public"."IDX_CloudResOwnerTeam_notified"`);
73
+ await queryRunner.query(`DROP INDEX "public"."IDX_CloudResOwnerTeam_resId"`);
74
+ await queryRunner.query(`DROP INDEX "public"."IDX_CloudResOwnerTeam_teamId"`);
75
+ await queryRunner.query(`DROP INDEX "public"."IDX_CloudResOwnerTeam_projectId"`);
76
+ await queryRunner.query(`DROP TABLE "CloudResourceOwnerTeam"`);
77
+ await queryRunner.query(`DROP INDEX "public"."UQ_CloudResource_project_resId"`);
78
+ await queryRunner.query(`DROP INDEX "public"."IDX_CloudResource_projectId"`);
79
+ await queryRunner.query(`DROP TABLE "CloudResource"`);
80
+ }
81
+ }
82
+ //# sourceMappingURL=1780935387827-AddCloudResourceTables.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1780935387827-AddCloudResourceTables.js","sourceRoot":"","sources":["../../../../../../Server/Infrastructure/Postgres/SchemaMigrations/1780935387827-AddCloudResourceTables.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ /*
2
+ * Phase 3: Browser / Mobile RUM resource type. Creates the RumApplication
3
+ * resource table, its owner-user / owner-team tables, and the label join
4
+ * table — mirroring the other telemetry-resource shapes so the polymorphic
5
+ * telemetry serviceId can point at a RumApplication row. RUM is keyed per
6
+ * application (service.name), never per end-user device.
7
+ */
8
+ export class AddRumApplicationTables1780936579718 {
9
+ constructor() {
10
+ this.name = "AddRumApplicationTables1780936579718";
11
+ }
12
+ async up(queryRunner) {
13
+ await queryRunner.query(`CREATE TABLE "RumApplication" ("_id" uuid NOT NULL DEFAULT uuid_generate_v4(), "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP WITH TIME ZONE, "version" integer NOT NULL, "projectId" uuid NOT NULL, "name" character varying(100) NOT NULL, "slug" character varying(100) NOT NULL, "description" character varying(500), "appIdentifier" character varying(100) NOT NULL, "clientType" character varying(100), "otelCollectorStatus" character varying(100) DEFAULT 'disconnected', "agentVersion" character varying(100), "lastSeenAt" TIMESTAMP WITH TIME ZONE, "retainTelemetryDataForDays" integer, "telemetryRetentionConfig" jsonb, "createdByUserId" uuid, "deletedByUserId" uuid, CONSTRAINT "PK_RumApplication" PRIMARY KEY ("_id"))`);
14
+ await queryRunner.query(`CREATE INDEX "IDX_RumApplication_projectId" ON "RumApplication" ("projectId") `);
15
+ await queryRunner.query(`CREATE UNIQUE INDEX "UQ_RumApplication_project_appId" ON "RumApplication" ("projectId", "appIdentifier") `);
16
+ await queryRunner.query(`CREATE TABLE "RumApplicationOwnerTeam" ("_id" uuid NOT NULL DEFAULT uuid_generate_v4(), "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP WITH TIME ZONE, "version" integer NOT NULL, "projectId" uuid NOT NULL, "teamId" uuid NOT NULL, "rumApplicationId" uuid NOT NULL, "createdByUserId" uuid, "deletedByUserId" uuid, "isOwnerNotified" boolean NOT NULL DEFAULT false, CONSTRAINT "PK_RumApplicationOwnerTeam" PRIMARY KEY ("_id"))`);
17
+ await queryRunner.query(`CREATE INDEX "IDX_RumAppOwnerTeam_projectId" ON "RumApplicationOwnerTeam" ("projectId") `);
18
+ await queryRunner.query(`CREATE INDEX "IDX_RumAppOwnerTeam_teamId" ON "RumApplicationOwnerTeam" ("teamId") `);
19
+ await queryRunner.query(`CREATE INDEX "IDX_RumAppOwnerTeam_appId" ON "RumApplicationOwnerTeam" ("rumApplicationId") `);
20
+ await queryRunner.query(`CREATE INDEX "IDX_RumAppOwnerTeam_notified" ON "RumApplicationOwnerTeam" ("isOwnerNotified") `);
21
+ await queryRunner.query(`CREATE TABLE "RumApplicationOwnerUser" ("_id" uuid NOT NULL DEFAULT uuid_generate_v4(), "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP WITH TIME ZONE, "version" integer NOT NULL, "projectId" uuid NOT NULL, "userId" uuid NOT NULL, "rumApplicationId" uuid NOT NULL, "createdByUserId" uuid, "deletedByUserId" uuid, "isOwnerNotified" boolean NOT NULL DEFAULT false, CONSTRAINT "PK_RumApplicationOwnerUser" PRIMARY KEY ("_id"))`);
22
+ await queryRunner.query(`CREATE INDEX "IDX_RumAppOwnerUser_projectId" ON "RumApplicationOwnerUser" ("projectId") `);
23
+ await queryRunner.query(`CREATE INDEX "IDX_RumAppOwnerUser_userId" ON "RumApplicationOwnerUser" ("userId") `);
24
+ await queryRunner.query(`CREATE INDEX "IDX_RumAppOwnerUser_appId" ON "RumApplicationOwnerUser" ("rumApplicationId") `);
25
+ await queryRunner.query(`CREATE INDEX "IDX_RumAppOwnerUser_notified" ON "RumApplicationOwnerUser" ("isOwnerNotified") `);
26
+ await queryRunner.query(`CREATE TABLE "RumApplicationLabel" ("rumApplicationId" uuid NOT NULL, "labelId" uuid NOT NULL, CONSTRAINT "PK_RumApplicationLabel" PRIMARY KEY ("rumApplicationId", "labelId"))`);
27
+ await queryRunner.query(`CREATE INDEX "IDX_RumApplicationLabel_appId" ON "RumApplicationLabel" ("rumApplicationId") `);
28
+ await queryRunner.query(`CREATE INDEX "IDX_RumApplicationLabel_labelId" ON "RumApplicationLabel" ("labelId") `);
29
+ // Foreign keys: RumApplication
30
+ await queryRunner.query(`ALTER TABLE "RumApplication" ADD CONSTRAINT "FK_RumApplication_projectId" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
31
+ await queryRunner.query(`ALTER TABLE "RumApplication" ADD CONSTRAINT "FK_RumApplication_createdBy" FOREIGN KEY ("createdByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
32
+ await queryRunner.query(`ALTER TABLE "RumApplication" ADD CONSTRAINT "FK_RumApplication_deletedBy" FOREIGN KEY ("deletedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
33
+ // Foreign keys: RumApplicationOwnerTeam
34
+ await queryRunner.query(`ALTER TABLE "RumApplicationOwnerTeam" ADD CONSTRAINT "FK_RumAppOwnerTeam_projectId" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
35
+ await queryRunner.query(`ALTER TABLE "RumApplicationOwnerTeam" ADD CONSTRAINT "FK_RumAppOwnerTeam_teamId" FOREIGN KEY ("teamId") REFERENCES "Team"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
36
+ await queryRunner.query(`ALTER TABLE "RumApplicationOwnerTeam" ADD CONSTRAINT "FK_RumAppOwnerTeam_appId" FOREIGN KEY ("rumApplicationId") REFERENCES "RumApplication"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
37
+ await queryRunner.query(`ALTER TABLE "RumApplicationOwnerTeam" ADD CONSTRAINT "FK_RumAppOwnerTeam_createdBy" FOREIGN KEY ("createdByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
38
+ await queryRunner.query(`ALTER TABLE "RumApplicationOwnerTeam" ADD CONSTRAINT "FK_RumAppOwnerTeam_deletedBy" FOREIGN KEY ("deletedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
39
+ // Foreign keys: RumApplicationOwnerUser
40
+ await queryRunner.query(`ALTER TABLE "RumApplicationOwnerUser" ADD CONSTRAINT "FK_RumAppOwnerUser_projectId" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
41
+ await queryRunner.query(`ALTER TABLE "RumApplicationOwnerUser" ADD CONSTRAINT "FK_RumAppOwnerUser_userId" FOREIGN KEY ("userId") REFERENCES "User"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
42
+ await queryRunner.query(`ALTER TABLE "RumApplicationOwnerUser" ADD CONSTRAINT "FK_RumAppOwnerUser_appId" FOREIGN KEY ("rumApplicationId") REFERENCES "RumApplication"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
43
+ await queryRunner.query(`ALTER TABLE "RumApplicationOwnerUser" ADD CONSTRAINT "FK_RumAppOwnerUser_createdBy" FOREIGN KEY ("createdByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
44
+ await queryRunner.query(`ALTER TABLE "RumApplicationOwnerUser" ADD CONSTRAINT "FK_RumAppOwnerUser_deletedBy" FOREIGN KEY ("deletedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
45
+ // Foreign keys: RumApplicationLabel join table
46
+ await queryRunner.query(`ALTER TABLE "RumApplicationLabel" ADD CONSTRAINT "FK_RumApplicationLabel_appId" FOREIGN KEY ("rumApplicationId") REFERENCES "RumApplication"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
47
+ await queryRunner.query(`ALTER TABLE "RumApplicationLabel" ADD CONSTRAINT "FK_RumApplicationLabel_labelId" FOREIGN KEY ("labelId") REFERENCES "Label"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
48
+ }
49
+ async down(queryRunner) {
50
+ await queryRunner.query(`ALTER TABLE "RumApplicationLabel" DROP CONSTRAINT "FK_RumApplicationLabel_labelId"`);
51
+ await queryRunner.query(`ALTER TABLE "RumApplicationLabel" DROP CONSTRAINT "FK_RumApplicationLabel_appId"`);
52
+ await queryRunner.query(`ALTER TABLE "RumApplicationOwnerUser" DROP CONSTRAINT "FK_RumAppOwnerUser_deletedBy"`);
53
+ await queryRunner.query(`ALTER TABLE "RumApplicationOwnerUser" DROP CONSTRAINT "FK_RumAppOwnerUser_createdBy"`);
54
+ await queryRunner.query(`ALTER TABLE "RumApplicationOwnerUser" DROP CONSTRAINT "FK_RumAppOwnerUser_appId"`);
55
+ await queryRunner.query(`ALTER TABLE "RumApplicationOwnerUser" DROP CONSTRAINT "FK_RumAppOwnerUser_userId"`);
56
+ await queryRunner.query(`ALTER TABLE "RumApplicationOwnerUser" DROP CONSTRAINT "FK_RumAppOwnerUser_projectId"`);
57
+ await queryRunner.query(`ALTER TABLE "RumApplicationOwnerTeam" DROP CONSTRAINT "FK_RumAppOwnerTeam_deletedBy"`);
58
+ await queryRunner.query(`ALTER TABLE "RumApplicationOwnerTeam" DROP CONSTRAINT "FK_RumAppOwnerTeam_createdBy"`);
59
+ await queryRunner.query(`ALTER TABLE "RumApplicationOwnerTeam" DROP CONSTRAINT "FK_RumAppOwnerTeam_appId"`);
60
+ await queryRunner.query(`ALTER TABLE "RumApplicationOwnerTeam" DROP CONSTRAINT "FK_RumAppOwnerTeam_teamId"`);
61
+ await queryRunner.query(`ALTER TABLE "RumApplicationOwnerTeam" DROP CONSTRAINT "FK_RumAppOwnerTeam_projectId"`);
62
+ await queryRunner.query(`ALTER TABLE "RumApplication" DROP CONSTRAINT "FK_RumApplication_deletedBy"`);
63
+ await queryRunner.query(`ALTER TABLE "RumApplication" DROP CONSTRAINT "FK_RumApplication_createdBy"`);
64
+ await queryRunner.query(`ALTER TABLE "RumApplication" DROP CONSTRAINT "FK_RumApplication_projectId"`);
65
+ await queryRunner.query(`DROP INDEX "public"."IDX_RumApplicationLabel_labelId"`);
66
+ await queryRunner.query(`DROP INDEX "public"."IDX_RumApplicationLabel_appId"`);
67
+ await queryRunner.query(`DROP TABLE "RumApplicationLabel"`);
68
+ await queryRunner.query(`DROP INDEX "public"."IDX_RumAppOwnerUser_notified"`);
69
+ await queryRunner.query(`DROP INDEX "public"."IDX_RumAppOwnerUser_appId"`);
70
+ await queryRunner.query(`DROP INDEX "public"."IDX_RumAppOwnerUser_userId"`);
71
+ await queryRunner.query(`DROP INDEX "public"."IDX_RumAppOwnerUser_projectId"`);
72
+ await queryRunner.query(`DROP TABLE "RumApplicationOwnerUser"`);
73
+ await queryRunner.query(`DROP INDEX "public"."IDX_RumAppOwnerTeam_notified"`);
74
+ await queryRunner.query(`DROP INDEX "public"."IDX_RumAppOwnerTeam_appId"`);
75
+ await queryRunner.query(`DROP INDEX "public"."IDX_RumAppOwnerTeam_teamId"`);
76
+ await queryRunner.query(`DROP INDEX "public"."IDX_RumAppOwnerTeam_projectId"`);
77
+ await queryRunner.query(`DROP TABLE "RumApplicationOwnerTeam"`);
78
+ await queryRunner.query(`DROP INDEX "public"."UQ_RumApplication_project_appId"`);
79
+ await queryRunner.query(`DROP INDEX "public"."IDX_RumApplication_projectId"`);
80
+ await queryRunner.query(`DROP TABLE "RumApplication"`);
81
+ }
82
+ }
83
+ //# sourceMappingURL=1780936579718-AddRumApplicationTables.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1780936579718-AddRumApplicationTables.js","sourceRoot":"","sources":["../../../../../../Server/Infrastructure/Postgres/SchemaMigrations/1780936579718-AddRumApplicationTables.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ /*
2
+ * Bucket A (Serverless): label-rule + owner-rule tables that drive automatic
3
+ * label attachment and owner assignment when a ServerlessFunction is created.
4
+ * Mirrors the Host*Rule shape (match criteria via labels + name/description
5
+ * regex; actions via labelsToAdd / ownerUsers / ownerTeams).
6
+ */
7
+ export class AddServerlessFunctionRuleTables1780938407319 {
8
+ constructor() {
9
+ this.name = "AddServerlessFunctionRuleTables1780938407319";
10
+ }
11
+ async up(queryRunner) {
12
+ // Label rule table
13
+ await queryRunner.query(`CREATE TABLE "ServerlessFunctionLabelRule" ("_id" uuid NOT NULL DEFAULT uuid_generate_v4(), "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP WITH TIME ZONE, "version" integer NOT NULL, "projectId" uuid NOT NULL, "name" character varying(100) NOT NULL, "description" character varying(500), "isEnabled" boolean NOT NULL DEFAULT true, "nameRegexPattern" character varying(500), "descriptionRegexPattern" character varying(500), "createdByUserId" uuid, "deletedByUserId" uuid, CONSTRAINT "PK_SrvlessFnLabelRule" PRIMARY KEY ("_id"))`);
14
+ await queryRunner.query(`CREATE INDEX "IDX_SrvlessFnLabelRule_projectId" ON "ServerlessFunctionLabelRule" ("projectId") `);
15
+ await queryRunner.query(`CREATE INDEX "IDX_SrvlessFnLabelRule_name" ON "ServerlessFunctionLabelRule" ("name") `);
16
+ await queryRunner.query(`CREATE INDEX "IDX_SrvlessFnLabelRule_enabled" ON "ServerlessFunctionLabelRule" ("isEnabled") `);
17
+ // Owner rule table
18
+ await queryRunner.query(`CREATE TABLE "ServerlessFunctionOwnerRule" ("_id" uuid NOT NULL DEFAULT uuid_generate_v4(), "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP WITH TIME ZONE, "version" integer NOT NULL, "projectId" uuid NOT NULL, "name" character varying(100) NOT NULL, "description" character varying(500), "isEnabled" boolean NOT NULL DEFAULT true, "notifyOwners" boolean NOT NULL DEFAULT true, "nameRegexPattern" character varying(500), "descriptionRegexPattern" character varying(500), "createdByUserId" uuid, "deletedByUserId" uuid, CONSTRAINT "PK_SrvlessFnOwnerRule" PRIMARY KEY ("_id"))`);
19
+ await queryRunner.query(`CREATE INDEX "IDX_SrvlessFnOwnerRule_projectId" ON "ServerlessFunctionOwnerRule" ("projectId") `);
20
+ await queryRunner.query(`CREATE INDEX "IDX_SrvlessFnOwnerRule_name" ON "ServerlessFunctionOwnerRule" ("name") `);
21
+ await queryRunner.query(`CREATE INDEX "IDX_SrvlessFnOwnerRule_enabled" ON "ServerlessFunctionOwnerRule" ("isEnabled") `);
22
+ // Join tables
23
+ await queryRunner.query(`CREATE TABLE "SrvlessFnLabelRuleMatchLabel" ("serverlessFunctionLabelRuleId" uuid NOT NULL, "labelId" uuid NOT NULL, CONSTRAINT "PK_SrvlessFnLabelRuleMatchLabel" PRIMARY KEY ("serverlessFunctionLabelRuleId", "labelId"))`);
24
+ await queryRunner.query(`CREATE INDEX "IDX_SrvlessFnLRMatchLabel_rule" ON "SrvlessFnLabelRuleMatchLabel" ("serverlessFunctionLabelRuleId") `);
25
+ await queryRunner.query(`CREATE INDEX "IDX_SrvlessFnLRMatchLabel_label" ON "SrvlessFnLabelRuleMatchLabel" ("labelId") `);
26
+ await queryRunner.query(`CREATE TABLE "SrvlessFnLabelRuleAddLabel" ("serverlessFunctionLabelRuleId" uuid NOT NULL, "labelId" uuid NOT NULL, CONSTRAINT "PK_SrvlessFnLabelRuleAddLabel" PRIMARY KEY ("serverlessFunctionLabelRuleId", "labelId"))`);
27
+ await queryRunner.query(`CREATE INDEX "IDX_SrvlessFnLRAddLabel_rule" ON "SrvlessFnLabelRuleAddLabel" ("serverlessFunctionLabelRuleId") `);
28
+ await queryRunner.query(`CREATE INDEX "IDX_SrvlessFnLRAddLabel_label" ON "SrvlessFnLabelRuleAddLabel" ("labelId") `);
29
+ await queryRunner.query(`CREATE TABLE "SrvlessFnOwnerRuleMatchLabel" ("serverlessFunctionOwnerRuleId" uuid NOT NULL, "labelId" uuid NOT NULL, CONSTRAINT "PK_SrvlessFnOwnerRuleMatchLabel" PRIMARY KEY ("serverlessFunctionOwnerRuleId", "labelId"))`);
30
+ await queryRunner.query(`CREATE INDEX "IDX_SrvlessFnORMatchLabel_rule" ON "SrvlessFnOwnerRuleMatchLabel" ("serverlessFunctionOwnerRuleId") `);
31
+ await queryRunner.query(`CREATE INDEX "IDX_SrvlessFnORMatchLabel_label" ON "SrvlessFnOwnerRuleMatchLabel" ("labelId") `);
32
+ await queryRunner.query(`CREATE TABLE "SrvlessFnOwnerRuleUser" ("serverlessFunctionOwnerRuleId" uuid NOT NULL, "userId" uuid NOT NULL, CONSTRAINT "PK_SrvlessFnOwnerRuleUser" PRIMARY KEY ("serverlessFunctionOwnerRuleId", "userId"))`);
33
+ await queryRunner.query(`CREATE INDEX "IDX_SrvlessFnORUser_rule" ON "SrvlessFnOwnerRuleUser" ("serverlessFunctionOwnerRuleId") `);
34
+ await queryRunner.query(`CREATE INDEX "IDX_SrvlessFnORUser_user" ON "SrvlessFnOwnerRuleUser" ("userId") `);
35
+ await queryRunner.query(`CREATE TABLE "SrvlessFnOwnerRuleTeam" ("serverlessFunctionOwnerRuleId" uuid NOT NULL, "teamId" uuid NOT NULL, CONSTRAINT "PK_SrvlessFnOwnerRuleTeam" PRIMARY KEY ("serverlessFunctionOwnerRuleId", "teamId"))`);
36
+ await queryRunner.query(`CREATE INDEX "IDX_SrvlessFnORTeam_rule" ON "SrvlessFnOwnerRuleTeam" ("serverlessFunctionOwnerRuleId") `);
37
+ await queryRunner.query(`CREATE INDEX "IDX_SrvlessFnORTeam_team" ON "SrvlessFnOwnerRuleTeam" ("teamId") `);
38
+ // Foreign keys: rule tables -> Project / User
39
+ await queryRunner.query(`ALTER TABLE "ServerlessFunctionLabelRule" ADD CONSTRAINT "FK_SrvlessFnLabelRule_project" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
40
+ await queryRunner.query(`ALTER TABLE "ServerlessFunctionLabelRule" ADD CONSTRAINT "FK_SrvlessFnLabelRule_createdBy" FOREIGN KEY ("createdByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
41
+ await queryRunner.query(`ALTER TABLE "ServerlessFunctionLabelRule" ADD CONSTRAINT "FK_SrvlessFnLabelRule_deletedBy" FOREIGN KEY ("deletedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
42
+ await queryRunner.query(`ALTER TABLE "ServerlessFunctionOwnerRule" ADD CONSTRAINT "FK_SrvlessFnOwnerRule_project" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
43
+ await queryRunner.query(`ALTER TABLE "ServerlessFunctionOwnerRule" ADD CONSTRAINT "FK_SrvlessFnOwnerRule_createdBy" FOREIGN KEY ("createdByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
44
+ await queryRunner.query(`ALTER TABLE "ServerlessFunctionOwnerRule" ADD CONSTRAINT "FK_SrvlessFnOwnerRule_deletedBy" FOREIGN KEY ("deletedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
45
+ // Foreign keys: join tables
46
+ await queryRunner.query(`ALTER TABLE "SrvlessFnLabelRuleMatchLabel" ADD CONSTRAINT "FK_SrvlessFnLRMatchLabel_rule" FOREIGN KEY ("serverlessFunctionLabelRuleId") REFERENCES "ServerlessFunctionLabelRule"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
47
+ await queryRunner.query(`ALTER TABLE "SrvlessFnLabelRuleMatchLabel" ADD CONSTRAINT "FK_SrvlessFnLRMatchLabel_label" FOREIGN KEY ("labelId") REFERENCES "Label"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
48
+ await queryRunner.query(`ALTER TABLE "SrvlessFnLabelRuleAddLabel" ADD CONSTRAINT "FK_SrvlessFnLRAddLabel_rule" FOREIGN KEY ("serverlessFunctionLabelRuleId") REFERENCES "ServerlessFunctionLabelRule"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
49
+ await queryRunner.query(`ALTER TABLE "SrvlessFnLabelRuleAddLabel" ADD CONSTRAINT "FK_SrvlessFnLRAddLabel_label" FOREIGN KEY ("labelId") REFERENCES "Label"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
50
+ await queryRunner.query(`ALTER TABLE "SrvlessFnOwnerRuleMatchLabel" ADD CONSTRAINT "FK_SrvlessFnORMatchLabel_rule" FOREIGN KEY ("serverlessFunctionOwnerRuleId") REFERENCES "ServerlessFunctionOwnerRule"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
51
+ await queryRunner.query(`ALTER TABLE "SrvlessFnOwnerRuleMatchLabel" ADD CONSTRAINT "FK_SrvlessFnORMatchLabel_label" FOREIGN KEY ("labelId") REFERENCES "Label"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
52
+ await queryRunner.query(`ALTER TABLE "SrvlessFnOwnerRuleUser" ADD CONSTRAINT "FK_SrvlessFnORUser_rule" FOREIGN KEY ("serverlessFunctionOwnerRuleId") REFERENCES "ServerlessFunctionOwnerRule"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
53
+ await queryRunner.query(`ALTER TABLE "SrvlessFnOwnerRuleUser" ADD CONSTRAINT "FK_SrvlessFnORUser_user" FOREIGN KEY ("userId") REFERENCES "User"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
54
+ await queryRunner.query(`ALTER TABLE "SrvlessFnOwnerRuleTeam" ADD CONSTRAINT "FK_SrvlessFnORTeam_rule" FOREIGN KEY ("serverlessFunctionOwnerRuleId") REFERENCES "ServerlessFunctionOwnerRule"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
55
+ await queryRunner.query(`ALTER TABLE "SrvlessFnOwnerRuleTeam" ADD CONSTRAINT "FK_SrvlessFnORTeam_team" FOREIGN KEY ("teamId") REFERENCES "Team"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
56
+ }
57
+ async down(queryRunner) {
58
+ await queryRunner.query(`DROP TABLE "SrvlessFnOwnerRuleTeam"`);
59
+ await queryRunner.query(`DROP TABLE "SrvlessFnOwnerRuleUser"`);
60
+ await queryRunner.query(`DROP TABLE "SrvlessFnOwnerRuleMatchLabel"`);
61
+ await queryRunner.query(`DROP TABLE "SrvlessFnLabelRuleAddLabel"`);
62
+ await queryRunner.query(`DROP TABLE "SrvlessFnLabelRuleMatchLabel"`);
63
+ await queryRunner.query(`DROP TABLE "ServerlessFunctionOwnerRule"`);
64
+ await queryRunner.query(`DROP TABLE "ServerlessFunctionLabelRule"`);
65
+ }
66
+ }
67
+ //# sourceMappingURL=1780938407319-AddServerlessFunctionRuleTables.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1780938407319-AddServerlessFunctionRuleTables.js","sourceRoot":"","sources":["../../../../../../Server/Infrastructure/Postgres/SchemaMigrations/1780938407319-AddServerlessFunctionRuleTables.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /*
2
+ * Bucket A (Cloud): label-rule + owner-rule tables that drive automatic label
3
+ * attachment and owner assignment when a CloudResource is created.
4
+ */
5
+ export class AddCloudResourceRuleTables1780940721814 {
6
+ constructor() {
7
+ this.name = "AddCloudResourceRuleTables1780940721814";
8
+ }
9
+ async up(queryRunner) {
10
+ await queryRunner.query(`CREATE TABLE "CloudResourceLabelRule" ("_id" uuid NOT NULL DEFAULT uuid_generate_v4(), "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP WITH TIME ZONE, "version" integer NOT NULL, "projectId" uuid NOT NULL, "name" character varying(100) NOT NULL, "description" character varying(500), "isEnabled" boolean NOT NULL DEFAULT true, "nameRegexPattern" character varying(500), "descriptionRegexPattern" character varying(500), "createdByUserId" uuid, "deletedByUserId" uuid, CONSTRAINT "PK_CloudResLabelRule" PRIMARY KEY ("_id"))`);
11
+ await queryRunner.query(`CREATE INDEX "IDX_CloudResLabelRule_projectId" ON "CloudResourceLabelRule" ("projectId") `);
12
+ await queryRunner.query(`CREATE INDEX "IDX_CloudResLabelRule_name" ON "CloudResourceLabelRule" ("name") `);
13
+ await queryRunner.query(`CREATE INDEX "IDX_CloudResLabelRule_enabled" ON "CloudResourceLabelRule" ("isEnabled") `);
14
+ await queryRunner.query(`CREATE TABLE "CloudResourceOwnerRule" ("_id" uuid NOT NULL DEFAULT uuid_generate_v4(), "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP WITH TIME ZONE, "version" integer NOT NULL, "projectId" uuid NOT NULL, "name" character varying(100) NOT NULL, "description" character varying(500), "isEnabled" boolean NOT NULL DEFAULT true, "notifyOwners" boolean NOT NULL DEFAULT true, "nameRegexPattern" character varying(500), "descriptionRegexPattern" character varying(500), "createdByUserId" uuid, "deletedByUserId" uuid, CONSTRAINT "PK_CloudResOwnerRule" PRIMARY KEY ("_id"))`);
15
+ await queryRunner.query(`CREATE INDEX "IDX_CloudResOwnerRule_projectId" ON "CloudResourceOwnerRule" ("projectId") `);
16
+ await queryRunner.query(`CREATE INDEX "IDX_CloudResOwnerRule_name" ON "CloudResourceOwnerRule" ("name") `);
17
+ await queryRunner.query(`CREATE INDEX "IDX_CloudResOwnerRule_enabled" ON "CloudResourceOwnerRule" ("isEnabled") `);
18
+ await queryRunner.query(`CREATE TABLE "CloudResLabelRuleMatchLabel" ("cloudResourceLabelRuleId" uuid NOT NULL, "labelId" uuid NOT NULL, CONSTRAINT "PK_CloudResLabelRuleMatchLabel" PRIMARY KEY ("cloudResourceLabelRuleId", "labelId"))`);
19
+ await queryRunner.query(`CREATE INDEX "IDX_CloudResLRMatchLabel_rule" ON "CloudResLabelRuleMatchLabel" ("cloudResourceLabelRuleId") `);
20
+ await queryRunner.query(`CREATE INDEX "IDX_CloudResLRMatchLabel_label" ON "CloudResLabelRuleMatchLabel" ("labelId") `);
21
+ await queryRunner.query(`CREATE TABLE "CloudResLabelRuleAddLabel" ("cloudResourceLabelRuleId" uuid NOT NULL, "labelId" uuid NOT NULL, CONSTRAINT "PK_CloudResLabelRuleAddLabel" PRIMARY KEY ("cloudResourceLabelRuleId", "labelId"))`);
22
+ await queryRunner.query(`CREATE INDEX "IDX_CloudResLRAddLabel_rule" ON "CloudResLabelRuleAddLabel" ("cloudResourceLabelRuleId") `);
23
+ await queryRunner.query(`CREATE INDEX "IDX_CloudResLRAddLabel_label" ON "CloudResLabelRuleAddLabel" ("labelId") `);
24
+ await queryRunner.query(`CREATE TABLE "CloudResOwnerRuleMatchLabel" ("cloudResourceOwnerRuleId" uuid NOT NULL, "labelId" uuid NOT NULL, CONSTRAINT "PK_CloudResOwnerRuleMatchLabel" PRIMARY KEY ("cloudResourceOwnerRuleId", "labelId"))`);
25
+ await queryRunner.query(`CREATE INDEX "IDX_CloudResORMatchLabel_rule" ON "CloudResOwnerRuleMatchLabel" ("cloudResourceOwnerRuleId") `);
26
+ await queryRunner.query(`CREATE INDEX "IDX_CloudResORMatchLabel_label" ON "CloudResOwnerRuleMatchLabel" ("labelId") `);
27
+ await queryRunner.query(`CREATE TABLE "CloudResOwnerRuleUser" ("cloudResourceOwnerRuleId" uuid NOT NULL, "userId" uuid NOT NULL, CONSTRAINT "PK_CloudResOwnerRuleUser" PRIMARY KEY ("cloudResourceOwnerRuleId", "userId"))`);
28
+ await queryRunner.query(`CREATE INDEX "IDX_CloudResORUser_rule" ON "CloudResOwnerRuleUser" ("cloudResourceOwnerRuleId") `);
29
+ await queryRunner.query(`CREATE INDEX "IDX_CloudResORUser_user" ON "CloudResOwnerRuleUser" ("userId") `);
30
+ await queryRunner.query(`CREATE TABLE "CloudResOwnerRuleTeam" ("cloudResourceOwnerRuleId" uuid NOT NULL, "teamId" uuid NOT NULL, CONSTRAINT "PK_CloudResOwnerRuleTeam" PRIMARY KEY ("cloudResourceOwnerRuleId", "teamId"))`);
31
+ await queryRunner.query(`CREATE INDEX "IDX_CloudResORTeam_rule" ON "CloudResOwnerRuleTeam" ("cloudResourceOwnerRuleId") `);
32
+ await queryRunner.query(`CREATE INDEX "IDX_CloudResORTeam_team" ON "CloudResOwnerRuleTeam" ("teamId") `);
33
+ await queryRunner.query(`ALTER TABLE "CloudResourceLabelRule" ADD CONSTRAINT "FK_CloudResLabelRule_project" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
34
+ await queryRunner.query(`ALTER TABLE "CloudResourceLabelRule" ADD CONSTRAINT "FK_CloudResLabelRule_createdBy" FOREIGN KEY ("createdByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
35
+ await queryRunner.query(`ALTER TABLE "CloudResourceLabelRule" ADD CONSTRAINT "FK_CloudResLabelRule_deletedBy" FOREIGN KEY ("deletedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
36
+ await queryRunner.query(`ALTER TABLE "CloudResourceOwnerRule" ADD CONSTRAINT "FK_CloudResOwnerRule_project" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
37
+ await queryRunner.query(`ALTER TABLE "CloudResourceOwnerRule" ADD CONSTRAINT "FK_CloudResOwnerRule_createdBy" FOREIGN KEY ("createdByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
38
+ await queryRunner.query(`ALTER TABLE "CloudResourceOwnerRule" ADD CONSTRAINT "FK_CloudResOwnerRule_deletedBy" FOREIGN KEY ("deletedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
39
+ await queryRunner.query(`ALTER TABLE "CloudResLabelRuleMatchLabel" ADD CONSTRAINT "FK_CloudResLRMatchLabel_rule" FOREIGN KEY ("cloudResourceLabelRuleId") REFERENCES "CloudResourceLabelRule"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
40
+ await queryRunner.query(`ALTER TABLE "CloudResLabelRuleMatchLabel" ADD CONSTRAINT "FK_CloudResLRMatchLabel_label" FOREIGN KEY ("labelId") REFERENCES "Label"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
41
+ await queryRunner.query(`ALTER TABLE "CloudResLabelRuleAddLabel" ADD CONSTRAINT "FK_CloudResLRAddLabel_rule" FOREIGN KEY ("cloudResourceLabelRuleId") REFERENCES "CloudResourceLabelRule"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
42
+ await queryRunner.query(`ALTER TABLE "CloudResLabelRuleAddLabel" ADD CONSTRAINT "FK_CloudResLRAddLabel_label" FOREIGN KEY ("labelId") REFERENCES "Label"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
43
+ await queryRunner.query(`ALTER TABLE "CloudResOwnerRuleMatchLabel" ADD CONSTRAINT "FK_CloudResORMatchLabel_rule" FOREIGN KEY ("cloudResourceOwnerRuleId") REFERENCES "CloudResourceOwnerRule"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
44
+ await queryRunner.query(`ALTER TABLE "CloudResOwnerRuleMatchLabel" ADD CONSTRAINT "FK_CloudResORMatchLabel_label" FOREIGN KEY ("labelId") REFERENCES "Label"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
45
+ await queryRunner.query(`ALTER TABLE "CloudResOwnerRuleUser" ADD CONSTRAINT "FK_CloudResORUser_rule" FOREIGN KEY ("cloudResourceOwnerRuleId") REFERENCES "CloudResourceOwnerRule"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
46
+ await queryRunner.query(`ALTER TABLE "CloudResOwnerRuleUser" ADD CONSTRAINT "FK_CloudResORUser_user" FOREIGN KEY ("userId") REFERENCES "User"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
47
+ await queryRunner.query(`ALTER TABLE "CloudResOwnerRuleTeam" ADD CONSTRAINT "FK_CloudResORTeam_rule" FOREIGN KEY ("cloudResourceOwnerRuleId") REFERENCES "CloudResourceOwnerRule"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
48
+ await queryRunner.query(`ALTER TABLE "CloudResOwnerRuleTeam" ADD CONSTRAINT "FK_CloudResORTeam_team" FOREIGN KEY ("teamId") REFERENCES "Team"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
49
+ }
50
+ async down(queryRunner) {
51
+ await queryRunner.query(`DROP TABLE "CloudResOwnerRuleTeam"`);
52
+ await queryRunner.query(`DROP TABLE "CloudResOwnerRuleUser"`);
53
+ await queryRunner.query(`DROP TABLE "CloudResOwnerRuleMatchLabel"`);
54
+ await queryRunner.query(`DROP TABLE "CloudResLabelRuleAddLabel"`);
55
+ await queryRunner.query(`DROP TABLE "CloudResLabelRuleMatchLabel"`);
56
+ await queryRunner.query(`DROP TABLE "CloudResourceOwnerRule"`);
57
+ await queryRunner.query(`DROP TABLE "CloudResourceLabelRule"`);
58
+ }
59
+ }
60
+ //# sourceMappingURL=1780940721814-AddCloudResourceRuleTables.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1780940721814-AddCloudResourceRuleTables.js","sourceRoot":"","sources":["../../../../../../Server/Infrastructure/Postgres/SchemaMigrations/1780940721814-AddCloudResourceRuleTables.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /*
2
+ * Bucket A (RUM): label-rule + owner-rule tables that drive automatic label
3
+ * attachment and owner assignment when a RumApplication is created.
4
+ */
5
+ export class AddRumApplicationRuleTables1780940998002 {
6
+ constructor() {
7
+ this.name = "AddRumApplicationRuleTables1780940998002";
8
+ }
9
+ async up(queryRunner) {
10
+ await queryRunner.query(`CREATE TABLE "RumApplicationLabelRule" ("_id" uuid NOT NULL DEFAULT uuid_generate_v4(), "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP WITH TIME ZONE, "version" integer NOT NULL, "projectId" uuid NOT NULL, "name" character varying(100) NOT NULL, "description" character varying(500), "isEnabled" boolean NOT NULL DEFAULT true, "nameRegexPattern" character varying(500), "descriptionRegexPattern" character varying(500), "createdByUserId" uuid, "deletedByUserId" uuid, CONSTRAINT "PK_RumAppLabelRule" PRIMARY KEY ("_id"))`);
11
+ await queryRunner.query(`CREATE INDEX "IDX_RumAppLabelRule_projectId" ON "RumApplicationLabelRule" ("projectId") `);
12
+ await queryRunner.query(`CREATE INDEX "IDX_RumAppLabelRule_name" ON "RumApplicationLabelRule" ("name") `);
13
+ await queryRunner.query(`CREATE INDEX "IDX_RumAppLabelRule_enabled" ON "RumApplicationLabelRule" ("isEnabled") `);
14
+ await queryRunner.query(`CREATE TABLE "RumApplicationOwnerRule" ("_id" uuid NOT NULL DEFAULT uuid_generate_v4(), "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP WITH TIME ZONE, "version" integer NOT NULL, "projectId" uuid NOT NULL, "name" character varying(100) NOT NULL, "description" character varying(500), "isEnabled" boolean NOT NULL DEFAULT true, "notifyOwners" boolean NOT NULL DEFAULT true, "nameRegexPattern" character varying(500), "descriptionRegexPattern" character varying(500), "createdByUserId" uuid, "deletedByUserId" uuid, CONSTRAINT "PK_RumAppOwnerRule" PRIMARY KEY ("_id"))`);
15
+ await queryRunner.query(`CREATE INDEX "IDX_RumAppOwnerRule_projectId" ON "RumApplicationOwnerRule" ("projectId") `);
16
+ await queryRunner.query(`CREATE INDEX "IDX_RumAppOwnerRule_name" ON "RumApplicationOwnerRule" ("name") `);
17
+ await queryRunner.query(`CREATE INDEX "IDX_RumAppOwnerRule_enabled" ON "RumApplicationOwnerRule" ("isEnabled") `);
18
+ await queryRunner.query(`CREATE TABLE "RumAppLabelRuleMatchLabel" ("rumApplicationLabelRuleId" uuid NOT NULL, "labelId" uuid NOT NULL, CONSTRAINT "PK_RumAppLabelRuleMatchLabel" PRIMARY KEY ("rumApplicationLabelRuleId", "labelId"))`);
19
+ await queryRunner.query(`CREATE INDEX "IDX_RumAppLRMatchLabel_rule" ON "RumAppLabelRuleMatchLabel" ("rumApplicationLabelRuleId") `);
20
+ await queryRunner.query(`CREATE INDEX "IDX_RumAppLRMatchLabel_label" ON "RumAppLabelRuleMatchLabel" ("labelId") `);
21
+ await queryRunner.query(`CREATE TABLE "RumAppLabelRuleAddLabel" ("rumApplicationLabelRuleId" uuid NOT NULL, "labelId" uuid NOT NULL, CONSTRAINT "PK_RumAppLabelRuleAddLabel" PRIMARY KEY ("rumApplicationLabelRuleId", "labelId"))`);
22
+ await queryRunner.query(`CREATE INDEX "IDX_RumAppLRAddLabel_rule" ON "RumAppLabelRuleAddLabel" ("rumApplicationLabelRuleId") `);
23
+ await queryRunner.query(`CREATE INDEX "IDX_RumAppLRAddLabel_label" ON "RumAppLabelRuleAddLabel" ("labelId") `);
24
+ await queryRunner.query(`CREATE TABLE "RumAppOwnerRuleMatchLabel" ("rumApplicationOwnerRuleId" uuid NOT NULL, "labelId" uuid NOT NULL, CONSTRAINT "PK_RumAppOwnerRuleMatchLabel" PRIMARY KEY ("rumApplicationOwnerRuleId", "labelId"))`);
25
+ await queryRunner.query(`CREATE INDEX "IDX_RumAppORMatchLabel_rule" ON "RumAppOwnerRuleMatchLabel" ("rumApplicationOwnerRuleId") `);
26
+ await queryRunner.query(`CREATE INDEX "IDX_RumAppORMatchLabel_label" ON "RumAppOwnerRuleMatchLabel" ("labelId") `);
27
+ await queryRunner.query(`CREATE TABLE "RumAppOwnerRuleUser" ("rumApplicationOwnerRuleId" uuid NOT NULL, "userId" uuid NOT NULL, CONSTRAINT "PK_RumAppOwnerRuleUser" PRIMARY KEY ("rumApplicationOwnerRuleId", "userId"))`);
28
+ await queryRunner.query(`CREATE INDEX "IDX_RumAppORUser_rule" ON "RumAppOwnerRuleUser" ("rumApplicationOwnerRuleId") `);
29
+ await queryRunner.query(`CREATE INDEX "IDX_RumAppORUser_user" ON "RumAppOwnerRuleUser" ("userId") `);
30
+ await queryRunner.query(`CREATE TABLE "RumAppOwnerRuleTeam" ("rumApplicationOwnerRuleId" uuid NOT NULL, "teamId" uuid NOT NULL, CONSTRAINT "PK_RumAppOwnerRuleTeam" PRIMARY KEY ("rumApplicationOwnerRuleId", "teamId"))`);
31
+ await queryRunner.query(`CREATE INDEX "IDX_RumAppORTeam_rule" ON "RumAppOwnerRuleTeam" ("rumApplicationOwnerRuleId") `);
32
+ await queryRunner.query(`CREATE INDEX "IDX_RumAppORTeam_team" ON "RumAppOwnerRuleTeam" ("teamId") `);
33
+ await queryRunner.query(`ALTER TABLE "RumApplicationLabelRule" ADD CONSTRAINT "FK_RumAppLabelRule_project" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
34
+ await queryRunner.query(`ALTER TABLE "RumApplicationLabelRule" ADD CONSTRAINT "FK_RumAppLabelRule_createdBy" FOREIGN KEY ("createdByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
35
+ await queryRunner.query(`ALTER TABLE "RumApplicationLabelRule" ADD CONSTRAINT "FK_RumAppLabelRule_deletedBy" FOREIGN KEY ("deletedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
36
+ await queryRunner.query(`ALTER TABLE "RumApplicationOwnerRule" ADD CONSTRAINT "FK_RumAppOwnerRule_project" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
37
+ await queryRunner.query(`ALTER TABLE "RumApplicationOwnerRule" ADD CONSTRAINT "FK_RumAppOwnerRule_createdBy" FOREIGN KEY ("createdByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
38
+ await queryRunner.query(`ALTER TABLE "RumApplicationOwnerRule" ADD CONSTRAINT "FK_RumAppOwnerRule_deletedBy" FOREIGN KEY ("deletedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
39
+ await queryRunner.query(`ALTER TABLE "RumAppLabelRuleMatchLabel" ADD CONSTRAINT "FK_RumAppLRMatchLabel_rule" FOREIGN KEY ("rumApplicationLabelRuleId") REFERENCES "RumApplicationLabelRule"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
40
+ await queryRunner.query(`ALTER TABLE "RumAppLabelRuleMatchLabel" ADD CONSTRAINT "FK_RumAppLRMatchLabel_label" FOREIGN KEY ("labelId") REFERENCES "Label"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
41
+ await queryRunner.query(`ALTER TABLE "RumAppLabelRuleAddLabel" ADD CONSTRAINT "FK_RumAppLRAddLabel_rule" FOREIGN KEY ("rumApplicationLabelRuleId") REFERENCES "RumApplicationLabelRule"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
42
+ await queryRunner.query(`ALTER TABLE "RumAppLabelRuleAddLabel" ADD CONSTRAINT "FK_RumAppLRAddLabel_label" FOREIGN KEY ("labelId") REFERENCES "Label"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
43
+ await queryRunner.query(`ALTER TABLE "RumAppOwnerRuleMatchLabel" ADD CONSTRAINT "FK_RumAppORMatchLabel_rule" FOREIGN KEY ("rumApplicationOwnerRuleId") REFERENCES "RumApplicationOwnerRule"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
44
+ await queryRunner.query(`ALTER TABLE "RumAppOwnerRuleMatchLabel" ADD CONSTRAINT "FK_RumAppORMatchLabel_label" FOREIGN KEY ("labelId") REFERENCES "Label"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
45
+ await queryRunner.query(`ALTER TABLE "RumAppOwnerRuleUser" ADD CONSTRAINT "FK_RumAppORUser_rule" FOREIGN KEY ("rumApplicationOwnerRuleId") REFERENCES "RumApplicationOwnerRule"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
46
+ await queryRunner.query(`ALTER TABLE "RumAppOwnerRuleUser" ADD CONSTRAINT "FK_RumAppORUser_user" FOREIGN KEY ("userId") REFERENCES "User"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
47
+ await queryRunner.query(`ALTER TABLE "RumAppOwnerRuleTeam" ADD CONSTRAINT "FK_RumAppORTeam_rule" FOREIGN KEY ("rumApplicationOwnerRuleId") REFERENCES "RumApplicationOwnerRule"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
48
+ await queryRunner.query(`ALTER TABLE "RumAppOwnerRuleTeam" ADD CONSTRAINT "FK_RumAppORTeam_team" FOREIGN KEY ("teamId") REFERENCES "Team"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
49
+ }
50
+ async down(queryRunner) {
51
+ await queryRunner.query(`DROP TABLE "RumAppOwnerRuleTeam"`);
52
+ await queryRunner.query(`DROP TABLE "RumAppOwnerRuleUser"`);
53
+ await queryRunner.query(`DROP TABLE "RumAppOwnerRuleMatchLabel"`);
54
+ await queryRunner.query(`DROP TABLE "RumAppLabelRuleAddLabel"`);
55
+ await queryRunner.query(`DROP TABLE "RumAppLabelRuleMatchLabel"`);
56
+ await queryRunner.query(`DROP TABLE "RumApplicationOwnerRule"`);
57
+ await queryRunner.query(`DROP TABLE "RumApplicationLabelRule"`);
58
+ }
59
+ }
60
+ //# sourceMappingURL=1780940998002-AddRumApplicationRuleTables.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1780940998002-AddRumApplicationRuleTables.js","sourceRoot":"","sources":["../../../../../../Server/Infrastructure/Postgres/SchemaMigrations/1780940998002-AddRumApplicationRuleTables.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /*
2
+ * Bucket B: live-inventory child tables for the new telemetry resource types.
3
+ * - ServerlessFunctionInstance (faas.instance)
4
+ * - CloudResourceInstance (service.instance.id + container cpu/mem)
5
+ * - RumApplicationClient (browser.platform / device.model, coarse by platform)
6
+ * Populated from the ingest auto-discovery path; not user-editable.
7
+ */
8
+ export class AddTelemetryResourceInventoryTables1780941762204 {
9
+ constructor() {
10
+ this.name = "AddTelemetryResourceInventoryTables1780941762204";
11
+ }
12
+ async up(queryRunner) {
13
+ // ServerlessFunctionInstance
14
+ await queryRunner.query(`CREATE TABLE "ServerlessFunctionInstance" ("_id" uuid NOT NULL DEFAULT uuid_generate_v4(), "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP WITH TIME ZONE, "version" integer NOT NULL, "projectId" uuid NOT NULL, "serverlessFunctionId" uuid NOT NULL, "instanceName" character varying(100) NOT NULL, "lastSeenAt" TIMESTAMP WITH TIME ZONE NOT NULL, "createdByUserId" uuid, "deletedByUserId" uuid, CONSTRAINT "PK_SrvlessFnInstance" PRIMARY KEY ("_id"))`);
15
+ await queryRunner.query(`CREATE INDEX "IDX_SrvlessFnInstance_projectId" ON "ServerlessFunctionInstance" ("projectId") `);
16
+ await queryRunner.query(`CREATE INDEX "IDX_SrvlessFnInstance_fnId" ON "ServerlessFunctionInstance" ("serverlessFunctionId") `);
17
+ await queryRunner.query(`CREATE UNIQUE INDEX "UQ_SrvlessFnInstance" ON "ServerlessFunctionInstance" ("projectId", "serverlessFunctionId", "instanceName") `);
18
+ // CloudResourceInstance
19
+ await queryRunner.query(`CREATE TABLE "CloudResourceInstance" ("_id" uuid NOT NULL DEFAULT uuid_generate_v4(), "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP WITH TIME ZONE, "version" integer NOT NULL, "projectId" uuid NOT NULL, "cloudResourceId" uuid NOT NULL, "instanceName" character varying(100) NOT NULL, "latestCpuPercent" numeric, "latestMemoryBytes" bigint, "lastSeenAt" TIMESTAMP WITH TIME ZONE NOT NULL, "createdByUserId" uuid, "deletedByUserId" uuid, CONSTRAINT "PK_CloudResInstance" PRIMARY KEY ("_id"))`);
20
+ await queryRunner.query(`CREATE INDEX "IDX_CloudResInstance_projectId" ON "CloudResourceInstance" ("projectId") `);
21
+ await queryRunner.query(`CREATE INDEX "IDX_CloudResInstance_resId" ON "CloudResourceInstance" ("cloudResourceId") `);
22
+ await queryRunner.query(`CREATE UNIQUE INDEX "UQ_CloudResInstance" ON "CloudResourceInstance" ("projectId", "cloudResourceId", "instanceName") `);
23
+ // RumApplicationClient
24
+ await queryRunner.query(`CREATE TABLE "RumApplicationClient" ("_id" uuid NOT NULL DEFAULT uuid_generate_v4(), "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP WITH TIME ZONE, "version" integer NOT NULL, "projectId" uuid NOT NULL, "rumApplicationId" uuid NOT NULL, "clientName" character varying(100) NOT NULL, "clientType" character varying(100), "lastSeenAt" TIMESTAMP WITH TIME ZONE NOT NULL, "createdByUserId" uuid, "deletedByUserId" uuid, CONSTRAINT "PK_RumAppClient" PRIMARY KEY ("_id"))`);
25
+ await queryRunner.query(`CREATE INDEX "IDX_RumAppClient_projectId" ON "RumApplicationClient" ("projectId") `);
26
+ await queryRunner.query(`CREATE INDEX "IDX_RumAppClient_appId" ON "RumApplicationClient" ("rumApplicationId") `);
27
+ await queryRunner.query(`CREATE UNIQUE INDEX "UQ_RumAppClient" ON "RumApplicationClient" ("projectId", "rumApplicationId", "clientName") `);
28
+ // Foreign keys
29
+ await queryRunner.query(`ALTER TABLE "ServerlessFunctionInstance" ADD CONSTRAINT "FK_SrvlessFnInstance_project" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
30
+ await queryRunner.query(`ALTER TABLE "ServerlessFunctionInstance" ADD CONSTRAINT "FK_SrvlessFnInstance_fn" FOREIGN KEY ("serverlessFunctionId") REFERENCES "ServerlessFunction"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
31
+ await queryRunner.query(`ALTER TABLE "ServerlessFunctionInstance" ADD CONSTRAINT "FK_SrvlessFnInstance_deletedBy" FOREIGN KEY ("deletedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
32
+ await queryRunner.query(`ALTER TABLE "CloudResourceInstance" ADD CONSTRAINT "FK_CloudResInstance_project" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
33
+ await queryRunner.query(`ALTER TABLE "CloudResourceInstance" ADD CONSTRAINT "FK_CloudResInstance_res" FOREIGN KEY ("cloudResourceId") REFERENCES "CloudResource"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
34
+ await queryRunner.query(`ALTER TABLE "CloudResourceInstance" ADD CONSTRAINT "FK_CloudResInstance_deletedBy" FOREIGN KEY ("deletedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
35
+ await queryRunner.query(`ALTER TABLE "RumApplicationClient" ADD CONSTRAINT "FK_RumAppClient_project" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
36
+ await queryRunner.query(`ALTER TABLE "RumApplicationClient" ADD CONSTRAINT "FK_RumAppClient_app" FOREIGN KEY ("rumApplicationId") REFERENCES "RumApplication"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
37
+ await queryRunner.query(`ALTER TABLE "RumApplicationClient" ADD CONSTRAINT "FK_RumAppClient_deletedBy" FOREIGN KEY ("deletedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
38
+ }
39
+ async down(queryRunner) {
40
+ await queryRunner.query(`DROP TABLE "RumApplicationClient"`);
41
+ await queryRunner.query(`DROP TABLE "CloudResourceInstance"`);
42
+ await queryRunner.query(`DROP TABLE "ServerlessFunctionInstance"`);
43
+ }
44
+ }
45
+ //# sourceMappingURL=1780941762204-AddTelemetryResourceInventoryTables.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1780941762204-AddTelemetryResourceInventoryTables.js","sourceRoot":"","sources":["../../../../../../Server/Infrastructure/Postgres/SchemaMigrations/1780941762204-AddTelemetryResourceInventoryTables.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,OAAO,gDAAgD;IAA7D;QAGS,SAAI,GAAG,kDAAkD,CAAC;IAkFnE,CAAC;IAhFQ,KAAK,CAAC,EAAE,CAAC,WAAwB;QACtC,6BAA6B;QAC7B,MAAM,WAAW,CAAC,KAAK,CACrB,giBAAgiB,CACjiB,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,+FAA+F,CAChG,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,qGAAqG,CACtG,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,mIAAmI,CACpI,CAAC;QAEF,wBAAwB;QACxB,MAAM,WAAW,CAAC,KAAK,CACrB,6kBAA6kB,CAC9kB,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,yFAAyF,CAC1F,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,2FAA2F,CAC5F,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,wHAAwH,CACzH,CAAC;QAEF,uBAAuB;QACvB,MAAM,WAAW,CAAC,KAAK,CACrB,ojBAAojB,CACrjB,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,oFAAoF,CACrF,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,uFAAuF,CACxF,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,kHAAkH,CACnH,CAAC;QAEF,eAAe;QACf,MAAM,WAAW,CAAC,KAAK,CACrB,oLAAoL,CACrL,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,qMAAqM,CACtM,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,0LAA0L,CAC3L,CAAC;QAEF,MAAM,WAAW,CAAC,KAAK,CACrB,8KAA8K,CAC/K,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,sLAAsL,CACvL,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,oLAAoL,CACrL,CAAC;QAEF,MAAM,WAAW,CAAC,KAAK,CACrB,yKAAyK,CAC1K,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,mLAAmL,CACpL,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,+KAA+K,CAChL,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAwB;QACxC,MAAM,WAAW,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAC7D,MAAM,WAAW,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAC9D,MAAM,WAAW,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;IACrE,CAAC;CACF"}
@@ -0,0 +1,18 @@
1
+ /*
2
+ * Adds RumApplication.sdkLanguage (the telemetry.sdk.language resource
3
+ * attribute, e.g. webjs / swift / android). Used to scope a RUM
4
+ * application's client-side telemetry apart from a same-named backend
5
+ * service that shares the same service.name.
6
+ */
7
+ export class AddRumApplicationSdkLanguage1780985763463 {
8
+ constructor() {
9
+ this.name = "AddRumApplicationSdkLanguage1780985763463";
10
+ }
11
+ async up(queryRunner) {
12
+ await queryRunner.query(`ALTER TABLE "RumApplication" ADD "sdkLanguage" character varying(100)`);
13
+ }
14
+ async down(queryRunner) {
15
+ await queryRunner.query(`ALTER TABLE "RumApplication" DROP COLUMN "sdkLanguage"`);
16
+ }
17
+ }
18
+ //# sourceMappingURL=1780985763463-AddRumApplicationSdkLanguage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1780985763463-AddRumApplicationSdkLanguage.js","sourceRoot":"","sources":["../../../../../../Server/Infrastructure/Postgres/SchemaMigrations/1780985763463-AddRumApplicationSdkLanguage.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,OAAO,yCAAyC;IAAtD;QAGS,SAAI,GAAG,2CAA2C,CAAC;IAa5D,CAAC;IAXQ,KAAK,CAAC,EAAE,CAAC,WAAwB;QACtC,MAAM,WAAW,CAAC,KAAK,CACrB,uEAAuE,CACxE,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAwB;QACxC,MAAM,WAAW,CAAC,KAAK,CACrB,wDAAwD,CACzD,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,27 @@
1
+ /*
2
+ * Cloud resources are re-keyed from per-service.name to per cloud
3
+ * *environment* (cloud.platform + cloud.account.id + cloud.region). The old
4
+ * per-service rows no longer match the new composite resourceIdentifier and
5
+ * would linger as stale entries, so clear CloudResource and its child rows.
6
+ * Discovery recreates environment-level rows from live telemetry on the next
7
+ * ingest. Project-level rule tables are intentionally left untouched.
8
+ */
9
+ export class RecastCloudResourcesByEnvironment1780987192743 {
10
+ constructor() {
11
+ this.name = "RecastCloudResourcesByEnvironment1780987192743";
12
+ }
13
+ async up(queryRunner) {
14
+ await queryRunner.query(`DELETE FROM "CloudResourceInstance"`);
15
+ await queryRunner.query(`DELETE FROM "CloudResourceLabel"`);
16
+ await queryRunner.query(`DELETE FROM "CloudResourceOwnerUser"`);
17
+ await queryRunner.query(`DELETE FROM "CloudResourceOwnerTeam"`);
18
+ await queryRunner.query(`DELETE FROM "CloudResource"`);
19
+ }
20
+ async down() {
21
+ /*
22
+ * Irreversible data cleanup — environment-level rows re-discover from
23
+ * live telemetry, so there is nothing to restore on down().
24
+ */
25
+ }
26
+ }
27
+ //# sourceMappingURL=1780987192743-RecastCloudResourcesByEnvironment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1780987192743-RecastCloudResourcesByEnvironment.js","sourceRoot":"","sources":["../../../../../../Server/Infrastructure/Postgres/SchemaMigrations/1780987192743-RecastCloudResourcesByEnvironment.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,OAAO,8CAA8C;IAA3D;QAGS,SAAI,GAAG,gDAAgD,CAAC;IAgBjE,CAAC;IAdQ,KAAK,CAAC,EAAE,CAAC,WAAwB;QACtC,MAAM,WAAW,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAC/D,MAAM,WAAW,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAC5D,MAAM,WAAW,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAChE,MAAM,WAAW,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAChE,MAAM,WAAW,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACzD,CAAC;IAEM,KAAK,CAAC,IAAI;QACf;;;WAGG;IACL,CAAC;CACF"}