@oneuptime/common 9.3.7 → 9.3.9

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 (132) hide show
  1. package/Models/DatabaseModels/AIAgentTask.ts +18 -3
  2. package/Models/DatabaseModels/Index.ts +12 -17
  3. package/Models/DatabaseModels/MetricType.ts +7 -7
  4. package/Models/DatabaseModels/{ServiceCatalog.ts → Service.ts} +74 -48
  5. package/Models/DatabaseModels/{ServiceCatalogCodeRepository.ts → ServiceCodeRepository.ts} +54 -56
  6. package/Models/DatabaseModels/{ServiceCatalogDependency.ts → ServiceDependency.ts} +49 -53
  7. package/Models/DatabaseModels/{ServiceCatalogMonitor.ts → ServiceMonitor.ts} +41 -43
  8. package/Models/DatabaseModels/{ServiceCatalogOwnerTeam.ts → ServiceOwnerTeam.ts} +41 -43
  9. package/Models/DatabaseModels/{ServiceCatalogOwnerUser.ts → ServiceOwnerUser.ts} +41 -43
  10. package/Models/DatabaseModels/TelemetryException.ts +11 -13
  11. package/Models/DatabaseModels/TelemetryUsageBilling.ts +11 -13
  12. package/Server/API/AIAgentDataAPI.ts +73 -111
  13. package/Server/Infrastructure/Postgres/SchemaMigrations/1767966850199-RenameServiceCatalogToService.ts +171 -0
  14. package/Server/Infrastructure/Postgres/SchemaMigrations/1767979055522-MigrationName.ts +743 -0
  15. package/Server/Infrastructure/Postgres/SchemaMigrations/1767979448478-MigrationName.ts +224 -0
  16. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +6 -0
  17. package/Server/Services/Index.ts +12 -17
  18. package/Server/Services/OpenTelemetryIngestService.ts +26 -28
  19. package/Server/Services/{ServiceCatalogCodeRepositoryService.ts → ServiceCodeRepositoryService.ts} +7 -7
  20. package/Server/Services/ServiceDependencyService.ts +48 -0
  21. package/Server/Services/{ServiceCatalogMonitorService.ts → ServiceMonitorService.ts} +8 -8
  22. package/Server/Services/{ServiceCatalogOwnerTeamService.ts → ServiceOwnerTeamService.ts} +1 -1
  23. package/Server/Services/{ServiceCatalogOwnerUserService.ts → ServiceOwnerUserService.ts} +1 -1
  24. package/Server/Services/{TelemetryServiceService.ts → ServiceService.ts} +7 -9
  25. package/Server/Services/TelemetryExceptionService.ts +3 -4
  26. package/Server/Services/TelemetryUsageBillingService.ts +30 -32
  27. package/Server/Utils/Telemetry/Telemetry.ts +24 -23
  28. package/Types/AI/AIAgentTaskMetadata.ts +1 -1
  29. package/Types/Permission.ts +112 -115
  30. package/UI/Components/LogsViewer/LogsViewer.tsx +20 -23
  31. package/UI/Components/LogsViewer/components/LogDetailsPanel.tsx +3 -3
  32. package/UI/Components/LogsViewer/components/LogsTable.tsx +3 -4
  33. package/UI/Components/Navbar/NavBarMenuItem.tsx +2 -2
  34. package/Utils/TechStack.ts +1 -1
  35. package/build/dist/Models/DatabaseModels/AIAgentTask.js +18 -3
  36. package/build/dist/Models/DatabaseModels/AIAgentTask.js.map +1 -1
  37. package/build/dist/Models/DatabaseModels/Index.js +12 -16
  38. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  39. package/build/dist/Models/DatabaseModels/MetricType.js +8 -8
  40. package/build/dist/Models/DatabaseModels/MetricType.js.map +1 -1
  41. package/build/dist/Models/DatabaseModels/{ServiceCatalog.js → Service.js} +93 -65
  42. package/build/dist/Models/DatabaseModels/Service.js.map +1 -0
  43. package/build/dist/Models/DatabaseModels/{ServiceCatalogCodeRepository.js → ServiceCodeRepository.js} +72 -72
  44. package/build/dist/Models/DatabaseModels/ServiceCodeRepository.js.map +1 -0
  45. package/build/dist/Models/DatabaseModels/{ServiceCatalogDependency.js → ServiceDependency.js} +65 -65
  46. package/build/dist/Models/DatabaseModels/ServiceDependency.js.map +1 -0
  47. package/build/dist/Models/DatabaseModels/{ServiceCatalogMonitor.js → ServiceMonitor.js} +56 -56
  48. package/build/dist/Models/DatabaseModels/ServiceMonitor.js.map +1 -0
  49. package/build/dist/Models/DatabaseModels/{ServiceCatalogOwnerTeam.js → ServiceOwnerTeam.js} +56 -56
  50. package/build/dist/Models/DatabaseModels/ServiceOwnerTeam.js.map +1 -0
  51. package/build/dist/Models/DatabaseModels/{ServiceCatalogOwnerUser.js → ServiceOwnerUser.js} +56 -56
  52. package/build/dist/Models/DatabaseModels/ServiceOwnerUser.js.map +1 -0
  53. package/build/dist/Models/DatabaseModels/TelemetryException.js +14 -14
  54. package/build/dist/Models/DatabaseModels/TelemetryException.js.map +1 -1
  55. package/build/dist/Models/DatabaseModels/TelemetryUsageBilling.js +14 -14
  56. package/build/dist/Models/DatabaseModels/TelemetryUsageBilling.js.map +1 -1
  57. package/build/dist/Server/API/AIAgentDataAPI.js +48 -77
  58. package/build/dist/Server/API/AIAgentDataAPI.js.map +1 -1
  59. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1767966850199-RenameServiceCatalogToService.js +72 -0
  60. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1767966850199-RenameServiceCatalogToService.js.map +1 -0
  61. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1767979055522-MigrationName.js +254 -0
  62. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1767979055522-MigrationName.js.map +1 -0
  63. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1767979448478-MigrationName.js +140 -0
  64. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1767979448478-MigrationName.js.map +1 -0
  65. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +6 -0
  66. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  67. package/build/dist/Server/Services/Index.js +12 -16
  68. package/build/dist/Server/Services/Index.js.map +1 -1
  69. package/build/dist/Server/Services/OpenTelemetryIngestService.js +7 -7
  70. package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
  71. package/build/dist/Server/Services/{ServiceCatalogCodeRepositoryService.js → ServiceCodeRepositoryService.js} +7 -7
  72. package/build/dist/Server/Services/ServiceCodeRepositoryService.js.map +1 -0
  73. package/build/dist/Server/Services/{ServiceCatalogDependencyService.js → ServiceDependencyService.js} +11 -12
  74. package/build/dist/Server/Services/ServiceDependencyService.js.map +1 -0
  75. package/build/dist/Server/Services/{ServiceCatalogMonitorService.js → ServiceMonitorService.js} +8 -8
  76. package/build/dist/Server/Services/ServiceMonitorService.js.map +1 -0
  77. package/build/dist/Server/Services/{ServiceCatalogOwnerUserService.js → ServiceOwnerTeamService.js} +2 -2
  78. package/build/dist/Server/Services/ServiceOwnerTeamService.js.map +1 -0
  79. package/build/dist/Server/Services/{ServiceCatalogOwnerTeamService.js → ServiceOwnerUserService.js} +2 -2
  80. package/build/dist/Server/Services/ServiceOwnerUserService.js.map +1 -0
  81. package/build/dist/Server/Services/{TelemetryServiceService.js → ServiceService.js} +8 -9
  82. package/build/dist/Server/Services/ServiceService.js.map +1 -0
  83. package/build/dist/Server/Services/TelemetryExceptionService.js +3 -4
  84. package/build/dist/Server/Services/TelemetryExceptionService.js.map +1 -1
  85. package/build/dist/Server/Services/TelemetryUsageBillingService.js +15 -16
  86. package/build/dist/Server/Services/TelemetryUsageBillingService.js.map +1 -1
  87. package/build/dist/Server/Utils/Telemetry/Telemetry.js +20 -20
  88. package/build/dist/Server/Utils/Telemetry/Telemetry.js.map +1 -1
  89. package/build/dist/Types/Permission.js +112 -112
  90. package/build/dist/Types/Permission.js.map +1 -1
  91. package/build/dist/Types/Service/CodeRepositoryImprovementAction.js.map +1 -0
  92. package/build/dist/Types/Service/TechStack.js.map +1 -0
  93. package/build/dist/UI/Components/LogsViewer/LogsViewer.js +5 -5
  94. package/build/dist/UI/Components/LogsViewer/LogsViewer.js.map +1 -1
  95. package/build/dist/UI/Components/LogsViewer/components/LogDetailsPanel.js.map +1 -1
  96. package/build/dist/UI/Components/LogsViewer/components/LogsTable.js.map +1 -1
  97. package/build/dist/UI/Components/Navbar/NavBarMenuItem.js +1 -1
  98. package/build/dist/UI/Components/Navbar/NavBarMenuItem.js.map +1 -1
  99. package/build/dist/Utils/TechStack.js +1 -1
  100. package/build/dist/Utils/TechStack.js.map +1 -1
  101. package/package.json +1 -1
  102. package/Models/DatabaseModels/ServiceCatalogTelemetryService.ts +0 -421
  103. package/Models/DatabaseModels/TelemetryService.ts +0 -529
  104. package/Server/Services/ServiceCatalogDependencyService.ts +0 -51
  105. package/Server/Services/ServiceCatalogService.ts +0 -28
  106. package/Server/Services/ServiceCatalogTelemetryServiceService.ts +0 -59
  107. package/build/dist/Models/DatabaseModels/ServiceCatalog.js.map +0 -1
  108. package/build/dist/Models/DatabaseModels/ServiceCatalogCodeRepository.js.map +0 -1
  109. package/build/dist/Models/DatabaseModels/ServiceCatalogDependency.js.map +0 -1
  110. package/build/dist/Models/DatabaseModels/ServiceCatalogMonitor.js.map +0 -1
  111. package/build/dist/Models/DatabaseModels/ServiceCatalogOwnerTeam.js.map +0 -1
  112. package/build/dist/Models/DatabaseModels/ServiceCatalogOwnerUser.js.map +0 -1
  113. package/build/dist/Models/DatabaseModels/ServiceCatalogTelemetryService.js +0 -436
  114. package/build/dist/Models/DatabaseModels/ServiceCatalogTelemetryService.js.map +0 -1
  115. package/build/dist/Models/DatabaseModels/TelemetryService.js +0 -545
  116. package/build/dist/Models/DatabaseModels/TelemetryService.js.map +0 -1
  117. package/build/dist/Server/Services/ServiceCatalogCodeRepositoryService.js.map +0 -1
  118. package/build/dist/Server/Services/ServiceCatalogDependencyService.js.map +0 -1
  119. package/build/dist/Server/Services/ServiceCatalogMonitorService.js.map +0 -1
  120. package/build/dist/Server/Services/ServiceCatalogOwnerTeamService.js.map +0 -1
  121. package/build/dist/Server/Services/ServiceCatalogOwnerUserService.js.map +0 -1
  122. package/build/dist/Server/Services/ServiceCatalogService.js +0 -35
  123. package/build/dist/Server/Services/ServiceCatalogService.js.map +0 -1
  124. package/build/dist/Server/Services/ServiceCatalogTelemetryServiceService.js +0 -56
  125. package/build/dist/Server/Services/ServiceCatalogTelemetryServiceService.js.map +0 -1
  126. package/build/dist/Server/Services/TelemetryServiceService.js.map +0 -1
  127. package/build/dist/Types/ServiceCatalog/CodeRepositoryImprovementAction.js.map +0 -1
  128. package/build/dist/Types/ServiceCatalog/TechStack.js.map +0 -1
  129. /package/Types/{ServiceCatalog → Service}/CodeRepositoryImprovementAction.ts +0 -0
  130. /package/Types/{ServiceCatalog → Service}/TechStack.ts +0 -0
  131. /package/build/dist/Types/{ServiceCatalog → Service}/CodeRepositoryImprovementAction.js +0 -0
  132. /package/build/dist/Types/{ServiceCatalog → Service}/TechStack.js +0 -0
@@ -0,0 +1,224 @@
1
+ import { MigrationInterface, QueryRunner } from "typeorm";
2
+
3
+ // Schema + Data migration: Move TelemetryService to Service table
4
+ export class MigrationName1767979448478 implements MigrationInterface {
5
+ public name = "MigrationName1767979448478";
6
+
7
+ public async up(queryRunner: QueryRunner): Promise<void> {
8
+ // Step 1: Drop old FK constraints (pointing to TelemetryService)
9
+ await queryRunner.query(
10
+ `ALTER TABLE "TelemetryException" DROP CONSTRAINT IF EXISTS "FK_6470c69cb5f53c5899c0483df5f"`,
11
+ );
12
+ await queryRunner.query(
13
+ `ALTER TABLE "TelemetryUsageBilling" DROP CONSTRAINT IF EXISTS "FK_91333210492e5d2f334231468a7"`,
14
+ );
15
+
16
+ // Step 2: Drop old indexes
17
+ await queryRunner.query(
18
+ `DROP INDEX IF EXISTS "public"."IDX_6470c69cb5f53c5899c0483df5"`,
19
+ );
20
+ await queryRunner.query(
21
+ `DROP INDEX IF EXISTS "public"."IDX_91333210492e5d2f334231468a"`,
22
+ );
23
+
24
+ // Step 3: Add retainTelemetryDataForDays column to Service (needed before data migration)
25
+ await queryRunner.query(
26
+ `ALTER TABLE "Service" ADD COLUMN IF NOT EXISTS "retainTelemetryDataForDays" integer DEFAULT '15'`,
27
+ );
28
+
29
+ /*
30
+ * Step 4: Migrate TelemetryService data to Service table (BEFORE renaming columns and adding FK)
31
+ * Preserve the same _id so existing references remain valid
32
+ */
33
+ const telemetryServiceTableExists: Array<{ exists: boolean }> =
34
+ await queryRunner.query(`
35
+ SELECT EXISTS (
36
+ SELECT FROM information_schema.tables
37
+ WHERE table_schema = 'public'
38
+ AND table_name = 'TelemetryService'
39
+ )
40
+ `);
41
+
42
+ if (telemetryServiceTableExists[0]?.exists) {
43
+ await queryRunner.query(`
44
+ INSERT INTO "Service" (
45
+ "_id",
46
+ "createdAt",
47
+ "updatedAt",
48
+ "deletedAt",
49
+ "version",
50
+ "projectId",
51
+ "name",
52
+ "slug",
53
+ "description",
54
+ "createdByUserId",
55
+ "deletedByUserId",
56
+ "serviceColor",
57
+ "retainTelemetryDataForDays"
58
+ )
59
+ SELECT
60
+ "_id",
61
+ "createdAt",
62
+ "updatedAt",
63
+ "deletedAt",
64
+ "version",
65
+ "projectId",
66
+ "name",
67
+ "slug",
68
+ "description",
69
+ "createdByUserId",
70
+ "deletedByUserId",
71
+ "serviceColor",
72
+ "retainTelemetryDataForDays"
73
+ FROM "TelemetryService"
74
+ ON CONFLICT ("_id") DO NOTHING
75
+ `);
76
+ }
77
+
78
+ // Step 5: Migrate TelemetryServiceLabel to ServiceLabel
79
+ const telemetryServiceLabelExists: Array<{ exists: boolean }> =
80
+ await queryRunner.query(`
81
+ SELECT EXISTS (
82
+ SELECT FROM information_schema.tables
83
+ WHERE table_schema = 'public'
84
+ AND table_name = 'TelemetryServiceLabel'
85
+ )
86
+ `);
87
+
88
+ if (telemetryServiceLabelExists[0]?.exists) {
89
+ await queryRunner.query(`
90
+ INSERT INTO "ServiceLabel" ("serviceId", "labelId")
91
+ SELECT "telemetryServiceId", "labelId"
92
+ FROM "TelemetryServiceLabel"
93
+ ON CONFLICT DO NOTHING
94
+ `);
95
+ }
96
+
97
+ // Step 6: Rename columns (telemetryServiceId -> serviceId)
98
+ await queryRunner.query(
99
+ `ALTER TABLE "TelemetryException" RENAME COLUMN "telemetryServiceId" TO "serviceId"`,
100
+ );
101
+ await queryRunner.query(
102
+ `ALTER TABLE "TelemetryUsageBilling" RENAME COLUMN "telemetryServiceId" TO "serviceId"`,
103
+ );
104
+
105
+ // Step 7: Create MetricTypeService table
106
+ await queryRunner.query(
107
+ `CREATE TABLE IF NOT EXISTS "MetricTypeService" ("metricTypeId" uuid NOT NULL, "serviceId" uuid NOT NULL, CONSTRAINT "PK_21b7a84eea5b71922ac5ccc92e9" PRIMARY KEY ("metricTypeId", "serviceId"))`,
108
+ );
109
+ await queryRunner.query(
110
+ `CREATE INDEX IF NOT EXISTS "IDX_e6b6e365ad502b487cb63d2891" ON "MetricTypeService" ("metricTypeId") `,
111
+ );
112
+ await queryRunner.query(
113
+ `CREATE INDEX IF NOT EXISTS "IDX_c67839207ff53f33eb22648b56" ON "MetricTypeService" ("serviceId") `,
114
+ );
115
+
116
+ // Step 8: Migrate MetricTypeTelemetryService to MetricTypeService
117
+ const metricTypeTelemetryServiceExists: Array<{ exists: boolean }> =
118
+ await queryRunner.query(`
119
+ SELECT EXISTS (
120
+ SELECT FROM information_schema.tables
121
+ WHERE table_schema = 'public'
122
+ AND table_name = 'MetricTypeTelemetryService'
123
+ )
124
+ `);
125
+
126
+ if (metricTypeTelemetryServiceExists[0]?.exists) {
127
+ await queryRunner.query(`
128
+ INSERT INTO "MetricTypeService" ("metricTypeId", "serviceId")
129
+ SELECT "metricTypeId", "telemetryServiceId"
130
+ FROM "MetricTypeTelemetryService"
131
+ ON CONFLICT DO NOTHING
132
+ `);
133
+ }
134
+
135
+ // Step 10: Create new indexes
136
+ await queryRunner.query(
137
+ `CREATE INDEX IF NOT EXISTS "IDX_08a0cfa9f184257b1e57da4cf5" ON "TelemetryException" ("serviceId") `,
138
+ );
139
+ await queryRunner.query(
140
+ `CREATE INDEX IF NOT EXISTS "IDX_b9f49cd8318a35757fc843ee90" ON "TelemetryUsageBilling" ("serviceId") `,
141
+ );
142
+
143
+ // Step 11: Add new FK constraints (NOW safe because Service table has the migrated data)
144
+ await queryRunner.query(
145
+ `ALTER TABLE "TelemetryException" ADD CONSTRAINT "FK_08a0cfa9f184257b1e57da4cf50" FOREIGN KEY ("serviceId") REFERENCES "Service"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`,
146
+ );
147
+ await queryRunner.query(
148
+ `ALTER TABLE "TelemetryUsageBilling" ADD CONSTRAINT "FK_b9f49cd8318a35757fc843ee900" FOREIGN KEY ("serviceId") REFERENCES "Service"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`,
149
+ );
150
+ await queryRunner.query(
151
+ `ALTER TABLE "MetricTypeService" ADD CONSTRAINT "FK_e6b6e365ad502b487cb63d28913" FOREIGN KEY ("metricTypeId") REFERENCES "MetricType"("_id") ON DELETE CASCADE ON UPDATE CASCADE`,
152
+ );
153
+ await queryRunner.query(
154
+ `ALTER TABLE "MetricTypeService" ADD CONSTRAINT "FK_c67839207ff53f33eb22648b567" FOREIGN KEY ("serviceId") REFERENCES "Service"("_id") ON DELETE CASCADE ON UPDATE CASCADE`,
155
+ );
156
+ }
157
+
158
+ public async down(queryRunner: QueryRunner): Promise<void> {
159
+ // Drop new FK constraints
160
+ await queryRunner.query(
161
+ `ALTER TABLE "MetricTypeService" DROP CONSTRAINT "FK_c67839207ff53f33eb22648b567"`,
162
+ );
163
+ await queryRunner.query(
164
+ `ALTER TABLE "MetricTypeService" DROP CONSTRAINT "FK_e6b6e365ad502b487cb63d28913"`,
165
+ );
166
+ await queryRunner.query(
167
+ `ALTER TABLE "TelemetryUsageBilling" DROP CONSTRAINT "FK_b9f49cd8318a35757fc843ee900"`,
168
+ );
169
+ await queryRunner.query(
170
+ `ALTER TABLE "TelemetryException" DROP CONSTRAINT "FK_08a0cfa9f184257b1e57da4cf50"`,
171
+ );
172
+
173
+ // Drop new indexes
174
+ await queryRunner.query(
175
+ `DROP INDEX "public"."IDX_b9f49cd8318a35757fc843ee90"`,
176
+ );
177
+ await queryRunner.query(
178
+ `DROP INDEX "public"."IDX_08a0cfa9f184257b1e57da4cf5"`,
179
+ );
180
+
181
+ // Drop retainTelemetryDataForDays column
182
+ await queryRunner.query(
183
+ `ALTER TABLE "Service" DROP COLUMN "retainTelemetryDataForDays"`,
184
+ );
185
+
186
+ // Drop MetricTypeService table and indexes
187
+ await queryRunner.query(
188
+ `DROP INDEX "public"."IDX_c67839207ff53f33eb22648b56"`,
189
+ );
190
+ await queryRunner.query(
191
+ `DROP INDEX "public"."IDX_e6b6e365ad502b487cb63d2891"`,
192
+ );
193
+ await queryRunner.query(`DROP TABLE "MetricTypeService"`);
194
+
195
+ // Rename columns back
196
+ await queryRunner.query(
197
+ `ALTER TABLE "TelemetryUsageBilling" RENAME COLUMN "serviceId" TO "telemetryServiceId"`,
198
+ );
199
+ await queryRunner.query(
200
+ `ALTER TABLE "TelemetryException" RENAME COLUMN "serviceId" TO "telemetryServiceId"`,
201
+ );
202
+
203
+ // Recreate old indexes
204
+ await queryRunner.query(
205
+ `CREATE INDEX "IDX_91333210492e5d2f334231468a" ON "TelemetryUsageBilling" ("telemetryServiceId") `,
206
+ );
207
+ await queryRunner.query(
208
+ `CREATE INDEX "IDX_6470c69cb5f53c5899c0483df5" ON "TelemetryException" ("telemetryServiceId") `,
209
+ );
210
+
211
+ // Restore old FK constraints (pointing back to TelemetryService)
212
+ await queryRunner.query(
213
+ `ALTER TABLE "TelemetryUsageBilling" ADD CONSTRAINT "FK_91333210492e5d2f334231468a7" FOREIGN KEY ("telemetryServiceId") REFERENCES "TelemetryService"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`,
214
+ );
215
+ await queryRunner.query(
216
+ `ALTER TABLE "TelemetryException" ADD CONSTRAINT "FK_6470c69cb5f53c5899c0483df5f" FOREIGN KEY ("telemetryServiceId") REFERENCES "TelemetryService"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`,
217
+ );
218
+
219
+ /*
220
+ * Note: We don't delete the migrated data from Service table in down migration
221
+ * as it could be dangerous if new Service records were created
222
+ */
223
+ }
224
+ }
@@ -213,6 +213,9 @@ import { AddAIAgentIsDefault1766918848434 } from "./1766918848434-AddAIAgentIsDe
213
213
  import { MigrationName1766923324521 } from "./1766923324521-MigrationName";
214
214
  import { AddGitHubAppInstallationIdToProject1766958924188 } from "./1766958924188-AddGitHubAppInstallationIdToProject";
215
215
  import { MigrationName1767009661768 } from "./1767009661768-MigrationName";
216
+ import { RenameServiceCatalogToService1767966850199 } from "./1767966850199-RenameServiceCatalogToService";
217
+ import { MigrationName1767979055522 } from "./1767979055522-MigrationName";
218
+ import { MigrationName1767979448478 } from "./1767979448478-MigrationName";
216
219
 
217
220
  export default [
218
221
  InitialMigration,
@@ -430,4 +433,7 @@ export default [
430
433
  MigrationName1766923324521,
431
434
  AddGitHubAppInstallationIdToProject1766958924188,
432
435
  MigrationName1767009661768,
436
+ RenameServiceCatalogToService1767966850199,
437
+ MigrationName1767979055522,
438
+ MigrationName1767979448478,
433
439
  ];
@@ -87,12 +87,11 @@ import ScheduledMaintenancePublicNoteService from "./ScheduledMaintenancePublicN
87
87
  import ScheduledMaintenanceService from "./ScheduledMaintenanceService";
88
88
  import ScheduledMaintenanceStateService from "./ScheduledMaintenanceStateService";
89
89
  import ScheduledMaintenanceStateTimelineService from "./ScheduledMaintenanceStateTimelineService";
90
- import ServiceCatalogOwnerTeamService from "./ServiceCatalogOwnerTeamService";
91
- import ServiceCatalogOwnerUserService from "./ServiceCatalogOwnerUserService";
92
- import ServiceCatalogService from "./ServiceCatalogService";
93
- import ServiceCatalogMonitorService from "./ServiceCatalogMonitorService";
94
- import ServiceCatalogTelemetryServiceService from "./ServiceCatalogTelemetryServiceService";
95
- import ServiceCatalogCodeRepositoryService from "./ServiceCatalogCodeRepositoryService";
90
+ import ServiceOwnerTeamService from "./ServiceOwnerTeamService";
91
+ import ServiceOwnerUserService from "./ServiceOwnerUserService";
92
+ import ServiceService from "./ServiceService";
93
+ import ServiceMonitorService from "./ServiceMonitorService";
94
+ import ServiceCodeRepositoryService from "./ServiceCodeRepositoryService";
96
95
  import ShortLinkService from "./ShortLinkService";
97
96
  // SMS Log Service
98
97
  import SmsLogService from "./SmsLogService";
@@ -123,7 +122,6 @@ import TeamPermissionService from "./TeamPermissionService";
123
122
  import TeamComplianceSettingService from "./TeamComplianceSettingService";
124
123
  // Team
125
124
  import TeamService from "./TeamService";
126
- import TelemetryServiceService from "./TelemetryServiceService";
127
125
  import UsageBillingService from "./TelemetryUsageBillingService";
128
126
  import UserCallService from "./UserCallService";
129
127
  import UserEmailService from "./UserEmailService";
@@ -142,7 +140,7 @@ import WorkflowLogService from "./WorkflowLogService";
142
140
  import WorkflowService from "./WorkflowService";
143
141
  import WorkflowVariablesService from "./WorkflowVariableService";
144
142
  import AnalyticsBaseModel from "../../Models/AnalyticsModels/AnalyticsBaseModel/AnalyticsBaseModel";
145
- import ServiceCatalogDependencyService from "./ServiceCatalogDependencyService";
143
+ import ServiceDependencyService from "./ServiceDependencyService";
146
144
  import TelemetryExceptionService from "./TelemetryExceptionService";
147
145
  import ExceptionInstanceService from "./ExceptionInstanceService";
148
146
  import ScheduledMaintenanceTemplateService from "./ScheduledMaintenanceTemplateService";
@@ -315,8 +313,6 @@ const services: Array<BaseService> = [
315
313
  MonitorGroupOwnerUserService,
316
314
  MonitorGroupOwnerTeamService,
317
315
 
318
- TelemetryServiceService,
319
-
320
316
  // On Call Duty Policy Schedule
321
317
  OnCallDutyPolicyScheduleService,
322
318
  OnCallDutyPolicyScheduleLayerUserService,
@@ -326,13 +322,12 @@ const services: Array<BaseService> = [
326
322
  UsageBillingService,
327
323
  ProjectCallSMSConfigService,
328
324
 
329
- ServiceCatalogService,
330
- ServiceCatalogOwnerTeamService,
331
- ServiceCatalogOwnerUserService,
332
- ServiceCatalogDependencyService,
333
- ServiceCatalogMonitorService,
334
- ServiceCatalogTelemetryServiceService,
335
- ServiceCatalogCodeRepositoryService,
325
+ ServiceService,
326
+ ServiceOwnerTeamService,
327
+ ServiceOwnerUserService,
328
+ ServiceDependencyService,
329
+ ServiceMonitorService,
330
+ ServiceCodeRepositoryService,
336
331
 
337
332
  TelemetryExceptionService,
338
333
 
@@ -4,8 +4,8 @@ import ObjectID from "../../Types/ObjectID";
4
4
  import Metric, {
5
5
  AggregationTemporality,
6
6
  } from "../../Models/AnalyticsModels/Metric";
7
- import TelemetryService from "../../Models/DatabaseModels/TelemetryService";
8
- import TelemetryServiceService from "../../Server/Services/TelemetryServiceService";
7
+ import Service from "../../Models/DatabaseModels/Service";
8
+ import ServiceService from "../../Server/Services/ServiceService";
9
9
  import { DEFAULT_RETENTION_IN_DAYS } from "../../Models/DatabaseModels/TelemetryUsageBilling";
10
10
  import TelemetryUtil from "../../Server/Utils/Telemetry/Telemetry";
11
11
  import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
@@ -30,37 +30,35 @@ export default class OTelIngestService {
30
30
  serviceId: ObjectID;
31
31
  dataRententionInDays: number;
32
32
  }> {
33
- const service: TelemetryService | null =
34
- await TelemetryServiceService.findOneBy({
35
- query: {
36
- projectId: data.projectId,
37
- name: data.serviceName,
38
- },
39
- select: {
40
- _id: true,
41
- retainTelemetryDataForDays: true,
42
- },
43
- props: {
44
- isRoot: true,
45
- },
46
- });
33
+ const service: Service | null = await ServiceService.findOneBy({
34
+ query: {
35
+ projectId: data.projectId,
36
+ name: data.serviceName,
37
+ },
38
+ select: {
39
+ _id: true,
40
+ retainTelemetryDataForDays: true,
41
+ },
42
+ props: {
43
+ isRoot: true,
44
+ },
45
+ });
47
46
 
48
47
  if (!service) {
49
48
  // create service
50
49
 
51
- const newService: TelemetryService = new TelemetryService();
50
+ const newService: Service = new Service();
52
51
  newService.projectId = data.projectId;
53
52
  newService.name = data.serviceName;
54
53
  newService.description = data.serviceName;
55
54
  newService.retainTelemetryDataForDays = DEFAULT_RETENTION_IN_DAYS;
56
55
 
57
- const createdService: TelemetryService =
58
- await TelemetryServiceService.create({
59
- data: newService,
60
- props: {
61
- isRoot: true,
62
- },
63
- });
56
+ const createdService: Service = await ServiceService.create({
57
+ data: newService,
58
+ props: {
59
+ isRoot: true,
60
+ },
61
+ });
64
62
 
65
63
  return {
66
64
  serviceId: createdService.id!,
@@ -80,8 +78,8 @@ export default class OTelIngestService {
80
78
  datapoint: JSONObject;
81
79
  aggregationTemporality: OtelAggregationTemporality;
82
80
  isMonotonic: boolean | undefined;
83
- telemetryServiceId: ObjectID;
84
- telemetryServiceName: string;
81
+ serviceId: ObjectID;
82
+ serviceName: string;
85
83
  }): Metric {
86
84
  const { dbMetric, datapoint, aggregationTemporality, isMonotonic } = data;
87
85
 
@@ -164,8 +162,8 @@ export default class OTelIngestService {
164
162
 
165
163
  newDbMetric.attributes = {
166
164
  ...TelemetryUtil.getAttributesForServiceIdAndServiceName({
167
- serviceId: data.telemetryServiceId,
168
- serviceName: data.telemetryServiceName,
165
+ serviceId: data.serviceId,
166
+ serviceName: data.serviceName,
169
167
  }),
170
168
  ...TelemetryUtil.getAttributes({
171
169
  items: (datapoint["attributes"] as JSONArray) || [],
@@ -2,7 +2,7 @@ import BadDataException from "../../Types/Exception/BadDataException";
2
2
  import CreateBy from "../Types/Database/CreateBy";
3
3
  import { OnCreate } from "../Types/Database/Hooks";
4
4
  import DatabaseService from "./DatabaseService";
5
- import Model from "../../Models/DatabaseModels/ServiceCatalogCodeRepository";
5
+ import Model from "../../Models/DatabaseModels/ServiceCodeRepository";
6
6
  import ObjectID from "../../Types/ObjectID";
7
7
  import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
8
8
 
@@ -15,23 +15,23 @@ export class Service extends DatabaseService<Model> {
15
15
  protected override async onBeforeCreate(
16
16
  createBy: CreateBy<Model>,
17
17
  ): Promise<OnCreate<Model>> {
18
- if (!createBy.data.serviceCatalogId && !createBy.data.serviceCatalog) {
19
- throw new BadDataException("serviceCatalog is required");
18
+ if (!createBy.data.serviceId && !createBy.data.service) {
19
+ throw new BadDataException("service is required");
20
20
  }
21
21
 
22
22
  if (!createBy.data.codeRepository && !createBy.data.codeRepositoryId) {
23
23
  throw new BadDataException("codeRepository is required");
24
24
  }
25
25
 
26
- const serviceCatalogId: string | ObjectID | undefined =
27
- createBy.data.serviceCatalogId || createBy.data.serviceCatalog?._id;
26
+ const serviceId: string | ObjectID | undefined =
27
+ createBy.data.serviceId || createBy.data.service?._id;
28
28
  const codeRepositoryId: string | ObjectID | undefined =
29
29
  createBy.data.codeRepositoryId || createBy.data.codeRepository?._id;
30
30
 
31
- // check if this code repository is already added to the service catalog for this service.
31
+ // check if this code repository is already added to the service for this service.
32
32
  const existingCodeRepository: Model | null = await this.findOneBy({
33
33
  query: {
34
- serviceCatalogId: serviceCatalogId as ObjectID,
34
+ serviceId: serviceId as ObjectID,
35
35
  codeRepositoryId: codeRepositoryId as ObjectID,
36
36
  },
37
37
  props: {
@@ -0,0 +1,48 @@
1
+ import BadDataException from "../../Types/Exception/BadDataException";
2
+ import CreateBy from "../Types/Database/CreateBy";
3
+ import { OnCreate } from "../Types/Database/Hooks";
4
+ import DatabaseService from "./DatabaseService";
5
+ import Model from "../../Models/DatabaseModels/ServiceDependency";
6
+ import ObjectID from "../../Types/ObjectID";
7
+ import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
8
+
9
+ export class Service extends DatabaseService<Model> {
10
+ public constructor() {
11
+ super(Model);
12
+ }
13
+
14
+ @CaptureSpan()
15
+ protected override async onBeforeCreate(
16
+ createBy: CreateBy<Model>,
17
+ ): Promise<OnCreate<Model>> {
18
+ // select a random color.
19
+
20
+ if (!createBy.data.serviceId && !createBy.data.service) {
21
+ throw new BadDataException("service is required");
22
+ }
23
+
24
+ if (
25
+ !createBy.data.dependencyServiceId &&
26
+ !createBy.data.dependencyService
27
+ ) {
28
+ throw new BadDataException("dependencyService is required");
29
+ }
30
+
31
+ // serviceId and dependencyServiceId should not be the same
32
+ const serviceId: string | ObjectID | undefined =
33
+ createBy.data.serviceId || createBy.data.service?._id;
34
+ const dependencyServiceId: string | ObjectID | undefined =
35
+ createBy.data.dependencyServiceId || createBy.data.dependencyService?._id;
36
+
37
+ if (serviceId?.toString() === dependencyServiceId?.toString()) {
38
+ throw new BadDataException("Service cannot depend on itself.");
39
+ }
40
+
41
+ return {
42
+ carryForward: null,
43
+ createBy: createBy,
44
+ };
45
+ }
46
+ }
47
+
48
+ export default new Service();
@@ -2,7 +2,7 @@ import BadDataException from "../../Types/Exception/BadDataException";
2
2
  import CreateBy from "../Types/Database/CreateBy";
3
3
  import { OnCreate } from "../Types/Database/Hooks";
4
4
  import DatabaseService from "./DatabaseService";
5
- import Model from "../../Models/DatabaseModels/ServiceCatalogMonitor";
5
+ import Model from "../../Models/DatabaseModels/ServiceMonitor";
6
6
  import ObjectID from "../../Types/ObjectID";
7
7
  import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
8
8
 
@@ -17,25 +17,25 @@ export class Service extends DatabaseService<Model> {
17
17
  ): Promise<OnCreate<Model>> {
18
18
  // select a random color.
19
19
 
20
- if (!createBy.data.serviceCatalogId && !createBy.data.serviceCatalog) {
21
- throw new BadDataException("serviceCatalog is required");
20
+ if (!createBy.data.serviceId && !createBy.data.service) {
21
+ throw new BadDataException("service is required");
22
22
  }
23
23
 
24
24
  if (!createBy.data.monitor && !createBy.data.monitorId) {
25
25
  throw new BadDataException("monitor is required");
26
26
  }
27
27
 
28
- // serviceCatalogId and dependencyServiceCatalogId should not be the same
29
- const serviceCatalogId: string | ObjectID | undefined =
30
- createBy.data.serviceCatalogId || createBy.data.serviceCatalog?._id;
28
+ // serviceId and dependencyServiceId should not be the same
29
+ const serviceId: string | ObjectID | undefined =
30
+ createBy.data.serviceId || createBy.data.service?._id;
31
31
  const monitorId: string | ObjectID | undefined =
32
32
  createBy.data.monitorId || createBy.data.monitor?._id;
33
33
 
34
- // check if this monitor is already added to the service catalog for this service.
34
+ // check if this monitor is already added to the service for this service.
35
35
 
36
36
  const existingMonitor: Model | null = await this.findOneBy({
37
37
  query: {
38
- serviceCatalogId: serviceCatalogId as ObjectID,
38
+ serviceId: serviceId as ObjectID,
39
39
  monitorId: monitorId as ObjectID,
40
40
  },
41
41
  props: {
@@ -1,5 +1,5 @@
1
1
  import DatabaseService from "./DatabaseService";
2
- import Model from "../../Models/DatabaseModels/ServiceCatalogOwnerTeam";
2
+ import Model from "../../Models/DatabaseModels/ServiceOwnerTeam";
3
3
 
4
4
  export class Service extends DatabaseService<Model> {
5
5
  public constructor() {
@@ -1,5 +1,5 @@
1
1
  import DatabaseService from "./DatabaseService";
2
- import Model from "../../Models/DatabaseModels/ServiceCatalogOwnerUser";
2
+ import Model from "../../Models/DatabaseModels/ServiceOwnerUser";
3
3
 
4
4
  export class Service extends DatabaseService<Model> {
5
5
  public constructor() {
@@ -5,7 +5,7 @@ import ArrayUtil from "../../Utils/Array";
5
5
  import { BrightColors } from "../../Types/BrandColors";
6
6
  import BadDataException from "../../Types/Exception/BadDataException";
7
7
  import ObjectID from "../../Types/ObjectID";
8
- import Model from "../../Models/DatabaseModels/TelemetryService";
8
+ import Model from "../../Models/DatabaseModels/Service";
9
9
  import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
10
10
 
11
11
  export class Service extends DatabaseService<Model> {
@@ -17,8 +17,6 @@ export class Service extends DatabaseService<Model> {
17
17
  protected override async onBeforeCreate(
18
18
  createBy: CreateBy<Model>,
19
19
  ): Promise<OnCreate<Model>> {
20
- createBy.data.telemetryServiceToken = ObjectID.generate();
21
-
22
20
  // select a random color.
23
21
  createBy.data.serviceColor = ArrayUtil.selectItemByRandom(BrightColors);
24
22
 
@@ -30,10 +28,10 @@ export class Service extends DatabaseService<Model> {
30
28
 
31
29
  @CaptureSpan()
32
30
  public async getTelemetryDataRetentionInDays(
33
- telemetryServiceId: ObjectID,
31
+ serviceId: ObjectID,
34
32
  ): Promise<number> {
35
- const project: Model | null = await this.findOneById({
36
- id: telemetryServiceId,
33
+ const service: Model | null = await this.findOneById({
34
+ id: serviceId,
37
35
  select: {
38
36
  retainTelemetryDataForDays: true,
39
37
  },
@@ -42,11 +40,11 @@ export class Service extends DatabaseService<Model> {
42
40
  },
43
41
  });
44
42
 
45
- if (!project) {
46
- throw new BadDataException("Project not found");
43
+ if (!service) {
44
+ throw new BadDataException("Service not found");
47
45
  }
48
46
 
49
- return project.retainTelemetryDataForDays || 15; // default is 15 days.
47
+ return service.retainTelemetryDataForDays || 15; // default is 15 days.
50
48
  }
51
49
  }
52
50
 
@@ -37,7 +37,7 @@ export class Service extends DatabaseService<Model> {
37
37
  projectId: true,
38
38
  message: true,
39
39
  stackTrace: true,
40
- telemetryServiceId: true,
40
+ serviceId: true,
41
41
  exceptionType: true,
42
42
  },
43
43
  props,
@@ -160,9 +160,8 @@ export class Service extends DatabaseService<Model> {
160
160
  metadata.errorMessage = telemetryException.message;
161
161
  }
162
162
 
163
- if (telemetryException.telemetryServiceId) {
164
- metadata.telemetryServiceId =
165
- telemetryException.telemetryServiceId.toString();
163
+ if (telemetryException.serviceId) {
164
+ metadata.serviceId = telemetryException.serviceId.toString();
166
165
  }
167
166
 
168
167
  return metadata;