@oneuptime/common 11.5.1 → 11.5.2

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 (57) hide show
  1. package/Server/Infrastructure/Postgres/SchemaMigrations/1783937343400-MigrationName.ts +386 -0
  2. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +3 -1
  3. package/Server/Services/AnalyticsDatabaseService.ts +59 -7
  4. package/Server/Services/MetricService.ts +124 -28
  5. package/Server/Services/SpanService.ts +11 -0
  6. package/Server/Types/AnalyticsDatabase/AggregateBy.ts +39 -0
  7. package/Server/Utils/AnalyticsDatabase/StatementGenerator.ts +8 -5
  8. package/Tests/Server/Services/AnalyticsDatabaseService.test.ts +84 -0
  9. package/Tests/Server/Services/MetricServiceAggregate.test.ts +167 -0
  10. package/Tests/Types/BaseDatabase/AggregationIntervalUtil.test.ts +40 -0
  11. package/Types/BaseDatabase/AggregateBy.ts +11 -1
  12. package/Types/BaseDatabase/AggregationInterval.ts +10 -0
  13. package/Types/BaseDatabase/AggregationIntervalUtil.ts +23 -0
  14. package/Types/Metrics/MetricFormulaConfigData.ts +5 -0
  15. package/Types/Metrics/MetricQueryConfigData.ts +19 -0
  16. package/UI/Components/Charts/Area/AreaChart.tsx +15 -2
  17. package/UI/Components/Charts/Bar/BarChart.tsx +16 -2
  18. package/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.tsx +31 -32
  19. package/UI/Components/Charts/ChartLibrary/BarChart/BarChart.tsx +41 -17
  20. package/UI/Components/Charts/ChartLibrary/LineChart/LineChart.tsx +38 -34
  21. package/UI/Components/Charts/ChartLibrary/SparkChart/SparkChart.tsx +4 -3
  22. package/UI/Components/Charts/ChartLibrary/Utils/ChartColors.ts +48 -10
  23. package/UI/Components/Charts/Line/LineChart.tsx +15 -2
  24. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783937343400-MigrationName.js +384 -0
  25. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783937343400-MigrationName.js.map +1 -0
  26. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +3 -1
  27. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  28. package/build/dist/Server/Services/AnalyticsDatabaseService.js +43 -5
  29. package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
  30. package/build/dist/Server/Services/MetricService.js +110 -23
  31. package/build/dist/Server/Services/MetricService.js.map +1 -1
  32. package/build/dist/Server/Services/SpanService.js +10 -0
  33. package/build/dist/Server/Services/SpanService.js.map +1 -1
  34. package/build/dist/Server/Types/AnalyticsDatabase/AggregateBy.js +32 -0
  35. package/build/dist/Server/Types/AnalyticsDatabase/AggregateBy.js.map +1 -1
  36. package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js +2 -1
  37. package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js.map +1 -1
  38. package/build/dist/Types/BaseDatabase/AggregationInterval.js +10 -0
  39. package/build/dist/Types/BaseDatabase/AggregationInterval.js.map +1 -1
  40. package/build/dist/Types/BaseDatabase/AggregationIntervalUtil.js +13 -0
  41. package/build/dist/Types/BaseDatabase/AggregationIntervalUtil.js.map +1 -1
  42. package/build/dist/UI/Components/Charts/Area/AreaChart.js +3 -1
  43. package/build/dist/UI/Components/Charts/Area/AreaChart.js.map +1 -1
  44. package/build/dist/UI/Components/Charts/Bar/BarChart.js +3 -1
  45. package/build/dist/UI/Components/Charts/Bar/BarChart.js.map +1 -1
  46. package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js +13 -9
  47. package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js.map +1 -1
  48. package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js +19 -7
  49. package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js.map +1 -1
  50. package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js +21 -9
  51. package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js.map +1 -1
  52. package/build/dist/UI/Components/Charts/ChartLibrary/SparkChart/SparkChart.js.map +1 -1
  53. package/build/dist/UI/Components/Charts/ChartLibrary/Utils/ChartColors.js +26 -0
  54. package/build/dist/UI/Components/Charts/ChartLibrary/Utils/ChartColors.js.map +1 -1
  55. package/build/dist/UI/Components/Charts/Line/LineChart.js +3 -1
  56. package/build/dist/UI/Components/Charts/Line/LineChart.js.map +1 -1
  57. package/package.json +1 -1
@@ -0,0 +1,386 @@
1
+ import { MigrationInterface, QueryRunner } from "typeorm";
2
+
3
+ export class MigrationName1783937343400 implements MigrationInterface {
4
+ public name = 'MigrationName1783937343400'
5
+
6
+ public async up(queryRunner: QueryRunner): Promise<void> {
7
+ await queryRunner.query(`ALTER TABLE "Project" DROP CONSTRAINT "FK_Project_alertInvestigationMinimumSeverityId"`);
8
+ await queryRunner.query(`ALTER TABLE "NetworkDevice" DROP CONSTRAINT "FK_network_device_projectId"`);
9
+ await queryRunner.query(`ALTER TABLE "NetworkDevice" DROP CONSTRAINT "FK_network_device_probeId"`);
10
+ await queryRunner.query(`ALTER TABLE "NetworkDevice" DROP CONSTRAINT "FK_network_device_createdByUserId"`);
11
+ await queryRunner.query(`ALTER TABLE "NetworkDevice" DROP CONSTRAINT "FK_network_device_archivedByUserId"`);
12
+ await queryRunner.query(`ALTER TABLE "NetworkDevice" DROP CONSTRAINT "FK_network_device_deletedByUserId"`);
13
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerTeam" DROP CONSTRAINT "FK_nd_owner_team_projectId"`);
14
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerTeam" DROP CONSTRAINT "FK_nd_owner_team_teamId"`);
15
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerTeam" DROP CONSTRAINT "FK_nd_owner_team_networkDeviceId"`);
16
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerTeam" DROP CONSTRAINT "FK_nd_owner_team_createdByUserId"`);
17
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerTeam" DROP CONSTRAINT "FK_nd_owner_team_deletedByUserId"`);
18
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerUser" DROP CONSTRAINT "FK_nd_owner_user_projectId"`);
19
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerUser" DROP CONSTRAINT "FK_nd_owner_user_userId"`);
20
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerUser" DROP CONSTRAINT "FK_nd_owner_user_networkDeviceId"`);
21
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerUser" DROP CONSTRAINT "FK_nd_owner_user_createdByUserId"`);
22
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerUser" DROP CONSTRAINT "FK_nd_owner_user_deletedByUserId"`);
23
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerRule" DROP CONSTRAINT "FK_nd_owner_rule_projectId"`);
24
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerRule" DROP CONSTRAINT "FK_nd_owner_rule_createdByUserId"`);
25
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerRule" DROP CONSTRAINT "FK_nd_owner_rule_deletedByUserId"`);
26
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceLabelRule" DROP CONSTRAINT "FK_nd_label_rule_projectId"`);
27
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceLabelRule" DROP CONSTRAINT "FK_nd_label_rule_createdByUserId"`);
28
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceLabelRule" DROP CONSTRAINT "FK_nd_label_rule_deletedByUserId"`);
29
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceDiscoveryScan" DROP CONSTRAINT "FK_nd_discovery_scan_projectId"`);
30
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceDiscoveryScan" DROP CONSTRAINT "FK_nd_discovery_scan_probeId"`);
31
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceDiscoveryScan" DROP CONSTRAINT "FK_nd_discovery_scan_createdByUserId"`);
32
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceDiscoveryScan" DROP CONSTRAINT "FK_nd_discovery_scan_deletedByUserId"`);
33
+ await queryRunner.query(`ALTER TABLE "NetworkInterface" DROP CONSTRAINT "FK_network_interface_projectId"`);
34
+ await queryRunner.query(`ALTER TABLE "NetworkInterface" DROP CONSTRAINT "FK_network_interface_networkDeviceId"`);
35
+ await queryRunner.query(`ALTER TABLE "NetworkInterface" DROP CONSTRAINT "FK_network_interface_createdByUserId"`);
36
+ await queryRunner.query(`ALTER TABLE "NetworkInterface" DROP CONSTRAINT "FK_network_interface_deletedByUserId"`);
37
+ await queryRunner.query(`ALTER TABLE "IoTDeviceCredential" DROP CONSTRAINT "FK_iot_device_credential_projectId"`);
38
+ await queryRunner.query(`ALTER TABLE "IoTDeviceCredential" DROP CONSTRAINT "FK_iot_device_credential_iotFleetId"`);
39
+ await queryRunner.query(`ALTER TABLE "IoTDeviceCredential" DROP CONSTRAINT "FK_iot_device_credential_createdByUserId"`);
40
+ await queryRunner.query(`ALTER TABLE "IoTDeviceCredential" DROP CONSTRAINT "FK_iot_device_credential_deletedByUserId"`);
41
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceLabel" DROP CONSTRAINT "FK_network_device_label_networkDeviceId"`);
42
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceLabel" DROP CONSTRAINT "FK_network_device_label_labelId"`);
43
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerRuleNetworkDeviceLabel" DROP CONSTRAINT "FK_NetworkDeviceOwnerRuleNetworkDeviceLabel_ruleId"`);
44
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerRuleNetworkDeviceLabel" DROP CONSTRAINT "FK_NetworkDeviceOwnerRuleNetworkDeviceLabel_labelId"`);
45
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerRuleOwnerUser" DROP CONSTRAINT "FK_NetworkDeviceOwnerRuleOwnerUser_ruleId"`);
46
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerRuleOwnerUser" DROP CONSTRAINT "FK_NetworkDeviceOwnerRuleOwnerUser_userId"`);
47
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerRuleOwnerTeam" DROP CONSTRAINT "FK_NetworkDeviceOwnerRuleOwnerTeam_ruleId"`);
48
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerRuleOwnerTeam" DROP CONSTRAINT "FK_NetworkDeviceOwnerRuleOwnerTeam_teamId"`);
49
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceLabelRuleNetworkDeviceLabel" DROP CONSTRAINT "FK_NetworkDeviceLabelRuleNetworkDeviceLabel_ruleId"`);
50
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceLabelRuleNetworkDeviceLabel" DROP CONSTRAINT "FK_NetworkDeviceLabelRuleNetworkDeviceLabel_labelId"`);
51
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceLabelRuleLabelToAdd" DROP CONSTRAINT "FK_NetworkDeviceLabelRuleLabelToAdd_ruleId"`);
52
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceLabelRuleLabelToAdd" DROP CONSTRAINT "FK_NetworkDeviceLabelRuleLabelToAdd_labelId"`);
53
+ await queryRunner.query(`DROP INDEX "public"."IDX_network_device_projectId"`);
54
+ await queryRunner.query(`DROP INDEX "public"."IDX_network_device_projectId_isArchived"`);
55
+ await queryRunner.query(`DROP INDEX "public"."IDX_network_device_hostname"`);
56
+ await queryRunner.query(`DROP INDEX "public"."IDX_network_device_slug"`);
57
+ await queryRunner.query(`DROP INDEX "public"."IDX_network_device_owner_team_projectId"`);
58
+ await queryRunner.query(`DROP INDEX "public"."IDX_network_device_owner_team_teamId"`);
59
+ await queryRunner.query(`DROP INDEX "public"."IDX_network_device_owner_team_networkDeviceId"`);
60
+ await queryRunner.query(`DROP INDEX "public"."IDX_network_device_owner_team_isOwnerNotified"`);
61
+ await queryRunner.query(`DROP INDEX "public"."IDX_network_device_owner_user_projectId"`);
62
+ await queryRunner.query(`DROP INDEX "public"."IDX_network_device_owner_user_userId"`);
63
+ await queryRunner.query(`DROP INDEX "public"."IDX_network_device_owner_user_networkDeviceId"`);
64
+ await queryRunner.query(`DROP INDEX "public"."IDX_network_device_owner_user_isOwnerNotified"`);
65
+ await queryRunner.query(`DROP INDEX "public"."IDX_network_device_owner_rule_projectId"`);
66
+ await queryRunner.query(`DROP INDEX "public"."IDX_network_device_owner_rule_name"`);
67
+ await queryRunner.query(`DROP INDEX "public"."IDX_network_device_owner_rule_isEnabled"`);
68
+ await queryRunner.query(`DROP INDEX "public"."IDX_network_device_label_rule_projectId"`);
69
+ await queryRunner.query(`DROP INDEX "public"."IDX_network_device_label_rule_name"`);
70
+ await queryRunner.query(`DROP INDEX "public"."IDX_network_device_label_rule_isEnabled"`);
71
+ await queryRunner.query(`DROP INDEX "public"."IDX_network_device_discovery_scan_projectId"`);
72
+ await queryRunner.query(`DROP INDEX "public"."IDX_network_device_discovery_scan_probeId_status"`);
73
+ await queryRunner.query(`DROP INDEX "public"."IDX_network_interface_projectId"`);
74
+ await queryRunner.query(`DROP INDEX "public"."IDX_network_interface_networkDeviceId"`);
75
+ await queryRunner.query(`DROP INDEX "public"."IDX_network_interface_projectId_networkDeviceId"`);
76
+ await queryRunner.query(`DROP INDEX "public"."IDX_network_interface_device_ifindex"`);
77
+ await queryRunner.query(`DROP INDEX "public"."IDX_iot_device_credential_projectId"`);
78
+ await queryRunner.query(`DROP INDEX "public"."IDX_iot_device_credential_iotFleetId"`);
79
+ await queryRunner.query(`DROP INDEX "public"."IDX_iot_device_credential_externalId"`);
80
+ await queryRunner.query(`DROP INDEX "public"."IDX_iot_device_credential_secretKey"`);
81
+ await queryRunner.query(`DROP INDEX "public"."IDX_iot_device_credential_fleet_externalId"`);
82
+ await queryRunner.query(`DROP INDEX "public"."IDX_AIRun_triggeredByIncidentId"`);
83
+ await queryRunner.query(`DROP INDEX "public"."IDX_AIRun_triggeredByAlertId"`);
84
+ await queryRunner.query(`DROP INDEX "public"."IDX_AIRun_monitorId"`);
85
+ await queryRunner.query(`DROP INDEX "public"."IDX_network_device_label_networkDeviceId"`);
86
+ await queryRunner.query(`DROP INDEX "public"."IDX_network_device_label_labelId"`);
87
+ await queryRunner.query(`DROP INDEX "public"."IDX_NetworkDeviceOwnerRuleNetworkDeviceLabel_ruleId"`);
88
+ await queryRunner.query(`DROP INDEX "public"."IDX_NetworkDeviceOwnerRuleNetworkDeviceLabel_labelId"`);
89
+ await queryRunner.query(`DROP INDEX "public"."IDX_NetworkDeviceOwnerRuleOwnerUser_ruleId"`);
90
+ await queryRunner.query(`DROP INDEX "public"."IDX_NetworkDeviceOwnerRuleOwnerUser_userId"`);
91
+ await queryRunner.query(`DROP INDEX "public"."IDX_NetworkDeviceOwnerRuleOwnerTeam_ruleId"`);
92
+ await queryRunner.query(`DROP INDEX "public"."IDX_NetworkDeviceOwnerRuleOwnerTeam_teamId"`);
93
+ await queryRunner.query(`DROP INDEX "public"."IDX_NetworkDeviceLabelRuleNetworkDeviceLabel_ruleId"`);
94
+ await queryRunner.query(`DROP INDEX "public"."IDX_NetworkDeviceLabelRuleNetworkDeviceLabel_labelId"`);
95
+ await queryRunner.query(`DROP INDEX "public"."IDX_NetworkDeviceLabelRuleLabelToAdd_ruleId"`);
96
+ await queryRunner.query(`DROP INDEX "public"."IDX_NetworkDeviceLabelRuleLabelToAdd_labelId"`);
97
+ await queryRunner.query(`ALTER TABLE "NetworkInterface" DROP COLUMN "createdByUserId"`);
98
+ await queryRunner.query(`ALTER TABLE "NetworkInterface" DROP COLUMN "deletedByUserId"`);
99
+ await queryRunner.query(`ALTER TABLE "NetworkDevice" ALTER COLUMN "snmpVersion" SET DEFAULT 'V2c'`);
100
+ await queryRunner.query(`ALTER TABLE "NetworkDevice" DROP COLUMN "snmpV3AuthKey"`);
101
+ await queryRunner.query(`ALTER TABLE "NetworkDevice" ADD "snmpV3AuthKey" character varying`);
102
+ await queryRunner.query(`ALTER TABLE "NetworkDevice" DROP COLUMN "snmpV3PrivKey"`);
103
+ await queryRunner.query(`ALTER TABLE "NetworkDevice" ADD "snmpV3PrivKey" character varying`);
104
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceDiscoveryScan" ALTER COLUMN "snmpVersion" SET DEFAULT 'V2c'`);
105
+ await queryRunner.query(`ALTER TABLE "OnCallDutyPolicyScheduleLayer" ALTER COLUMN "rotation" SET DEFAULT '{"_type":"Recurring","value":{"intervalType":"Day","intervalCount":{"_type":"PositiveNumber","value":1}}}'`);
106
+ await queryRunner.query(`ALTER TABLE "OnCallDutyPolicyScheduleLayer" ALTER COLUMN "restrictionTimes" SET DEFAULT '{"_type":"RestrictionTimes","value":{"restictionType":"None","dayRestrictionTimes":null,"weeklyRestrictionTimes":[]}}'`);
107
+ await queryRunner.query(`CREATE INDEX "IDX_013b5e41b9038b20bb5d5eb419" ON "NetworkDevice" ("projectId") `);
108
+ await queryRunner.query(`CREATE INDEX "IDX_0fa6fd1a6f500aaa861b7889b5" ON "NetworkDevice" ("hostname") `);
109
+ await queryRunner.query(`CREATE INDEX "IDX_878d6fc3878837bb01e09b2f3f" ON "NetworkDevice" ("projectId", "isArchived") `);
110
+ await queryRunner.query(`CREATE INDEX "IDX_995daaa461b8bb7737d0a18060" ON "NetworkDeviceOwnerTeam" ("projectId") `);
111
+ await queryRunner.query(`CREATE INDEX "IDX_7663695e384398a0ab92bd1ebb" ON "NetworkDeviceOwnerTeam" ("teamId") `);
112
+ await queryRunner.query(`CREATE INDEX "IDX_0e83f8e1b994bf8c4b40a93de0" ON "NetworkDeviceOwnerTeam" ("networkDeviceId") `);
113
+ await queryRunner.query(`CREATE INDEX "IDX_24b412eb7c5e14d8895fc4c943" ON "NetworkDeviceOwnerTeam" ("isOwnerNotified") `);
114
+ await queryRunner.query(`CREATE INDEX "IDX_1045582ada8b55d8539d5809e4" ON "NetworkDeviceOwnerUser" ("projectId") `);
115
+ await queryRunner.query(`CREATE INDEX "IDX_fc42ffffbfa743144c8e489100" ON "NetworkDeviceOwnerUser" ("userId") `);
116
+ await queryRunner.query(`CREATE INDEX "IDX_c9e37f1b2bef23b32728bfdb3c" ON "NetworkDeviceOwnerUser" ("networkDeviceId") `);
117
+ await queryRunner.query(`CREATE INDEX "IDX_c8e2b6df50e0f261057b4ad2f4" ON "NetworkDeviceOwnerUser" ("isOwnerNotified") `);
118
+ await queryRunner.query(`CREATE INDEX "IDX_00acc40f832e5d3dccab7fb793" ON "NetworkDeviceOwnerRule" ("projectId") `);
119
+ await queryRunner.query(`CREATE INDEX "IDX_f2e564991e712c65a4ce3addc8" ON "NetworkDeviceOwnerRule" ("name") `);
120
+ await queryRunner.query(`CREATE INDEX "IDX_cae4f1031b7aad75c32bf97461" ON "NetworkDeviceOwnerRule" ("isEnabled") `);
121
+ await queryRunner.query(`CREATE INDEX "IDX_af44c69f44ec3c788722834759" ON "NetworkDeviceLabelRule" ("projectId") `);
122
+ await queryRunner.query(`CREATE INDEX "IDX_3793fa86d7a037d64290800e24" ON "NetworkDeviceLabelRule" ("name") `);
123
+ await queryRunner.query(`CREATE INDEX "IDX_6fdbb1a0edfbad7dd5c61dbfdb" ON "NetworkDeviceLabelRule" ("isEnabled") `);
124
+ await queryRunner.query(`CREATE INDEX "IDX_07cbc66823954383f2ce7ae88c" ON "NetworkDeviceDiscoveryScan" ("projectId") `);
125
+ await queryRunner.query(`CREATE INDEX "IDX_db5710091605ef1636be8406a7" ON "NetworkDeviceDiscoveryScan" ("probeId") `);
126
+ await queryRunner.query(`CREATE INDEX "IDX_4f1d2a67c3bdddcf886f50456d" ON "NetworkDeviceDiscoveryScan" ("status") `);
127
+ await queryRunner.query(`CREATE INDEX "IDX_c16558ff995b841f3874414c1c" ON "NetworkInterface" ("projectId") `);
128
+ await queryRunner.query(`CREATE INDEX "IDX_77d42253415c47fbf90d51f647" ON "NetworkInterface" ("networkDeviceId") `);
129
+ await queryRunner.query(`CREATE INDEX "IDX_1b2508aa56b5ff2b24f5b0e766" ON "NetworkInterface" ("projectId", "networkDeviceId") `);
130
+ await queryRunner.query(`CREATE INDEX "IDX_2956e682707ccc12e39a84a105" ON "IoTDeviceCredential" ("projectId") `);
131
+ await queryRunner.query(`CREATE INDEX "IDX_82fca2f399495f9827d6eaa7ee" ON "IoTDeviceCredential" ("iotFleetId") `);
132
+ await queryRunner.query(`CREATE INDEX "IDX_b471027fe1f99ed101f5564100" ON "IoTDeviceCredential" ("externalId") `);
133
+ await queryRunner.query(`CREATE INDEX "IDX_fa0f6f56456520a0b0eda73a7e" ON "IoTDeviceCredential" ("secretKey") `);
134
+ await queryRunner.query(`CREATE UNIQUE INDEX "IDX_c0ae0a9cfdb66ad65a77066802" ON "IoTDeviceCredential" ("projectId", "iotFleetId", "externalId") `);
135
+ await queryRunner.query(`CREATE INDEX "IDX_08a36ceecd6596aeedc9a473c7" ON "AIRun" ("triggeredByIncidentId") `);
136
+ await queryRunner.query(`CREATE INDEX "IDX_455c247c8a7884be997503098f" ON "AIRun" ("triggeredByAlertId") `);
137
+ await queryRunner.query(`CREATE INDEX "IDX_3cd9ba3ad193250b13477e5fde" ON "AIRun" ("monitorId") `);
138
+ await queryRunner.query(`CREATE INDEX "IDX_9f9f521a00ad738c75409b5763" ON "NetworkDeviceLabel" ("networkDeviceId") `);
139
+ await queryRunner.query(`CREATE INDEX "IDX_c0fc4617e1c1fef22e313c2772" ON "NetworkDeviceLabel" ("labelId") `);
140
+ await queryRunner.query(`CREATE INDEX "IDX_5964312b9c73efd3b13e857c10" ON "NetworkDeviceOwnerRuleNetworkDeviceLabel" ("networkDeviceOwnerRuleId") `);
141
+ await queryRunner.query(`CREATE INDEX "IDX_d4b3a67839023dbf9b544ffb96" ON "NetworkDeviceOwnerRuleNetworkDeviceLabel" ("labelId") `);
142
+ await queryRunner.query(`CREATE INDEX "IDX_87cac5a7fdf13e7a868c700816" ON "NetworkDeviceOwnerRuleOwnerUser" ("networkDeviceOwnerRuleId") `);
143
+ await queryRunner.query(`CREATE INDEX "IDX_b81f77e774d423f72664be19c8" ON "NetworkDeviceOwnerRuleOwnerUser" ("userId") `);
144
+ await queryRunner.query(`CREATE INDEX "IDX_1e5263dedddc9950776d108ea8" ON "NetworkDeviceOwnerRuleOwnerTeam" ("networkDeviceOwnerRuleId") `);
145
+ await queryRunner.query(`CREATE INDEX "IDX_42ab7d4cfcab40e81ff1bdc2cb" ON "NetworkDeviceOwnerRuleOwnerTeam" ("teamId") `);
146
+ await queryRunner.query(`CREATE INDEX "IDX_e65fd5ddaec26a2551bf81b6dc" ON "NetworkDeviceLabelRuleNetworkDeviceLabel" ("networkDeviceLabelRuleId") `);
147
+ await queryRunner.query(`CREATE INDEX "IDX_b6fdc7463438554e1d315034d1" ON "NetworkDeviceLabelRuleNetworkDeviceLabel" ("labelId") `);
148
+ await queryRunner.query(`CREATE INDEX "IDX_ae1281598a798f4347b3c14a6b" ON "NetworkDeviceLabelRuleLabelToAdd" ("networkDeviceLabelRuleId") `);
149
+ await queryRunner.query(`CREATE INDEX "IDX_2da6349c86d57cd731c34fe71b" ON "NetworkDeviceLabelRuleLabelToAdd" ("labelId") `);
150
+ await queryRunner.query(`ALTER TABLE "Project" ADD CONSTRAINT "FK_cb3c2936c0b88fdf2a790fd7322" FOREIGN KEY ("alertInvestigationMinimumSeverityId") REFERENCES "AlertSeverity"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
151
+ await queryRunner.query(`ALTER TABLE "NetworkDevice" ADD CONSTRAINT "FK_013b5e41b9038b20bb5d5eb419c" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
152
+ await queryRunner.query(`ALTER TABLE "NetworkDevice" ADD CONSTRAINT "FK_83b4a3ffbed23270b6084c81f4b" FOREIGN KEY ("probeId") REFERENCES "Probe"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
153
+ await queryRunner.query(`ALTER TABLE "NetworkDevice" ADD CONSTRAINT "FK_e039fa032dbaa1534c1ef77dcec" FOREIGN KEY ("createdByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
154
+ await queryRunner.query(`ALTER TABLE "NetworkDevice" ADD CONSTRAINT "FK_175f29a8013cb3af200397289d3" FOREIGN KEY ("archivedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
155
+ await queryRunner.query(`ALTER TABLE "NetworkDevice" ADD CONSTRAINT "FK_4fa51de5ca772c255c845952bc2" FOREIGN KEY ("deletedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
156
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerTeam" ADD CONSTRAINT "FK_995daaa461b8bb7737d0a18060d" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
157
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerTeam" ADD CONSTRAINT "FK_7663695e384398a0ab92bd1ebb7" FOREIGN KEY ("teamId") REFERENCES "Team"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
158
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerTeam" ADD CONSTRAINT "FK_0e83f8e1b994bf8c4b40a93de07" FOREIGN KEY ("networkDeviceId") REFERENCES "NetworkDevice"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
159
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerTeam" ADD CONSTRAINT "FK_f6c636f254f4c6f7f9ad945b4c1" FOREIGN KEY ("createdByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
160
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerTeam" ADD CONSTRAINT "FK_8050ac10da1503ba19f6ba209b4" FOREIGN KEY ("deletedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
161
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerUser" ADD CONSTRAINT "FK_1045582ada8b55d8539d5809e4d" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
162
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerUser" ADD CONSTRAINT "FK_fc42ffffbfa743144c8e4891009" FOREIGN KEY ("userId") REFERENCES "User"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
163
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerUser" ADD CONSTRAINT "FK_c9e37f1b2bef23b32728bfdb3c0" FOREIGN KEY ("networkDeviceId") REFERENCES "NetworkDevice"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
164
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerUser" ADD CONSTRAINT "FK_32b774550d4fd426b18ceb07003" FOREIGN KEY ("createdByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
165
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerUser" ADD CONSTRAINT "FK_20f98ac43c96c7bfb243640cc3f" FOREIGN KEY ("deletedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
166
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerRule" ADD CONSTRAINT "FK_00acc40f832e5d3dccab7fb7937" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
167
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerRule" ADD CONSTRAINT "FK_3ec23f67dda8756349c9efcb99a" FOREIGN KEY ("createdByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
168
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerRule" ADD CONSTRAINT "FK_46ae144cd651021478bb02f5e7f" FOREIGN KEY ("deletedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
169
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceLabelRule" ADD CONSTRAINT "FK_af44c69f44ec3c788722834759b" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
170
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceLabelRule" ADD CONSTRAINT "FK_835a289f4bf53d0988bed555259" FOREIGN KEY ("createdByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
171
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceLabelRule" ADD CONSTRAINT "FK_eff1c298121aab64fba34115cea" FOREIGN KEY ("deletedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
172
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceDiscoveryScan" ADD CONSTRAINT "FK_07cbc66823954383f2ce7ae88c4" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
173
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceDiscoveryScan" ADD CONSTRAINT "FK_db5710091605ef1636be8406a7d" FOREIGN KEY ("probeId") REFERENCES "Probe"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
174
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceDiscoveryScan" ADD CONSTRAINT "FK_8fcdb52b616afb4672c2d1b6365" FOREIGN KEY ("createdByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
175
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceDiscoveryScan" ADD CONSTRAINT "FK_9d892856629b6f597ccc60557f4" FOREIGN KEY ("deletedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
176
+ await queryRunner.query(`ALTER TABLE "NetworkInterface" ADD CONSTRAINT "FK_c16558ff995b841f3874414c1cd" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
177
+ await queryRunner.query(`ALTER TABLE "NetworkInterface" ADD CONSTRAINT "FK_77d42253415c47fbf90d51f6476" FOREIGN KEY ("networkDeviceId") REFERENCES "NetworkDevice"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
178
+ await queryRunner.query(`ALTER TABLE "IoTDeviceCredential" ADD CONSTRAINT "FK_2956e682707ccc12e39a84a105f" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
179
+ await queryRunner.query(`ALTER TABLE "IoTDeviceCredential" ADD CONSTRAINT "FK_82fca2f399495f9827d6eaa7ee5" FOREIGN KEY ("iotFleetId") REFERENCES "IoTFleet"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
180
+ await queryRunner.query(`ALTER TABLE "IoTDeviceCredential" ADD CONSTRAINT "FK_2492befebdb67cb0d3da1f4c844" FOREIGN KEY ("createdByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
181
+ await queryRunner.query(`ALTER TABLE "IoTDeviceCredential" ADD CONSTRAINT "FK_e03efc287e1715f34367081650a" FOREIGN KEY ("deletedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
182
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceLabel" ADD CONSTRAINT "FK_9f9f521a00ad738c75409b57633" FOREIGN KEY ("networkDeviceId") REFERENCES "NetworkDevice"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
183
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceLabel" ADD CONSTRAINT "FK_c0fc4617e1c1fef22e313c27728" FOREIGN KEY ("labelId") REFERENCES "Label"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
184
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerRuleNetworkDeviceLabel" ADD CONSTRAINT "FK_5964312b9c73efd3b13e857c101" FOREIGN KEY ("networkDeviceOwnerRuleId") REFERENCES "NetworkDeviceOwnerRule"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
185
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerRuleNetworkDeviceLabel" ADD CONSTRAINT "FK_d4b3a67839023dbf9b544ffb96c" FOREIGN KEY ("labelId") REFERENCES "Label"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
186
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerRuleOwnerUser" ADD CONSTRAINT "FK_87cac5a7fdf13e7a868c7008168" FOREIGN KEY ("networkDeviceOwnerRuleId") REFERENCES "NetworkDeviceOwnerRule"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
187
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerRuleOwnerUser" ADD CONSTRAINT "FK_b81f77e774d423f72664be19c8a" FOREIGN KEY ("userId") REFERENCES "User"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
188
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerRuleOwnerTeam" ADD CONSTRAINT "FK_1e5263dedddc9950776d108ea87" FOREIGN KEY ("networkDeviceOwnerRuleId") REFERENCES "NetworkDeviceOwnerRule"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
189
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerRuleOwnerTeam" ADD CONSTRAINT "FK_42ab7d4cfcab40e81ff1bdc2cb0" FOREIGN KEY ("teamId") REFERENCES "Team"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
190
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceLabelRuleNetworkDeviceLabel" ADD CONSTRAINT "FK_e65fd5ddaec26a2551bf81b6dc3" FOREIGN KEY ("networkDeviceLabelRuleId") REFERENCES "NetworkDeviceLabelRule"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
191
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceLabelRuleNetworkDeviceLabel" ADD CONSTRAINT "FK_b6fdc7463438554e1d315034d1a" FOREIGN KEY ("labelId") REFERENCES "Label"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
192
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceLabelRuleLabelToAdd" ADD CONSTRAINT "FK_ae1281598a798f4347b3c14a6b5" FOREIGN KEY ("networkDeviceLabelRuleId") REFERENCES "NetworkDeviceLabelRule"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
193
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceLabelRuleLabelToAdd" ADD CONSTRAINT "FK_2da6349c86d57cd731c34fe71b0" FOREIGN KEY ("labelId") REFERENCES "Label"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
194
+ }
195
+
196
+ public async down(queryRunner: QueryRunner): Promise<void> {
197
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceLabelRuleLabelToAdd" DROP CONSTRAINT "FK_2da6349c86d57cd731c34fe71b0"`);
198
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceLabelRuleLabelToAdd" DROP CONSTRAINT "FK_ae1281598a798f4347b3c14a6b5"`);
199
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceLabelRuleNetworkDeviceLabel" DROP CONSTRAINT "FK_b6fdc7463438554e1d315034d1a"`);
200
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceLabelRuleNetworkDeviceLabel" DROP CONSTRAINT "FK_e65fd5ddaec26a2551bf81b6dc3"`);
201
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerRuleOwnerTeam" DROP CONSTRAINT "FK_42ab7d4cfcab40e81ff1bdc2cb0"`);
202
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerRuleOwnerTeam" DROP CONSTRAINT "FK_1e5263dedddc9950776d108ea87"`);
203
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerRuleOwnerUser" DROP CONSTRAINT "FK_b81f77e774d423f72664be19c8a"`);
204
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerRuleOwnerUser" DROP CONSTRAINT "FK_87cac5a7fdf13e7a868c7008168"`);
205
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerRuleNetworkDeviceLabel" DROP CONSTRAINT "FK_d4b3a67839023dbf9b544ffb96c"`);
206
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerRuleNetworkDeviceLabel" DROP CONSTRAINT "FK_5964312b9c73efd3b13e857c101"`);
207
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceLabel" DROP CONSTRAINT "FK_c0fc4617e1c1fef22e313c27728"`);
208
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceLabel" DROP CONSTRAINT "FK_9f9f521a00ad738c75409b57633"`);
209
+ await queryRunner.query(`ALTER TABLE "IoTDeviceCredential" DROP CONSTRAINT "FK_e03efc287e1715f34367081650a"`);
210
+ await queryRunner.query(`ALTER TABLE "IoTDeviceCredential" DROP CONSTRAINT "FK_2492befebdb67cb0d3da1f4c844"`);
211
+ await queryRunner.query(`ALTER TABLE "IoTDeviceCredential" DROP CONSTRAINT "FK_82fca2f399495f9827d6eaa7ee5"`);
212
+ await queryRunner.query(`ALTER TABLE "IoTDeviceCredential" DROP CONSTRAINT "FK_2956e682707ccc12e39a84a105f"`);
213
+ await queryRunner.query(`ALTER TABLE "NetworkInterface" DROP CONSTRAINT "FK_77d42253415c47fbf90d51f6476"`);
214
+ await queryRunner.query(`ALTER TABLE "NetworkInterface" DROP CONSTRAINT "FK_c16558ff995b841f3874414c1cd"`);
215
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceDiscoveryScan" DROP CONSTRAINT "FK_9d892856629b6f597ccc60557f4"`);
216
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceDiscoveryScan" DROP CONSTRAINT "FK_8fcdb52b616afb4672c2d1b6365"`);
217
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceDiscoveryScan" DROP CONSTRAINT "FK_db5710091605ef1636be8406a7d"`);
218
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceDiscoveryScan" DROP CONSTRAINT "FK_07cbc66823954383f2ce7ae88c4"`);
219
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceLabelRule" DROP CONSTRAINT "FK_eff1c298121aab64fba34115cea"`);
220
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceLabelRule" DROP CONSTRAINT "FK_835a289f4bf53d0988bed555259"`);
221
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceLabelRule" DROP CONSTRAINT "FK_af44c69f44ec3c788722834759b"`);
222
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerRule" DROP CONSTRAINT "FK_46ae144cd651021478bb02f5e7f"`);
223
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerRule" DROP CONSTRAINT "FK_3ec23f67dda8756349c9efcb99a"`);
224
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerRule" DROP CONSTRAINT "FK_00acc40f832e5d3dccab7fb7937"`);
225
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerUser" DROP CONSTRAINT "FK_20f98ac43c96c7bfb243640cc3f"`);
226
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerUser" DROP CONSTRAINT "FK_32b774550d4fd426b18ceb07003"`);
227
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerUser" DROP CONSTRAINT "FK_c9e37f1b2bef23b32728bfdb3c0"`);
228
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerUser" DROP CONSTRAINT "FK_fc42ffffbfa743144c8e4891009"`);
229
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerUser" DROP CONSTRAINT "FK_1045582ada8b55d8539d5809e4d"`);
230
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerTeam" DROP CONSTRAINT "FK_8050ac10da1503ba19f6ba209b4"`);
231
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerTeam" DROP CONSTRAINT "FK_f6c636f254f4c6f7f9ad945b4c1"`);
232
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerTeam" DROP CONSTRAINT "FK_0e83f8e1b994bf8c4b40a93de07"`);
233
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerTeam" DROP CONSTRAINT "FK_7663695e384398a0ab92bd1ebb7"`);
234
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerTeam" DROP CONSTRAINT "FK_995daaa461b8bb7737d0a18060d"`);
235
+ await queryRunner.query(`ALTER TABLE "NetworkDevice" DROP CONSTRAINT "FK_4fa51de5ca772c255c845952bc2"`);
236
+ await queryRunner.query(`ALTER TABLE "NetworkDevice" DROP CONSTRAINT "FK_175f29a8013cb3af200397289d3"`);
237
+ await queryRunner.query(`ALTER TABLE "NetworkDevice" DROP CONSTRAINT "FK_e039fa032dbaa1534c1ef77dcec"`);
238
+ await queryRunner.query(`ALTER TABLE "NetworkDevice" DROP CONSTRAINT "FK_83b4a3ffbed23270b6084c81f4b"`);
239
+ await queryRunner.query(`ALTER TABLE "NetworkDevice" DROP CONSTRAINT "FK_013b5e41b9038b20bb5d5eb419c"`);
240
+ await queryRunner.query(`ALTER TABLE "Project" DROP CONSTRAINT "FK_cb3c2936c0b88fdf2a790fd7322"`);
241
+ await queryRunner.query(`DROP INDEX "public"."IDX_2da6349c86d57cd731c34fe71b"`);
242
+ await queryRunner.query(`DROP INDEX "public"."IDX_ae1281598a798f4347b3c14a6b"`);
243
+ await queryRunner.query(`DROP INDEX "public"."IDX_b6fdc7463438554e1d315034d1"`);
244
+ await queryRunner.query(`DROP INDEX "public"."IDX_e65fd5ddaec26a2551bf81b6dc"`);
245
+ await queryRunner.query(`DROP INDEX "public"."IDX_42ab7d4cfcab40e81ff1bdc2cb"`);
246
+ await queryRunner.query(`DROP INDEX "public"."IDX_1e5263dedddc9950776d108ea8"`);
247
+ await queryRunner.query(`DROP INDEX "public"."IDX_b81f77e774d423f72664be19c8"`);
248
+ await queryRunner.query(`DROP INDEX "public"."IDX_87cac5a7fdf13e7a868c700816"`);
249
+ await queryRunner.query(`DROP INDEX "public"."IDX_d4b3a67839023dbf9b544ffb96"`);
250
+ await queryRunner.query(`DROP INDEX "public"."IDX_5964312b9c73efd3b13e857c10"`);
251
+ await queryRunner.query(`DROP INDEX "public"."IDX_c0fc4617e1c1fef22e313c2772"`);
252
+ await queryRunner.query(`DROP INDEX "public"."IDX_9f9f521a00ad738c75409b5763"`);
253
+ await queryRunner.query(`DROP INDEX "public"."IDX_3cd9ba3ad193250b13477e5fde"`);
254
+ await queryRunner.query(`DROP INDEX "public"."IDX_455c247c8a7884be997503098f"`);
255
+ await queryRunner.query(`DROP INDEX "public"."IDX_08a36ceecd6596aeedc9a473c7"`);
256
+ await queryRunner.query(`DROP INDEX "public"."IDX_c0ae0a9cfdb66ad65a77066802"`);
257
+ await queryRunner.query(`DROP INDEX "public"."IDX_fa0f6f56456520a0b0eda73a7e"`);
258
+ await queryRunner.query(`DROP INDEX "public"."IDX_b471027fe1f99ed101f5564100"`);
259
+ await queryRunner.query(`DROP INDEX "public"."IDX_82fca2f399495f9827d6eaa7ee"`);
260
+ await queryRunner.query(`DROP INDEX "public"."IDX_2956e682707ccc12e39a84a105"`);
261
+ await queryRunner.query(`DROP INDEX "public"."IDX_1b2508aa56b5ff2b24f5b0e766"`);
262
+ await queryRunner.query(`DROP INDEX "public"."IDX_77d42253415c47fbf90d51f647"`);
263
+ await queryRunner.query(`DROP INDEX "public"."IDX_c16558ff995b841f3874414c1c"`);
264
+ await queryRunner.query(`DROP INDEX "public"."IDX_4f1d2a67c3bdddcf886f50456d"`);
265
+ await queryRunner.query(`DROP INDEX "public"."IDX_db5710091605ef1636be8406a7"`);
266
+ await queryRunner.query(`DROP INDEX "public"."IDX_07cbc66823954383f2ce7ae88c"`);
267
+ await queryRunner.query(`DROP INDEX "public"."IDX_6fdbb1a0edfbad7dd5c61dbfdb"`);
268
+ await queryRunner.query(`DROP INDEX "public"."IDX_3793fa86d7a037d64290800e24"`);
269
+ await queryRunner.query(`DROP INDEX "public"."IDX_af44c69f44ec3c788722834759"`);
270
+ await queryRunner.query(`DROP INDEX "public"."IDX_cae4f1031b7aad75c32bf97461"`);
271
+ await queryRunner.query(`DROP INDEX "public"."IDX_f2e564991e712c65a4ce3addc8"`);
272
+ await queryRunner.query(`DROP INDEX "public"."IDX_00acc40f832e5d3dccab7fb793"`);
273
+ await queryRunner.query(`DROP INDEX "public"."IDX_c8e2b6df50e0f261057b4ad2f4"`);
274
+ await queryRunner.query(`DROP INDEX "public"."IDX_c9e37f1b2bef23b32728bfdb3c"`);
275
+ await queryRunner.query(`DROP INDEX "public"."IDX_fc42ffffbfa743144c8e489100"`);
276
+ await queryRunner.query(`DROP INDEX "public"."IDX_1045582ada8b55d8539d5809e4"`);
277
+ await queryRunner.query(`DROP INDEX "public"."IDX_24b412eb7c5e14d8895fc4c943"`);
278
+ await queryRunner.query(`DROP INDEX "public"."IDX_0e83f8e1b994bf8c4b40a93de0"`);
279
+ await queryRunner.query(`DROP INDEX "public"."IDX_7663695e384398a0ab92bd1ebb"`);
280
+ await queryRunner.query(`DROP INDEX "public"."IDX_995daaa461b8bb7737d0a18060"`);
281
+ await queryRunner.query(`DROP INDEX "public"."IDX_878d6fc3878837bb01e09b2f3f"`);
282
+ await queryRunner.query(`DROP INDEX "public"."IDX_0fa6fd1a6f500aaa861b7889b5"`);
283
+ await queryRunner.query(`DROP INDEX "public"."IDX_013b5e41b9038b20bb5d5eb419"`);
284
+ await queryRunner.query(`ALTER TABLE "OnCallDutyPolicyScheduleLayer" ALTER COLUMN "restrictionTimes" SET DEFAULT '{"_type": "RestrictionTimes", "value": {"restictionType": "None", "dayRestrictionTimes": null, "weeklyRestrictionTimes": []}}'`);
285
+ await queryRunner.query(`ALTER TABLE "OnCallDutyPolicyScheduleLayer" ALTER COLUMN "rotation" SET DEFAULT '{"_type": "Recurring", "value": {"intervalType": "Day", "intervalCount": {"_type": "PositiveNumber", "value": 1}}}'`);
286
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceDiscoveryScan" ALTER COLUMN "snmpVersion" SET DEFAULT '2c'`);
287
+ await queryRunner.query(`ALTER TABLE "NetworkDevice" DROP COLUMN "snmpV3PrivKey"`);
288
+ await queryRunner.query(`ALTER TABLE "NetworkDevice" ADD "snmpV3PrivKey" text`);
289
+ await queryRunner.query(`ALTER TABLE "NetworkDevice" DROP COLUMN "snmpV3AuthKey"`);
290
+ await queryRunner.query(`ALTER TABLE "NetworkDevice" ADD "snmpV3AuthKey" text`);
291
+ await queryRunner.query(`ALTER TABLE "NetworkDevice" ALTER COLUMN "snmpVersion" SET DEFAULT '2c'`);
292
+ await queryRunner.query(`ALTER TABLE "NetworkInterface" ADD "deletedByUserId" uuid`);
293
+ await queryRunner.query(`ALTER TABLE "NetworkInterface" ADD "createdByUserId" uuid`);
294
+ await queryRunner.query(`CREATE INDEX "IDX_NetworkDeviceLabelRuleLabelToAdd_labelId" ON "NetworkDeviceLabelRuleLabelToAdd" ("labelId") `);
295
+ await queryRunner.query(`CREATE INDEX "IDX_NetworkDeviceLabelRuleLabelToAdd_ruleId" ON "NetworkDeviceLabelRuleLabelToAdd" ("networkDeviceLabelRuleId") `);
296
+ await queryRunner.query(`CREATE INDEX "IDX_NetworkDeviceLabelRuleNetworkDeviceLabel_labelId" ON "NetworkDeviceLabelRuleNetworkDeviceLabel" ("labelId") `);
297
+ await queryRunner.query(`CREATE INDEX "IDX_NetworkDeviceLabelRuleNetworkDeviceLabel_ruleId" ON "NetworkDeviceLabelRuleNetworkDeviceLabel" ("networkDeviceLabelRuleId") `);
298
+ await queryRunner.query(`CREATE INDEX "IDX_NetworkDeviceOwnerRuleOwnerTeam_teamId" ON "NetworkDeviceOwnerRuleOwnerTeam" ("teamId") `);
299
+ await queryRunner.query(`CREATE INDEX "IDX_NetworkDeviceOwnerRuleOwnerTeam_ruleId" ON "NetworkDeviceOwnerRuleOwnerTeam" ("networkDeviceOwnerRuleId") `);
300
+ await queryRunner.query(`CREATE INDEX "IDX_NetworkDeviceOwnerRuleOwnerUser_userId" ON "NetworkDeviceOwnerRuleOwnerUser" ("userId") `);
301
+ await queryRunner.query(`CREATE INDEX "IDX_NetworkDeviceOwnerRuleOwnerUser_ruleId" ON "NetworkDeviceOwnerRuleOwnerUser" ("networkDeviceOwnerRuleId") `);
302
+ await queryRunner.query(`CREATE INDEX "IDX_NetworkDeviceOwnerRuleNetworkDeviceLabel_labelId" ON "NetworkDeviceOwnerRuleNetworkDeviceLabel" ("labelId") `);
303
+ await queryRunner.query(`CREATE INDEX "IDX_NetworkDeviceOwnerRuleNetworkDeviceLabel_ruleId" ON "NetworkDeviceOwnerRuleNetworkDeviceLabel" ("networkDeviceOwnerRuleId") `);
304
+ await queryRunner.query(`CREATE INDEX "IDX_network_device_label_labelId" ON "NetworkDeviceLabel" ("labelId") `);
305
+ await queryRunner.query(`CREATE INDEX "IDX_network_device_label_networkDeviceId" ON "NetworkDeviceLabel" ("networkDeviceId") `);
306
+ await queryRunner.query(`CREATE INDEX "IDX_AIRun_monitorId" ON "AIRun" ("monitorId") `);
307
+ await queryRunner.query(`CREATE INDEX "IDX_AIRun_triggeredByAlertId" ON "AIRun" ("triggeredByAlertId") `);
308
+ await queryRunner.query(`CREATE INDEX "IDX_AIRun_triggeredByIncidentId" ON "AIRun" ("triggeredByIncidentId") `);
309
+ await queryRunner.query(`CREATE UNIQUE INDEX "IDX_iot_device_credential_fleet_externalId" ON "IoTDeviceCredential" ("projectId", "iotFleetId", "externalId") `);
310
+ await queryRunner.query(`CREATE INDEX "IDX_iot_device_credential_secretKey" ON "IoTDeviceCredential" ("secretKey") `);
311
+ await queryRunner.query(`CREATE INDEX "IDX_iot_device_credential_externalId" ON "IoTDeviceCredential" ("externalId") `);
312
+ await queryRunner.query(`CREATE INDEX "IDX_iot_device_credential_iotFleetId" ON "IoTDeviceCredential" ("iotFleetId") `);
313
+ await queryRunner.query(`CREATE INDEX "IDX_iot_device_credential_projectId" ON "IoTDeviceCredential" ("projectId") `);
314
+ await queryRunner.query(`CREATE UNIQUE INDEX "IDX_network_interface_device_ifindex" ON "NetworkInterface" ("networkDeviceId", "interfaceIndex") WHERE ("deletedAt" IS NULL)`);
315
+ await queryRunner.query(`CREATE INDEX "IDX_network_interface_projectId_networkDeviceId" ON "NetworkInterface" ("projectId", "networkDeviceId") `);
316
+ await queryRunner.query(`CREATE INDEX "IDX_network_interface_networkDeviceId" ON "NetworkInterface" ("networkDeviceId") `);
317
+ await queryRunner.query(`CREATE INDEX "IDX_network_interface_projectId" ON "NetworkInterface" ("projectId") `);
318
+ await queryRunner.query(`CREATE INDEX "IDX_network_device_discovery_scan_probeId_status" ON "NetworkDeviceDiscoveryScan" ("probeId", "status") `);
319
+ await queryRunner.query(`CREATE INDEX "IDX_network_device_discovery_scan_projectId" ON "NetworkDeviceDiscoveryScan" ("projectId") `);
320
+ await queryRunner.query(`CREATE INDEX "IDX_network_device_label_rule_isEnabled" ON "NetworkDeviceLabelRule" ("isEnabled") `);
321
+ await queryRunner.query(`CREATE INDEX "IDX_network_device_label_rule_name" ON "NetworkDeviceLabelRule" ("name") `);
322
+ await queryRunner.query(`CREATE INDEX "IDX_network_device_label_rule_projectId" ON "NetworkDeviceLabelRule" ("projectId") `);
323
+ await queryRunner.query(`CREATE INDEX "IDX_network_device_owner_rule_isEnabled" ON "NetworkDeviceOwnerRule" ("isEnabled") `);
324
+ await queryRunner.query(`CREATE INDEX "IDX_network_device_owner_rule_name" ON "NetworkDeviceOwnerRule" ("name") `);
325
+ await queryRunner.query(`CREATE INDEX "IDX_network_device_owner_rule_projectId" ON "NetworkDeviceOwnerRule" ("projectId") `);
326
+ await queryRunner.query(`CREATE INDEX "IDX_network_device_owner_user_isOwnerNotified" ON "NetworkDeviceOwnerUser" ("isOwnerNotified") `);
327
+ await queryRunner.query(`CREATE INDEX "IDX_network_device_owner_user_networkDeviceId" ON "NetworkDeviceOwnerUser" ("networkDeviceId") `);
328
+ await queryRunner.query(`CREATE INDEX "IDX_network_device_owner_user_userId" ON "NetworkDeviceOwnerUser" ("userId") `);
329
+ await queryRunner.query(`CREATE INDEX "IDX_network_device_owner_user_projectId" ON "NetworkDeviceOwnerUser" ("projectId") `);
330
+ await queryRunner.query(`CREATE INDEX "IDX_network_device_owner_team_isOwnerNotified" ON "NetworkDeviceOwnerTeam" ("isOwnerNotified") `);
331
+ await queryRunner.query(`CREATE INDEX "IDX_network_device_owner_team_networkDeviceId" ON "NetworkDeviceOwnerTeam" ("networkDeviceId") `);
332
+ await queryRunner.query(`CREATE INDEX "IDX_network_device_owner_team_teamId" ON "NetworkDeviceOwnerTeam" ("teamId") `);
333
+ await queryRunner.query(`CREATE INDEX "IDX_network_device_owner_team_projectId" ON "NetworkDeviceOwnerTeam" ("projectId") `);
334
+ await queryRunner.query(`CREATE UNIQUE INDEX "IDX_network_device_slug" ON "NetworkDevice" ("slug") `);
335
+ await queryRunner.query(`CREATE INDEX "IDX_network_device_hostname" ON "NetworkDevice" ("hostname") `);
336
+ await queryRunner.query(`CREATE INDEX "IDX_network_device_projectId_isArchived" ON "NetworkDevice" ("projectId", "isArchived") `);
337
+ await queryRunner.query(`CREATE INDEX "IDX_network_device_projectId" ON "NetworkDevice" ("projectId") `);
338
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceLabelRuleLabelToAdd" ADD CONSTRAINT "FK_NetworkDeviceLabelRuleLabelToAdd_labelId" FOREIGN KEY ("labelId") REFERENCES "Label"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
339
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceLabelRuleLabelToAdd" ADD CONSTRAINT "FK_NetworkDeviceLabelRuleLabelToAdd_ruleId" FOREIGN KEY ("networkDeviceLabelRuleId") REFERENCES "NetworkDeviceLabelRule"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
340
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceLabelRuleNetworkDeviceLabel" ADD CONSTRAINT "FK_NetworkDeviceLabelRuleNetworkDeviceLabel_labelId" FOREIGN KEY ("labelId") REFERENCES "Label"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
341
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceLabelRuleNetworkDeviceLabel" ADD CONSTRAINT "FK_NetworkDeviceLabelRuleNetworkDeviceLabel_ruleId" FOREIGN KEY ("networkDeviceLabelRuleId") REFERENCES "NetworkDeviceLabelRule"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
342
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerRuleOwnerTeam" ADD CONSTRAINT "FK_NetworkDeviceOwnerRuleOwnerTeam_teamId" FOREIGN KEY ("teamId") REFERENCES "Team"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
343
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerRuleOwnerTeam" ADD CONSTRAINT "FK_NetworkDeviceOwnerRuleOwnerTeam_ruleId" FOREIGN KEY ("networkDeviceOwnerRuleId") REFERENCES "NetworkDeviceOwnerRule"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
344
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerRuleOwnerUser" ADD CONSTRAINT "FK_NetworkDeviceOwnerRuleOwnerUser_userId" FOREIGN KEY ("userId") REFERENCES "User"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
345
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerRuleOwnerUser" ADD CONSTRAINT "FK_NetworkDeviceOwnerRuleOwnerUser_ruleId" FOREIGN KEY ("networkDeviceOwnerRuleId") REFERENCES "NetworkDeviceOwnerRule"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
346
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerRuleNetworkDeviceLabel" ADD CONSTRAINT "FK_NetworkDeviceOwnerRuleNetworkDeviceLabel_labelId" FOREIGN KEY ("labelId") REFERENCES "Label"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
347
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerRuleNetworkDeviceLabel" ADD CONSTRAINT "FK_NetworkDeviceOwnerRuleNetworkDeviceLabel_ruleId" FOREIGN KEY ("networkDeviceOwnerRuleId") REFERENCES "NetworkDeviceOwnerRule"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
348
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceLabel" ADD CONSTRAINT "FK_network_device_label_labelId" FOREIGN KEY ("labelId") REFERENCES "Label"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
349
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceLabel" ADD CONSTRAINT "FK_network_device_label_networkDeviceId" FOREIGN KEY ("networkDeviceId") REFERENCES "NetworkDevice"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
350
+ await queryRunner.query(`ALTER TABLE "IoTDeviceCredential" ADD CONSTRAINT "FK_iot_device_credential_deletedByUserId" FOREIGN KEY ("deletedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
351
+ await queryRunner.query(`ALTER TABLE "IoTDeviceCredential" ADD CONSTRAINT "FK_iot_device_credential_createdByUserId" FOREIGN KEY ("createdByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
352
+ await queryRunner.query(`ALTER TABLE "IoTDeviceCredential" ADD CONSTRAINT "FK_iot_device_credential_iotFleetId" FOREIGN KEY ("iotFleetId") REFERENCES "IoTFleet"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
353
+ await queryRunner.query(`ALTER TABLE "IoTDeviceCredential" ADD CONSTRAINT "FK_iot_device_credential_projectId" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
354
+ await queryRunner.query(`ALTER TABLE "NetworkInterface" ADD CONSTRAINT "FK_network_interface_deletedByUserId" FOREIGN KEY ("deletedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
355
+ await queryRunner.query(`ALTER TABLE "NetworkInterface" ADD CONSTRAINT "FK_network_interface_createdByUserId" FOREIGN KEY ("createdByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
356
+ await queryRunner.query(`ALTER TABLE "NetworkInterface" ADD CONSTRAINT "FK_network_interface_networkDeviceId" FOREIGN KEY ("networkDeviceId") REFERENCES "NetworkDevice"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
357
+ await queryRunner.query(`ALTER TABLE "NetworkInterface" ADD CONSTRAINT "FK_network_interface_projectId" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
358
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceDiscoveryScan" ADD CONSTRAINT "FK_nd_discovery_scan_deletedByUserId" FOREIGN KEY ("deletedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
359
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceDiscoveryScan" ADD CONSTRAINT "FK_nd_discovery_scan_createdByUserId" FOREIGN KEY ("createdByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
360
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceDiscoveryScan" ADD CONSTRAINT "FK_nd_discovery_scan_probeId" FOREIGN KEY ("probeId") REFERENCES "Probe"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
361
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceDiscoveryScan" ADD CONSTRAINT "FK_nd_discovery_scan_projectId" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
362
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceLabelRule" ADD CONSTRAINT "FK_nd_label_rule_deletedByUserId" FOREIGN KEY ("deletedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
363
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceLabelRule" ADD CONSTRAINT "FK_nd_label_rule_createdByUserId" FOREIGN KEY ("createdByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
364
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceLabelRule" ADD CONSTRAINT "FK_nd_label_rule_projectId" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
365
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerRule" ADD CONSTRAINT "FK_nd_owner_rule_deletedByUserId" FOREIGN KEY ("deletedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
366
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerRule" ADD CONSTRAINT "FK_nd_owner_rule_createdByUserId" FOREIGN KEY ("createdByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
367
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerRule" ADD CONSTRAINT "FK_nd_owner_rule_projectId" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
368
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerUser" ADD CONSTRAINT "FK_nd_owner_user_deletedByUserId" FOREIGN KEY ("deletedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
369
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerUser" ADD CONSTRAINT "FK_nd_owner_user_createdByUserId" FOREIGN KEY ("createdByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
370
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerUser" ADD CONSTRAINT "FK_nd_owner_user_networkDeviceId" FOREIGN KEY ("networkDeviceId") REFERENCES "NetworkDevice"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
371
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerUser" ADD CONSTRAINT "FK_nd_owner_user_userId" FOREIGN KEY ("userId") REFERENCES "User"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
372
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerUser" ADD CONSTRAINT "FK_nd_owner_user_projectId" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
373
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerTeam" ADD CONSTRAINT "FK_nd_owner_team_deletedByUserId" FOREIGN KEY ("deletedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
374
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerTeam" ADD CONSTRAINT "FK_nd_owner_team_createdByUserId" FOREIGN KEY ("createdByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
375
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerTeam" ADD CONSTRAINT "FK_nd_owner_team_networkDeviceId" FOREIGN KEY ("networkDeviceId") REFERENCES "NetworkDevice"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
376
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerTeam" ADD CONSTRAINT "FK_nd_owner_team_teamId" FOREIGN KEY ("teamId") REFERENCES "Team"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
377
+ await queryRunner.query(`ALTER TABLE "NetworkDeviceOwnerTeam" ADD CONSTRAINT "FK_nd_owner_team_projectId" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
378
+ await queryRunner.query(`ALTER TABLE "NetworkDevice" ADD CONSTRAINT "FK_network_device_deletedByUserId" FOREIGN KEY ("deletedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
379
+ await queryRunner.query(`ALTER TABLE "NetworkDevice" ADD CONSTRAINT "FK_network_device_archivedByUserId" FOREIGN KEY ("archivedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
380
+ await queryRunner.query(`ALTER TABLE "NetworkDevice" ADD CONSTRAINT "FK_network_device_createdByUserId" FOREIGN KEY ("createdByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
381
+ await queryRunner.query(`ALTER TABLE "NetworkDevice" ADD CONSTRAINT "FK_network_device_probeId" FOREIGN KEY ("probeId") REFERENCES "Probe"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
382
+ await queryRunner.query(`ALTER TABLE "NetworkDevice" ADD CONSTRAINT "FK_network_device_projectId" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
383
+ await queryRunner.query(`ALTER TABLE "Project" ADD CONSTRAINT "FK_Project_alertInvestigationMinimumSeverityId" FOREIGN KEY ("alertInvestigationMinimumSeverityId") REFERENCES "AlertSeverity"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
384
+ }
385
+
386
+ }
@@ -433,6 +433,7 @@ import { AddTelemetryEntityRelationshipMetrics1783762505482 } from "./1783762505
433
433
  import { AddIoTDeviceCredentialTable1783780000000 } from "./1783780000000-AddIoTDeviceCredentialTable";
434
434
  import { AddSnmpV3AuthColumnsToNetworkDevice1783790000000 } from "./1783790000000-AddSnmpV3AuthColumnsToNetworkDevice";
435
435
  import { AddAdditionalParamsToLlmProvider1783650000000 } from "./1783650000000-AddAdditionalParamsToLlmProvider";
436
+ import { MigrationName1783937343400 } from "./1783937343400-MigrationName";
436
437
 
437
438
  export default [
438
439
  InitialMigration,
@@ -869,5 +870,6 @@ export default [
869
870
  AddTelemetryEntityRelationshipMetrics1783762505482,
870
871
  AddIoTDeviceCredentialTable1783780000000,
871
872
  AddSnmpV3AuthColumnsToNetworkDevice1783790000000,
872
- AddAdditionalParamsToLlmProvider1783650000000
873
+ AddAdditionalParamsToLlmProvider1783650000000,
874
+ MigrationName1783937343400
873
875
  ];
@@ -64,7 +64,10 @@ import Text from "../../Types/Text";
64
64
  import Typeof from "../../Types/Typeof";
65
65
  import API from "../../Utils/API";
66
66
  import { Stream } from "node:stream";
67
- import AggregateBy from "../Types/AnalyticsDatabase/AggregateBy";
67
+ import AggregateBy, {
68
+ AggregateUtil,
69
+ } from "../Types/AnalyticsDatabase/AggregateBy";
70
+ import AggregationInterval from "../../Types/BaseDatabase/AggregationInterval";
68
71
  import AggregatedResult from "../../Types/BaseDatabase/AggregatedResult";
69
72
  import AggregationType from "../../Types/BaseDatabase/AggregationType";
70
73
  import Sort from "../Types/AnalyticsDatabase/Sort";
@@ -744,6 +747,17 @@ export default class AnalyticsDatabaseService<
744
747
  );
745
748
  }
746
749
 
750
+ if (
751
+ aggregateBy.aggregationInterval !== undefined &&
752
+ !Object.values(AggregationInterval).includes(
753
+ aggregateBy.aggregationInterval,
754
+ )
755
+ ) {
756
+ throw new BadDataException(
757
+ `Invalid aggregationInterval: ${aggregateBy.aggregationInterval}. Allowed values: ${Object.values(AggregationInterval).join(", ")}`,
758
+ );
759
+ }
760
+
747
761
  if (!aggregateBy.aggregationTimestampColumnName) {
748
762
  throw new BadDataException(
749
763
  "aggregationTimestampColumnName is required",
@@ -1224,18 +1238,56 @@ export default class AnalyticsDatabaseService<
1224
1238
  .append(whereStatement)
1225
1239
  .append(this.getRetentionReadFilter());
1226
1240
 
1227
- statement
1228
- .append(SQL` GROUP BY `)
1229
- .append(`${aggregateBy.aggregationTimestampColumnName.toString()}`);
1241
+ /*
1242
+ * The time bucket is a grouping key only when we ARE bucketing by
1243
+ * time. For a `Total` (whole-window) aggregation the timestamp is
1244
+ * emitted as `min(...)` — an aggregate, not a group key — so it must
1245
+ * be left out of GROUP BY. When there is no group-by column either,
1246
+ * the GROUP BY clause is omitted entirely (a single global row).
1247
+ */
1248
+ const resolvedInterval: AggregationInterval =
1249
+ AggregateUtil.getAggregationInterval({
1250
+ startDate: aggregateBy.startTimestamp!,
1251
+ endDate: aggregateBy.endTimestamp!,
1252
+ aggregationInterval: aggregateBy.aggregationInterval,
1253
+ });
1254
+ const bucketByTime: boolean =
1255
+ !AggregateUtil.isTotalAggregation(resolvedInterval);
1256
+ const hasGroupBy: boolean = Boolean(
1257
+ aggregateBy.groupBy && Object.keys(aggregateBy.groupBy).length > 0,
1258
+ );
1230
1259
 
1231
- if (aggregateBy.groupBy && Object.keys(aggregateBy.groupBy).length > 0) {
1260
+ if (bucketByTime) {
1261
+ statement
1262
+ .append(SQL` GROUP BY `)
1263
+ .append(`${aggregateBy.aggregationTimestampColumnName.toString()}`);
1264
+ if (hasGroupBy) {
1265
+ statement
1266
+ .append(SQL` , `)
1267
+ .append(
1268
+ this.statementGenerator.toGroupByStatement(aggregateBy.groupBy!),
1269
+ );
1270
+ }
1271
+ } else if (hasGroupBy) {
1232
1272
  statement
1233
- .append(SQL` , `)
1273
+ .append(SQL` GROUP BY `)
1234
1274
  .append(
1235
- this.statementGenerator.toGroupByStatement(aggregateBy.groupBy),
1275
+ this.statementGenerator.toGroupByStatement(aggregateBy.groupBy!),
1236
1276
  );
1237
1277
  }
1238
1278
 
1279
+ /*
1280
+ * A group-less Total aggregation (`SELECT agg(...), min(ts) ...` with no
1281
+ * GROUP BY) returns exactly one row even over an empty window —
1282
+ * ClickHouse fills the aggregates with type defaults, so min(ts)
1283
+ * surfaces as a 1970 epoch point. Suppress that phantom row. This is a
1284
+ * no-op for every bucketed/grouped query (they only ever emit rows for
1285
+ * groups that actually have data).
1286
+ */
1287
+ if (!bucketByTime && !hasGroupBy) {
1288
+ statement.append(SQL` HAVING count() > 0`);
1289
+ }
1290
+
1239
1291
  statement.append(SQL` ORDER BY `).append(sortStatement);
1240
1292
 
1241
1293
  statement.append(