@oneuptime/common 13.0.6 → 13.0.7
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.
- package/Models/DatabaseModels/AIAgentOwnerTeam.ts +6 -0
- package/Models/DatabaseModels/AIAgentOwnerUser.ts +6 -0
- package/Models/DatabaseModels/Alert.ts +12 -0
- package/Models/DatabaseModels/AlertEpisodeOwnerTeam.ts +6 -1
- package/Models/DatabaseModels/AlertEpisodeOwnerUser.ts +6 -1
- package/Models/DatabaseModels/AlertOwnerTeam.ts +6 -1
- package/Models/DatabaseModels/AlertOwnerUser.ts +6 -1
- package/Models/DatabaseModels/CephClusterOwnerTeam.ts +6 -0
- package/Models/DatabaseModels/CephClusterOwnerUser.ts +6 -0
- package/Models/DatabaseModels/CloudResourceOwnerTeam.ts +6 -0
- package/Models/DatabaseModels/CloudResourceOwnerUser.ts +6 -0
- package/Models/DatabaseModels/DashboardOwnerTeam.ts +6 -1
- package/Models/DatabaseModels/DashboardOwnerUser.ts +6 -1
- package/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.ts +8 -0
- package/Models/DatabaseModels/DockerHostOwnerTeam.ts +6 -0
- package/Models/DatabaseModels/DockerHostOwnerUser.ts +6 -0
- package/Models/DatabaseModels/DockerSwarmClusterOwnerTeam.ts +6 -0
- package/Models/DatabaseModels/DockerSwarmClusterOwnerUser.ts +6 -0
- package/Models/DatabaseModels/HostOwnerTeam.ts +6 -0
- package/Models/DatabaseModels/HostOwnerUser.ts +6 -0
- package/Models/DatabaseModels/Incident.ts +12 -0
- package/Models/DatabaseModels/IncidentEpisodeOwnerTeam.ts +6 -1
- package/Models/DatabaseModels/IncidentEpisodeOwnerUser.ts +6 -1
- package/Models/DatabaseModels/IncidentOwnerTeam.ts +6 -1
- package/Models/DatabaseModels/IncidentOwnerUser.ts +6 -1
- package/Models/DatabaseModels/IncidentTemplateOwnerTeam.ts +6 -0
- package/Models/DatabaseModels/IncidentTemplateOwnerUser.ts +6 -0
- package/Models/DatabaseModels/IncomingCallPolicyOwnerTeam.ts +6 -1
- package/Models/DatabaseModels/IncomingCallPolicyOwnerUser.ts +6 -1
- package/Models/DatabaseModels/IoTFleetOwnerTeam.ts +6 -0
- package/Models/DatabaseModels/IoTFleetOwnerUser.ts +6 -0
- package/Models/DatabaseModels/KubernetesClusterOwnerTeam.ts +6 -0
- package/Models/DatabaseModels/KubernetesClusterOwnerUser.ts +6 -0
- package/Models/DatabaseModels/Monitor.ts +2 -3
- package/Models/DatabaseModels/MonitorGroupOwnerTeam.ts +6 -0
- package/Models/DatabaseModels/MonitorGroupOwnerUser.ts +6 -0
- package/Models/DatabaseModels/MonitorOwnerTeam.ts +6 -1
- package/Models/DatabaseModels/MonitorOwnerUser.ts +6 -1
- package/Models/DatabaseModels/MonitorTemplate.ts +2 -3
- package/Models/DatabaseModels/NetworkDeviceOwnerTeam.ts +6 -0
- package/Models/DatabaseModels/NetworkDeviceOwnerUser.ts +6 -0
- package/Models/DatabaseModels/OnCallDutyPolicyOwnerTeam.ts +6 -1
- package/Models/DatabaseModels/OnCallDutyPolicyOwnerUser.ts +6 -1
- package/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerTeam.ts +6 -1
- package/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerUser.ts +6 -1
- package/Models/DatabaseModels/PodmanHostOwnerTeam.ts +6 -0
- package/Models/DatabaseModels/PodmanHostOwnerUser.ts +6 -0
- package/Models/DatabaseModels/ProbeOwnerTeam.ts +6 -0
- package/Models/DatabaseModels/ProbeOwnerUser.ts +6 -0
- package/Models/DatabaseModels/ProxmoxClusterOwnerTeam.ts +6 -0
- package/Models/DatabaseModels/ProxmoxClusterOwnerUser.ts +6 -0
- package/Models/DatabaseModels/RumApplicationOwnerTeam.ts +6 -0
- package/Models/DatabaseModels/RumApplicationOwnerUser.ts +6 -0
- package/Models/DatabaseModels/RunbookOwnerTeam.ts +6 -1
- package/Models/DatabaseModels/RunbookOwnerUser.ts +6 -1
- package/Models/DatabaseModels/RunnerOwnerTeam.ts +6 -1
- package/Models/DatabaseModels/RunnerOwnerUser.ts +6 -1
- package/Models/DatabaseModels/ScheduledMaintenanceOwnerTeam.ts +6 -1
- package/Models/DatabaseModels/ScheduledMaintenanceOwnerUser.ts +6 -1
- package/Models/DatabaseModels/ScheduledMaintenanceTemplateOwnerTeam.ts +8 -0
- package/Models/DatabaseModels/ScheduledMaintenanceTemplateOwnerUser.ts +8 -0
- package/Models/DatabaseModels/ServerlessFunctionOwnerTeam.ts +6 -0
- package/Models/DatabaseModels/ServerlessFunctionOwnerUser.ts +6 -0
- package/Models/DatabaseModels/ServiceLevelObjectiveOwnerTeam.ts +6 -1
- package/Models/DatabaseModels/ServiceLevelObjectiveOwnerUser.ts +6 -1
- package/Models/DatabaseModels/ServiceOwnerTeam.ts +6 -0
- package/Models/DatabaseModels/ServiceOwnerUser.ts +6 -0
- package/Models/DatabaseModels/StatusPageOwnerTeam.ts +6 -1
- package/Models/DatabaseModels/StatusPageOwnerUser.ts +6 -1
- package/Models/DatabaseModels/VMwareVCenterOwnerTeam.ts +6 -0
- package/Models/DatabaseModels/VMwareVCenterOwnerUser.ts +6 -0
- package/Models/DatabaseModels/WorkflowOwnerTeam.ts +6 -1
- package/Models/DatabaseModels/WorkflowOwnerUser.ts +6 -1
- package/Scripts/benchmark-fanin-capacity.js +2 -2
- package/Server/API/AIAgentDataAPI.ts +1 -1
- package/Server/API/AIChatAPI.ts +6 -4
- package/Server/API/AIInvestigationAPI.ts +7 -0
- package/Server/API/StatusPageAPI.ts +13 -0
- package/Server/Infrastructure/Postgres/LocalMigrationGenerationDataSource.ts +1 -1
- package/Server/Infrastructure/Postgres/SchemaMigrations/1793500000000-MakeOwnerRowsUnique.ts +1057 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1793700000000-AddAIInvestigationDecision.ts +25 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1793800000000-RemoveMonitorDescriptionLengthLimit.ts +31 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +6 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Readme.md +6 -4
- package/Server/Middleware/IdentityRateLimit.ts +34 -1
- package/Server/Middleware/PublicDashboardRateLimit.ts +169 -39
- package/Server/Services/AlertEpisodeService.ts +13 -34
- package/Server/Services/AlertGroupingEngineService.ts +7 -4
- package/Server/Services/AlertService.ts +13 -32
- package/Server/Services/CephClusterOwnerRuleEngineService.ts +18 -10
- package/Server/Services/CloudResourceOwnerRuleEngineService.ts +18 -10
- package/Server/Services/DashboardOwnerRuleEngineService.ts +18 -10
- package/Server/Services/DatabaseService.ts +101 -1
- package/Server/Services/DockerHostOwnerRuleEngineService.ts +18 -10
- package/Server/Services/DockerSwarmClusterOwnerRuleEngineService.ts +18 -10
- package/Server/Services/HostOwnerRuleEngineService.ts +18 -10
- package/Server/Services/IncidentEpisodeOwnerRuleEngineService.ts +6 -4
- package/Server/Services/IncidentEpisodeService.ts +15 -75
- package/Server/Services/IncidentGroupingEngineService.ts +7 -4
- package/Server/Services/IncidentService.ts +13 -32
- package/Server/Services/IncidentTemplateService.ts +13 -36
- package/Server/Services/IncomingCallPolicyOwnerRuleEngineService.ts +18 -10
- package/Server/Services/IoTFleetOwnerRuleEngineService.ts +18 -10
- package/Server/Services/KubernetesClusterOwnerRuleEngineService.ts +18 -10
- package/Server/Services/MonitorService.ts +13 -32
- package/Server/Services/NetworkDeviceOwnerRuleEngineService.ts +18 -10
- package/Server/Services/OnCallDutyPolicyOwnerRuleEngineService.ts +18 -10
- package/Server/Services/OnCallDutyPolicyScheduleOwnerRuleEngineService.ts +18 -10
- package/Server/Services/PodmanHostOwnerRuleEngineService.ts +18 -10
- package/Server/Services/ProxmoxClusterOwnerRuleEngineService.ts +18 -10
- package/Server/Services/RumApplicationOwnerRuleEngineService.ts +18 -10
- package/Server/Services/RunbookOwnerRuleEngineService.ts +18 -10
- package/Server/Services/ScheduledMaintenanceService.ts +13 -34
- package/Server/Services/ScheduledMaintenanceTemplateService.ts +12 -34
- package/Server/Services/ServerlessFunctionOwnerRuleEngineService.ts +18 -10
- package/Server/Services/ServiceOwnerRuleEngineService.ts +18 -10
- package/Server/Services/StatusPagePrivateUserService.ts +38 -29
- package/Server/Services/StatusPagePrivateUserSessionService.ts +49 -1
- package/Server/Services/StatusPageService.ts +59 -36
- package/Server/Services/UserSessionService.ts +6 -0
- package/Server/Services/VMwareVCenterOwnerRuleEngineService.ts +18 -10
- package/Server/Services/WorkflowOwnerRuleEngineService.ts +18 -10
- package/Server/Static/Brand/README.md +7 -7
- package/Server/Static/Vendor/README.md +7 -7
- package/Server/Types/Database/Permissions/OwnedScopePermission.ts +18 -9
- package/Server/Types/Database/Permissions/OwnerTableRegistry.ts +82 -0
- package/Server/Utils/AI/Chat/ChatAgentRunner.ts +21 -8
- package/Server/Utils/AI/Chat/ObservabilityChatPrompt.ts +41 -4
- package/Server/Utils/AI/CodeFix/CodeAgentWorkspaceGuard.ts +1 -1
- package/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.ts +1 -1
- package/Server/Utils/AI/SRE/AIInvestigationEngine.ts +13 -5
- package/Server/Utils/AI/SRE/AlertInvestigationRunner.ts +53 -13
- package/Server/Utils/AI/SRE/IncidentInvestigationRunner.ts +51 -14
- package/Server/Utils/AI/SRE/InvestigationEligibility.ts +292 -0
- package/Server/Utils/AI/SRE/InvestigationQueue.ts +25 -0
- package/Server/Utils/AI/Toolbox/Index.ts +43 -13
- package/Server/Utils/AI/Toolbox/ResourceTools.ts +952 -0
- package/Server/Utils/AI/Toolbox/RumTools.ts +424 -0
- package/Server/Utils/AI/Toolbox/ToolTypes.ts +10 -0
- package/Server/Utils/AI/Toolbox/TraceTools.ts +2 -1
- package/Server/Utils/Database/PostgresErrorTranslator.ts +14 -0
- package/Server/Utils/Monitor/Criteria/CompareCriteria.ts +137 -126
- package/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.ts +4 -1
- package/Server/Utils/Rules/OwnerRuleAssignment.ts +157 -6
- package/Server/Utils/Telemetry/TelemetryEntity.ts +205 -6
- package/SslCertificates/GlobalSign.crt +26 -0
- package/SslCertificates/Readme.md +3 -0
- package/Tests/App/AdminDashboard/EnterpriseLicenseInstanceActivity.test.tsx +451 -0
- package/Tests/App/Dashboard/AIInsightsChatPanel.test.tsx +881 -0
- package/Tests/App/Dashboard/AIInsightsPageContext.test.ts +458 -0
- package/Tests/App/Dashboard/AIInsightsResourceCitations.test.ts +124 -0
- package/Tests/App/Dashboard/AIInsightsResourcePageContext.test.ts +798 -0
- package/Tests/App/Dashboard/AskAiSuggestedPrompts.test.ts +7 -0
- package/Tests/App/Dashboard/DashboardChartWidgetZoom.test.tsx +104 -0
- package/Tests/App/Dashboard/DashboardCommandPalette.test.tsx +156 -64
- package/Tests/App/Dashboard/DiscoveryScanStatusMessage.test.tsx +970 -0
- package/Tests/App/Dashboard/DiscoveryScanWizardValidation.test.tsx +406 -12
- package/Tests/App/Dashboard/EmbeddedMetricEventScope.test.tsx +358 -0
- package/Tests/App/Dashboard/ErrorPatternEventScope.test.tsx +148 -0
- package/Tests/App/Dashboard/EventOverlayAdditionalResourceScope.test.ts +255 -0
- package/Tests/App/Dashboard/EventOverlayScope.test.ts +845 -0
- package/Tests/App/Dashboard/EventOverlayScopeHook.test.tsx +903 -0
- package/Tests/App/Dashboard/ExternalStatusPageCriteriaFilter.test.ts +3 -3
- package/Tests/App/Dashboard/InvestigationDrawer.test.tsx +21 -0
- package/Tests/App/Dashboard/InvestigationNotStarted.test.tsx +761 -0
- package/Tests/App/Dashboard/InvestigationPanel.test.tsx +7 -4
- package/Tests/App/Dashboard/InvestigationPanelStatus.test.tsx +15 -7
- package/Tests/App/Dashboard/MetricsViewerEventScopeNavigation.test.tsx +264 -0
- package/Tests/App/Dashboard/MonitorSummaryTestMonitorButton.test.tsx +342 -0
- package/Tests/App/Dashboard/MonitorTestForm.test.tsx +612 -0
- package/Tests/App/Dashboard/NavigationSearchKeywords.test.tsx +301 -0
- package/Tests/App/Dashboard/ServiceMapGraph.test.tsx +74 -2
- package/Tests/App/Dashboard/TextClampLayoutHarness.ts +224 -0
- package/Tests/Models/InventoryItemNaming.test.ts +54 -0
- package/Tests/Server/API/AIChatRouteAuthorization.test.ts +161 -0
- package/Tests/Server/API/AIInvestigationAPI.test.ts +14 -0
- package/Tests/Server/API/AIInvestigationAvailabilityAuthorization.test.ts +260 -0
- package/Tests/Server/API/EnterpriseLicenseReportUserCount.test.ts +133 -0
- package/Tests/Server/API/StatusPageMasterPasswordRateLimit.test.ts +482 -0
- package/Tests/Server/EnvironmentConfigOnCallCalendarFeed.test.ts +1 -1
- package/Tests/Server/Infrastructure/ClickhouseKeepAliveOptions.test.ts +1 -1
- package/Tests/Server/Infrastructure/ContainerBootConfiguration.test.ts +38 -16
- package/Tests/Server/Infrastructure/E2EClickHouseFixtureAccess.test.ts +106 -31
- package/Tests/Server/Infrastructure/ExampleDockerfiles.test.ts +46 -12
- package/Tests/Server/Infrastructure/Postgres/MonitorDescriptionMigration.test.ts +422 -0
- package/Tests/Server/Infrastructure/TelemetryExporterDeploymentConfig.test.ts +1 -1
- package/Tests/Server/Infrastructure/ValkeyDeploymentConfig.test.ts +25 -4
- package/Tests/Server/Middleware/IdentityRateLimit.test.ts +72 -0
- package/Tests/Server/Middleware/PublicDashboardRateLimit.test.ts +12 -12
- package/Tests/Server/Middleware/PublicDashboardRateLimitStatusPage.test.ts +800 -0
- package/Tests/Server/Services/AIInvestigationDecisionPostgres.test.ts +346 -0
- package/Tests/Server/Services/AddOwnersIdempotency.test.ts +471 -0
- package/Tests/Server/Services/DatabaseServiceAutoOwnerOnCreate.test.ts +250 -0
- package/Tests/Server/Services/DatabaseServiceUniqueColumnsTogether.test.ts +622 -0
- package/Tests/Server/Services/MonitorDescriptionValidation.test.ts +211 -0
- package/Tests/Server/Services/MonitorTemplateDescriptionPropagation.test.ts +269 -0
- package/Tests/Server/Services/OwnerRowUniqueness.test.ts +504 -0
- package/Tests/Server/Services/RuleRun/OwnerRuleEnginesGroupARun.test.ts +43 -0
- package/Tests/Server/Services/SessionRetention.test.ts +334 -0
- package/Tests/Server/Services/StatusPagePrivateUserInvitationPolicy.test.ts +172 -0
- package/Tests/Server/Services/StatusPagePrivateUserReadAccess.test.ts +178 -0
- package/Tests/Server/Services/StatusPagePrivateUserReadAccessPostgres.test.ts +311 -0
- package/Tests/Server/Services/StatusPagePrivateUserSessionService.test.ts +216 -1
- package/Tests/Server/Services/TeamComplianceServiceBehaviour.test.ts +1 -1
- package/Tests/Server/Services/UserOnCallLogNoNotificationRules.test.ts +1 -1
- package/Tests/Server/Types/Database/EventOverlayScopePostgres.test.ts +626 -0
- package/Tests/Server/Types/Database/Permissions/InfrastructureOwnershipScope.test.ts +668 -0
- package/Tests/Server/Types/Database/Permissions/SelectRejectionMessageContract.test.ts +1 -0
- package/Tests/Server/Types/Database/Permissions/UserNotificationRuleScoping.test.ts +1 -1
- package/Tests/Server/Utils/AI/AIIncidentGating.test.ts +16 -9
- package/Tests/Server/Utils/AI/ChatAgentRunner.test.ts +137 -1
- package/Tests/Server/Utils/AI/InvestigationEligibility.test.ts +697 -0
- package/Tests/Server/Utils/AI/ObservabilityChatPrompt.test.ts +105 -0
- package/Tests/Server/Utils/AI/RemediationHandoff.test.ts +16 -5
- package/Tests/Server/Utils/AI/ResourceTools.test.ts +1304 -0
- package/Tests/Server/Utils/AI/RumTools.test.ts +769 -0
- package/Tests/Server/Utils/Database/PostgresErrorTranslator.test.ts +63 -0
- package/Tests/Server/Utils/Monitor/Criteria/APIRequestCriteriaEvaluateOverTime.test.ts +11 -9
- package/Tests/Server/Utils/Monitor/Criteria/CompareCriteria.test.ts +62 -45
- package/Tests/Server/Utils/Monitor/Criteria/CompareCriteriaAggregation.test.ts +25 -24
- package/Tests/Server/Utils/Monitor/Criteria/CompareCriteriaHumanMessages.test.ts +513 -0
- package/Tests/Server/Utils/Monitor/Criteria/CustomCodeMonitorCriteria.test.ts +2 -2
- package/Tests/Server/Utils/Monitor/Criteria/DnsMonitorCriteria.test.ts +1 -1
- package/Tests/Server/Utils/Monitor/Criteria/ExternalStatusPageMonitorCriteria.test.ts +9 -9
- package/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.test.ts +7 -5
- package/Tests/Server/Utils/Monitor/Criteria/ProfileMonitorCriteria.test.ts +2 -2
- package/Tests/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.test.ts +4 -3
- package/Tests/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.test.ts +2 -2
- package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluatorMetricUnits.test.ts +3 -2
- package/Tests/Server/Utils/Monitor/MonitorCriteriaHumanMessages.test.ts +529 -0
- package/Tests/Server/Utils/Rules/OwnerRuleAssignment.test.ts +412 -4
- package/Tests/Server/Utils/SecurityEvent/Connectors/GoogleSecOps/GoogleSecOpsPollingClickhouseIntegration.test.ts +1 -1
- package/Tests/Server/Utils/TailwindBuildCopy.test.ts +14 -2
- package/Tests/Server/Utils/Telemetry/HostAssetAttributesFromOtlp.test.ts +235 -0
- package/Tests/Server/Utils/Telemetry/TelemetryEntity.test.ts +385 -2
- package/Tests/Server/Utils/VendorAssets.test.ts +17 -3
- package/Tests/Types/AI/AIChatPageContext.test.ts +0 -0
- package/Tests/Types/AI/AIResourceContext.test.ts +312 -0
- package/Tests/Types/Database/UniqueColumnsTogether.test.ts +100 -0
- package/Tests/Types/Monitor/MetricAndProfileDefaultCriteria.test.ts +4 -4
- package/Tests/Types/Monitor/MonitorStepRetryPersistence.test.ts +125 -0
- package/Tests/Types/WebsiteRequest.test.ts +44 -0
- package/Tests/UI/Components/Forms/MonitorDescriptionForm.test.tsx +410 -0
- package/Tests/UI/Components/ModelTable/BaseModelTableReadPermissions.test.tsx +439 -0
- package/Tests/UI/Components/NavBarMenuSearch.test.tsx +372 -0
- package/Tests/UI/EsbuildConfig.test.ts +1 -1
- package/Tests/UI/Monitor/MonitorStepRetrySettings.test.tsx +616 -0
- package/Tests/UI/ReactRouterSingletonBuild.test.ts +4 -2
- package/Tests/UI/Rum/ReplayEngine.test.ts +179 -0
- package/Tests/UI/Rum/ReplayHeader.test.tsx +23 -0
- package/Tests/UI/Rum/ReplayScrubber.test.tsx +88 -0
- package/Tests/UI/Rum/ReplayStageOverlays.test.tsx +83 -0
- package/Tests/UI/Rum/ReplayTabSwitcher.test.tsx +33 -0
- package/Tests/Utils/API.test.ts +96 -0
- package/Tests/Utils/HTTPResponseBodyReader.test.ts +188 -1
- package/Tests/Utils/Metrics/MetricEventScopeUrl.test.ts +101 -0
- package/Tests/Utils/Monitor/MonitorTestAvailabilityUtil.test.ts +256 -0
- package/Tests/Utils/Telemetry/HostIpAddresses.test.ts +105 -0
- package/Types/AI/AIChatPageContext.ts +87 -2
- package/Types/AI/AIChatTypes.ts +4 -0
- package/Types/AI/AIResourceContext.ts +198 -0
- package/Types/AI/InvestigationNotStartedReason.ts +30 -0
- package/Types/Database/UniqueColumnsTogether.ts +55 -0
- package/Types/Metrics/MetricQueryConfigData.ts +8 -0
- package/Types/Rum/WebVitals.ts +71 -0
- package/Types/WebsiteRequest.ts +2 -0
- package/UI/Components/EditionLabel/EditionLabel.tsx +7 -5
- package/UI/Components/KeyboardShortcut/Screenshots/README.md +1 -1
- package/UI/Components/ModelTable/BaseModelTable.tsx +8 -0
- package/UI/Components/Navbar/NavBar.tsx +2 -0
- package/UI/Components/Navbar/NavBarMenuModal.tsx +6 -2
- package/UI/esbuild-config.js +4 -4
- package/Utils/API.ts +10 -1
- package/Utils/Dashboard/HtmlWidgetDocument.ts +1 -1
- package/Utils/HTTPResponseBodyReader.ts +64 -8
- package/Utils/Metrics/MetricExplorerUrl.ts +19 -0
- package/Utils/Monitor/MonitorTestAvailabilityUtil.ts +92 -0
- package/Utils/Telemetry/HostIpAddresses.ts +46 -2
- package/build/dist/Models/DatabaseModels/AIAgentOwnerTeam.js +4 -1
- package/build/dist/Models/DatabaseModels/AIAgentOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AIAgentOwnerUser.js +4 -1
- package/build/dist/Models/DatabaseModels/AIAgentOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Alert.js +12 -0
- package/build/dist/Models/DatabaseModels/Alert.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertEpisodeOwnerTeam.js +3 -1
- package/build/dist/Models/DatabaseModels/AlertEpisodeOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertEpisodeOwnerUser.js +3 -1
- package/build/dist/Models/DatabaseModels/AlertEpisodeOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertOwnerTeam.js +3 -1
- package/build/dist/Models/DatabaseModels/AlertOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertOwnerUser.js +3 -1
- package/build/dist/Models/DatabaseModels/AlertOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/CephClusterOwnerTeam.js +4 -1
- package/build/dist/Models/DatabaseModels/CephClusterOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/CephClusterOwnerUser.js +4 -1
- package/build/dist/Models/DatabaseModels/CephClusterOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/CloudResourceOwnerTeam.js +4 -1
- package/build/dist/Models/DatabaseModels/CloudResourceOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/CloudResourceOwnerUser.js +4 -1
- package/build/dist/Models/DatabaseModels/CloudResourceOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DashboardOwnerTeam.js +3 -1
- package/build/dist/Models/DatabaseModels/DashboardOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DashboardOwnerUser.js +3 -1
- package/build/dist/Models/DatabaseModels/DashboardOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.js +3 -0
- package/build/dist/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DockerHostOwnerTeam.js +4 -1
- package/build/dist/Models/DatabaseModels/DockerHostOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DockerHostOwnerUser.js +4 -1
- package/build/dist/Models/DatabaseModels/DockerHostOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerTeam.js +4 -1
- package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerUser.js +4 -1
- package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/HostOwnerTeam.js +4 -1
- package/build/dist/Models/DatabaseModels/HostOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/HostOwnerUser.js +4 -1
- package/build/dist/Models/DatabaseModels/HostOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Incident.js +12 -0
- package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentEpisodeOwnerTeam.js +3 -1
- package/build/dist/Models/DatabaseModels/IncidentEpisodeOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentEpisodeOwnerUser.js +3 -1
- package/build/dist/Models/DatabaseModels/IncidentEpisodeOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentOwnerTeam.js +3 -1
- package/build/dist/Models/DatabaseModels/IncidentOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentOwnerUser.js +3 -1
- package/build/dist/Models/DatabaseModels/IncidentOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentTemplateOwnerTeam.js +4 -1
- package/build/dist/Models/DatabaseModels/IncidentTemplateOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentTemplateOwnerUser.js +4 -1
- package/build/dist/Models/DatabaseModels/IncidentTemplateOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncomingCallPolicyOwnerTeam.js +3 -1
- package/build/dist/Models/DatabaseModels/IncomingCallPolicyOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncomingCallPolicyOwnerUser.js +3 -1
- package/build/dist/Models/DatabaseModels/IncomingCallPolicyOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IoTFleetOwnerTeam.js +4 -1
- package/build/dist/Models/DatabaseModels/IoTFleetOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IoTFleetOwnerUser.js +4 -1
- package/build/dist/Models/DatabaseModels/IoTFleetOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/KubernetesClusterOwnerTeam.js +4 -1
- package/build/dist/Models/DatabaseModels/KubernetesClusterOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/KubernetesClusterOwnerUser.js +4 -1
- package/build/dist/Models/DatabaseModels/KubernetesClusterOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Monitor.js +2 -3
- package/build/dist/Models/DatabaseModels/Monitor.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MonitorGroupOwnerTeam.js +4 -1
- package/build/dist/Models/DatabaseModels/MonitorGroupOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MonitorGroupOwnerUser.js +4 -1
- package/build/dist/Models/DatabaseModels/MonitorGroupOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MonitorOwnerTeam.js +3 -1
- package/build/dist/Models/DatabaseModels/MonitorOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MonitorOwnerUser.js +3 -1
- package/build/dist/Models/DatabaseModels/MonitorOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MonitorTemplate.js +2 -3
- package/build/dist/Models/DatabaseModels/MonitorTemplate.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerTeam.js +4 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerUser.js +4 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyOwnerTeam.js +3 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyOwnerUser.js +3 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerTeam.js +3 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerUser.js +3 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/PodmanHostOwnerTeam.js +4 -1
- package/build/dist/Models/DatabaseModels/PodmanHostOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/PodmanHostOwnerUser.js +4 -1
- package/build/dist/Models/DatabaseModels/PodmanHostOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ProbeOwnerTeam.js +4 -1
- package/build/dist/Models/DatabaseModels/ProbeOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ProbeOwnerUser.js +4 -1
- package/build/dist/Models/DatabaseModels/ProbeOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ProxmoxClusterOwnerTeam.js +4 -1
- package/build/dist/Models/DatabaseModels/ProxmoxClusterOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ProxmoxClusterOwnerUser.js +4 -1
- package/build/dist/Models/DatabaseModels/ProxmoxClusterOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/RumApplicationOwnerTeam.js +4 -1
- package/build/dist/Models/DatabaseModels/RumApplicationOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/RumApplicationOwnerUser.js +4 -1
- package/build/dist/Models/DatabaseModels/RumApplicationOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/RunbookOwnerTeam.js +3 -1
- package/build/dist/Models/DatabaseModels/RunbookOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/RunbookOwnerUser.js +3 -1
- package/build/dist/Models/DatabaseModels/RunbookOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/RunnerOwnerTeam.js +3 -1
- package/build/dist/Models/DatabaseModels/RunnerOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/RunnerOwnerUser.js +3 -1
- package/build/dist/Models/DatabaseModels/RunnerOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceOwnerTeam.js +3 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceOwnerUser.js +3 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplateOwnerTeam.js +6 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplateOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplateOwnerUser.js +6 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplateOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ServerlessFunctionOwnerTeam.js +4 -1
- package/build/dist/Models/DatabaseModels/ServerlessFunctionOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ServerlessFunctionOwnerUser.js +4 -1
- package/build/dist/Models/DatabaseModels/ServerlessFunctionOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveOwnerTeam.js +3 -1
- package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveOwnerUser.js +3 -1
- package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ServiceOwnerTeam.js +4 -1
- package/build/dist/Models/DatabaseModels/ServiceOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ServiceOwnerUser.js +4 -1
- package/build/dist/Models/DatabaseModels/ServiceOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageOwnerTeam.js +3 -1
- package/build/dist/Models/DatabaseModels/StatusPageOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageOwnerUser.js +3 -1
- package/build/dist/Models/DatabaseModels/StatusPageOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/VMwareVCenterOwnerTeam.js +4 -1
- package/build/dist/Models/DatabaseModels/VMwareVCenterOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/VMwareVCenterOwnerUser.js +4 -1
- package/build/dist/Models/DatabaseModels/VMwareVCenterOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/WorkflowOwnerTeam.js +3 -1
- package/build/dist/Models/DatabaseModels/WorkflowOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/WorkflowOwnerUser.js +3 -1
- package/build/dist/Models/DatabaseModels/WorkflowOwnerUser.js.map +1 -1
- package/build/dist/Server/API/AIAgentDataAPI.js +1 -1
- package/build/dist/Server/API/AIChatAPI.js +3 -1
- package/build/dist/Server/API/AIChatAPI.js.map +1 -1
- package/build/dist/Server/API/AIInvestigationAPI.js +3 -0
- package/build/dist/Server/API/AIInvestigationAPI.js.map +1 -1
- package/build/dist/Server/API/StatusPageAPI.js +9 -1
- package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/LocalMigrationGenerationDataSource.js +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1793500000000-MakeOwnerRowsUnique.js +602 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1793500000000-MakeOwnerRowsUnique.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1793700000000-AddAIInvestigationDecision.js +14 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1793700000000-AddAIInvestigationDecision.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1793800000000-RemoveMonitorDescriptionLengthLimit.js +20 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1793800000000-RemoveMonitorDescriptionLengthLimit.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +6 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Middleware/IdentityRateLimit.js +22 -1
- package/build/dist/Server/Middleware/IdentityRateLimit.js.map +1 -1
- package/build/dist/Server/Middleware/PublicDashboardRateLimit.js +117 -36
- package/build/dist/Server/Middleware/PublicDashboardRateLimit.js.map +1 -1
- package/build/dist/Server/Services/AlertEpisodeService.js +13 -31
- package/build/dist/Server/Services/AlertEpisodeService.js.map +1 -1
- package/build/dist/Server/Services/AlertGroupingEngineService.js +7 -4
- package/build/dist/Server/Services/AlertGroupingEngineService.js.map +1 -1
- package/build/dist/Server/Services/AlertService.js +13 -31
- package/build/dist/Server/Services/AlertService.js.map +1 -1
- package/build/dist/Server/Services/CephClusterOwnerRuleEngineService.js +12 -8
- package/build/dist/Server/Services/CephClusterOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/CloudResourceOwnerRuleEngineService.js +12 -8
- package/build/dist/Server/Services/CloudResourceOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/DashboardOwnerRuleEngineService.js +12 -8
- package/build/dist/Server/Services/DashboardOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/DatabaseService.js +71 -1
- package/build/dist/Server/Services/DatabaseService.js.map +1 -1
- package/build/dist/Server/Services/DockerHostOwnerRuleEngineService.js +12 -8
- package/build/dist/Server/Services/DockerHostOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js +12 -8
- package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/HostOwnerRuleEngineService.js +12 -8
- package/build/dist/Server/Services/HostOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentEpisodeOwnerRuleEngineService.js +6 -4
- package/build/dist/Server/Services/IncidentEpisodeOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentEpisodeService.js +15 -68
- package/build/dist/Server/Services/IncidentEpisodeService.js.map +1 -1
- package/build/dist/Server/Services/IncidentGroupingEngineService.js +7 -4
- package/build/dist/Server/Services/IncidentGroupingEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentService.js +13 -31
- package/build/dist/Server/Services/IncidentService.js.map +1 -1
- package/build/dist/Server/Services/IncidentTemplateService.js +13 -31
- package/build/dist/Server/Services/IncidentTemplateService.js.map +1 -1
- package/build/dist/Server/Services/IncomingCallPolicyOwnerRuleEngineService.js +12 -8
- package/build/dist/Server/Services/IncomingCallPolicyOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IoTFleetOwnerRuleEngineService.js +12 -8
- package/build/dist/Server/Services/IoTFleetOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/KubernetesClusterOwnerRuleEngineService.js +12 -8
- package/build/dist/Server/Services/KubernetesClusterOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/MonitorService.js +13 -31
- package/build/dist/Server/Services/MonitorService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceOwnerRuleEngineService.js +12 -8
- package/build/dist/Server/Services/NetworkDeviceOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyOwnerRuleEngineService.js +12 -8
- package/build/dist/Server/Services/OnCallDutyPolicyOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerRuleEngineService.js +12 -8
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js +12 -8
- package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ProxmoxClusterOwnerRuleEngineService.js +12 -8
- package/build/dist/Server/Services/ProxmoxClusterOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/RumApplicationOwnerRuleEngineService.js +12 -8
- package/build/dist/Server/Services/RumApplicationOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/RunbookOwnerRuleEngineService.js +12 -8
- package/build/dist/Server/Services/RunbookOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceService.js +13 -31
- package/build/dist/Server/Services/ScheduledMaintenanceService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceTemplateService.js +12 -29
- package/build/dist/Server/Services/ScheduledMaintenanceTemplateService.js.map +1 -1
- package/build/dist/Server/Services/ServerlessFunctionOwnerRuleEngineService.js +12 -8
- package/build/dist/Server/Services/ServerlessFunctionOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ServiceOwnerRuleEngineService.js +12 -8
- package/build/dist/Server/Services/ServiceOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/StatusPagePrivateUserService.js +33 -25
- package/build/dist/Server/Services/StatusPagePrivateUserService.js.map +1 -1
- package/build/dist/Server/Services/StatusPagePrivateUserSessionService.js +36 -1
- package/build/dist/Server/Services/StatusPagePrivateUserSessionService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageService.js +50 -35
- package/build/dist/Server/Services/StatusPageService.js.map +1 -1
- package/build/dist/Server/Services/UserSessionService.js +5 -0
- package/build/dist/Server/Services/UserSessionService.js.map +1 -1
- package/build/dist/Server/Services/VMwareVCenterOwnerRuleEngineService.js +12 -8
- package/build/dist/Server/Services/VMwareVCenterOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/WorkflowOwnerRuleEngineService.js +12 -8
- package/build/dist/Server/Services/WorkflowOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/OwnedScopePermission.js +15 -10
- package/build/dist/Server/Types/Database/Permissions/OwnedScopePermission.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js +82 -0
- package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js.map +1 -1
- package/build/dist/Server/Utils/AI/Chat/ChatAgentRunner.js +12 -3
- package/build/dist/Server/Utils/AI/Chat/ChatAgentRunner.js.map +1 -1
- package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js +32 -4
- package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js.map +1 -1
- package/build/dist/Server/Utils/AI/CodeFix/CodeAgentWorkspaceGuard.js +1 -1
- package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js +1 -1
- package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js +8 -5
- package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js +33 -13
- package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js +31 -10
- package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/InvestigationEligibility.js +205 -0
- package/build/dist/Server/Utils/AI/SRE/InvestigationEligibility.js.map +1 -0
- package/build/dist/Server/Utils/AI/SRE/InvestigationQueue.js +13 -0
- package/build/dist/Server/Utils/AI/SRE/InvestigationQueue.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/Index.js +30 -6
- package/build/dist/Server/Utils/AI/Toolbox/Index.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/ResourceTools.js +721 -0
- package/build/dist/Server/Utils/AI/Toolbox/ResourceTools.js.map +1 -0
- package/build/dist/Server/Utils/AI/Toolbox/RumTools.js +330 -0
- package/build/dist/Server/Utils/AI/Toolbox/RumTools.js.map +1 -0
- package/build/dist/Server/Utils/AI/Toolbox/ToolTypes.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/TraceTools.js +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/TraceTools.js.map +1 -1
- package/build/dist/Server/Utils/Database/PostgresErrorTranslator.js +11 -0
- package/build/dist/Server/Utils/Database/PostgresErrorTranslator.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/CompareCriteria.js +106 -101
- package/build/dist/Server/Utils/Monitor/Criteria/CompareCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js +4 -2
- package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Rules/OwnerRuleAssignment.js +94 -0
- package/build/dist/Server/Utils/Rules/OwnerRuleAssignment.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js +171 -6
- package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js.map +1 -1
- package/build/dist/Types/AI/AIChatPageContext.js +68 -2
- package/build/dist/Types/AI/AIChatPageContext.js.map +1 -1
- package/build/dist/Types/AI/AIChatTypes.js +4 -0
- package/build/dist/Types/AI/AIChatTypes.js.map +1 -1
- package/build/dist/Types/AI/AIResourceContext.js +162 -0
- package/build/dist/Types/AI/AIResourceContext.js.map +1 -0
- package/build/dist/Types/AI/InvestigationNotStartedReason.js +2 -0
- package/build/dist/Types/AI/InvestigationNotStartedReason.js.map +1 -0
- package/build/dist/Types/Database/UniqueColumnsTogether.js +19 -0
- package/build/dist/Types/Database/UniqueColumnsTogether.js.map +1 -0
- package/build/dist/Types/Metrics/MetricQueryConfigData.js.map +1 -1
- package/build/dist/Types/Rum/WebVitals.js +64 -0
- package/build/dist/Types/Rum/WebVitals.js.map +1 -0
- package/build/dist/Types/WebsiteRequest.js +2 -0
- package/build/dist/Types/WebsiteRequest.js.map +1 -1
- package/build/dist/UI/Components/EditionLabel/EditionLabel.js +7 -5
- package/build/dist/UI/Components/EditionLabel/EditionLabel.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js +7 -0
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
- package/build/dist/UI/Components/Navbar/NavBar.js.map +1 -1
- package/build/dist/UI/Components/Navbar/NavBarMenuModal.js +4 -2
- package/build/dist/UI/Components/Navbar/NavBarMenuModal.js.map +1 -1
- package/build/dist/Utils/API.js +8 -4
- package/build/dist/Utils/API.js.map +1 -1
- package/build/dist/Utils/HTTPResponseBodyReader.js +50 -6
- package/build/dist/Utils/HTTPResponseBodyReader.js.map +1 -1
- package/build/dist/Utils/Metrics/MetricExplorerUrl.js +14 -3
- package/build/dist/Utils/Metrics/MetricExplorerUrl.js.map +1 -1
- package/build/dist/Utils/Monitor/MonitorTestAvailabilityUtil.js +68 -0
- package/build/dist/Utils/Monitor/MonitorTestAvailabilityUtil.js.map +1 -0
- package/build/dist/Utils/Telemetry/HostIpAddresses.js +42 -3
- package/build/dist/Utils/Telemetry/HostIpAddresses.js.map +1 -1
- package/package.json +5 -5
- package/test-setup.sh +2 -2
|
@@ -0,0 +1,1057 @@
|
|
|
1
|
+
import { MigrationInterface, QueryRunner } from "typeorm";
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* Makes owner rows unique: one <Resource>OwnerTeam row per (resource, team,
|
|
5
|
+
* project) and one <Resource>OwnerUser row per (resource, user, project).
|
|
6
|
+
* https://github.com/OneUptime/oneuptime/issues/3394
|
|
7
|
+
*
|
|
8
|
+
* Only the dashboard used to prevent a second row for the same owner. The
|
|
9
|
+
* REST API, workflows, monitor criteria and the other internal paths inserted
|
|
10
|
+
* unconditionally, and every row fires its own feed item and owner
|
|
11
|
+
* notification - so a duplicate row was a duplicate notification.
|
|
12
|
+
*
|
|
13
|
+
* The composite index these tables already had (or, on the 38 that had none,
|
|
14
|
+
* a new one on the same columns) is now UNIQUE. The index statements below
|
|
15
|
+
* are what generate-postgres-migration produced (down() aside - see there),
|
|
16
|
+
* and the entities declare the indexes with `{ unique: true }`, so TypeORM
|
|
17
|
+
* keeps owning them.
|
|
18
|
+
*
|
|
19
|
+
* NOT PARTIAL
|
|
20
|
+
*
|
|
21
|
+
* Owner rows are hard-deleted (DatabaseService.deleteBy uses
|
|
22
|
+
* repository.delete), so no soft-deleted row can hold an owner slot hostage,
|
|
23
|
+
* and a plain unique index is expressible in @Index - unlike the partial
|
|
24
|
+
* indexes in migration 1786200000000, which had to be hand-owned.
|
|
25
|
+
*
|
|
26
|
+
* REPAIR BEFORE CREATE
|
|
27
|
+
*
|
|
28
|
+
* A unique index cannot be built over existing duplicates, so each table is
|
|
29
|
+
* repaired first. Within a group of duplicates exactly one row survives:
|
|
30
|
+
*
|
|
31
|
+
* 1. a live row over a soft-deleted one,
|
|
32
|
+
* 2. then a row whose owner was already notified over one still waiting to
|
|
33
|
+
* be - the owner-added job notifies every row still at
|
|
34
|
+
* isOwnerNotified = false, so keeping a pending duplicate of an owner
|
|
35
|
+
* who was already told would tell them again,
|
|
36
|
+
* 3. then the oldest (createdAt, then _id), so the result is deterministic.
|
|
37
|
+
*
|
|
38
|
+
* The others are DELETED. The index covers every row, so a soft delete would
|
|
39
|
+
* not take a row out of it. Nothing references an owner row by foreign key,
|
|
40
|
+
* so the delete cascades nowhere; the surviving row still records the same
|
|
41
|
+
* owner of the same resource. A table with no duplicates is left untouched.
|
|
42
|
+
*
|
|
43
|
+
* The groups are found with one GROUP BY per table before any row is ranked,
|
|
44
|
+
* so the tables that hold no duplicates - nearly all of them - are only
|
|
45
|
+
* scanned once.
|
|
46
|
+
*/
|
|
47
|
+
|
|
48
|
+
interface OwnerTable {
|
|
49
|
+
table: string;
|
|
50
|
+
// resource id, owner id, project id - the columns of the unique index.
|
|
51
|
+
columns: Array<string>;
|
|
52
|
+
hasIsOwnerNotified: boolean;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const OWNER_TABLES: Array<OwnerTable> = [
|
|
56
|
+
{
|
|
57
|
+
table: "AIAgentOwnerTeam",
|
|
58
|
+
columns: ["aiAgentId", "teamId", "projectId"],
|
|
59
|
+
hasIsOwnerNotified: true,
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
table: "AIAgentOwnerUser",
|
|
63
|
+
columns: ["aiAgentId", "userId", "projectId"],
|
|
64
|
+
hasIsOwnerNotified: true,
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
table: "AlertEpisodeOwnerTeam",
|
|
68
|
+
columns: ["alertEpisodeId", "teamId", "projectId"],
|
|
69
|
+
hasIsOwnerNotified: true,
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
table: "AlertEpisodeOwnerUser",
|
|
73
|
+
columns: ["alertEpisodeId", "userId", "projectId"],
|
|
74
|
+
hasIsOwnerNotified: true,
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
table: "AlertOwnerTeam",
|
|
78
|
+
columns: ["alertId", "teamId", "projectId"],
|
|
79
|
+
hasIsOwnerNotified: true,
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
table: "AlertOwnerUser",
|
|
83
|
+
columns: ["alertId", "userId", "projectId"],
|
|
84
|
+
hasIsOwnerNotified: true,
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
table: "CephClusterOwnerTeam",
|
|
88
|
+
columns: ["cephClusterId", "teamId", "projectId"],
|
|
89
|
+
hasIsOwnerNotified: true,
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
table: "CephClusterOwnerUser",
|
|
93
|
+
columns: ["cephClusterId", "userId", "projectId"],
|
|
94
|
+
hasIsOwnerNotified: true,
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
table: "CloudResourceOwnerTeam",
|
|
98
|
+
columns: ["cloudResourceId", "teamId", "projectId"],
|
|
99
|
+
hasIsOwnerNotified: true,
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
table: "CloudResourceOwnerUser",
|
|
103
|
+
columns: ["cloudResourceId", "userId", "projectId"],
|
|
104
|
+
hasIsOwnerNotified: true,
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
table: "DashboardOwnerTeam",
|
|
108
|
+
columns: ["dashboardId", "teamId", "projectId"],
|
|
109
|
+
hasIsOwnerNotified: true,
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
table: "DashboardOwnerUser",
|
|
113
|
+
columns: ["dashboardId", "userId", "projectId"],
|
|
114
|
+
hasIsOwnerNotified: true,
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
table: "DockerHostOwnerTeam",
|
|
118
|
+
columns: ["dockerHostId", "teamId", "projectId"],
|
|
119
|
+
hasIsOwnerNotified: true,
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
table: "DockerHostOwnerUser",
|
|
123
|
+
columns: ["dockerHostId", "userId", "projectId"],
|
|
124
|
+
hasIsOwnerNotified: true,
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
table: "DockerSwarmClusterOwnerTeam",
|
|
128
|
+
columns: ["dockerSwarmClusterId", "teamId", "projectId"],
|
|
129
|
+
hasIsOwnerNotified: true,
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
table: "DockerSwarmClusterOwnerUser",
|
|
133
|
+
columns: ["dockerSwarmClusterId", "userId", "projectId"],
|
|
134
|
+
hasIsOwnerNotified: true,
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
table: "HostOwnerTeam",
|
|
138
|
+
columns: ["hostId", "teamId", "projectId"],
|
|
139
|
+
hasIsOwnerNotified: true,
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
table: "HostOwnerUser",
|
|
143
|
+
columns: ["hostId", "userId", "projectId"],
|
|
144
|
+
hasIsOwnerNotified: true,
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
table: "IncidentEpisodeOwnerTeam",
|
|
148
|
+
columns: ["incidentEpisodeId", "teamId", "projectId"],
|
|
149
|
+
hasIsOwnerNotified: true,
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
table: "IncidentEpisodeOwnerUser",
|
|
153
|
+
columns: ["incidentEpisodeId", "userId", "projectId"],
|
|
154
|
+
hasIsOwnerNotified: true,
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
table: "IncidentOwnerTeam",
|
|
158
|
+
columns: ["incidentId", "teamId", "projectId"],
|
|
159
|
+
hasIsOwnerNotified: true,
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
table: "IncidentOwnerUser",
|
|
163
|
+
columns: ["incidentId", "userId", "projectId"],
|
|
164
|
+
hasIsOwnerNotified: true,
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
table: "IncidentTemplateOwnerTeam",
|
|
168
|
+
columns: ["incidentTemplateId", "teamId", "projectId"],
|
|
169
|
+
hasIsOwnerNotified: true,
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
table: "IncidentTemplateOwnerUser",
|
|
173
|
+
columns: ["incidentTemplateId", "userId", "projectId"],
|
|
174
|
+
hasIsOwnerNotified: true,
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
table: "IncomingCallPolicyOwnerTeam",
|
|
178
|
+
columns: ["incomingCallPolicyId", "teamId", "projectId"],
|
|
179
|
+
hasIsOwnerNotified: true,
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
table: "IncomingCallPolicyOwnerUser",
|
|
183
|
+
columns: ["incomingCallPolicyId", "userId", "projectId"],
|
|
184
|
+
hasIsOwnerNotified: true,
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
table: "IoTFleetOwnerTeam",
|
|
188
|
+
columns: ["iotFleetId", "teamId", "projectId"],
|
|
189
|
+
hasIsOwnerNotified: true,
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
table: "IoTFleetOwnerUser",
|
|
193
|
+
columns: ["iotFleetId", "userId", "projectId"],
|
|
194
|
+
hasIsOwnerNotified: true,
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
table: "KubernetesClusterOwnerTeam",
|
|
198
|
+
columns: ["kubernetesClusterId", "teamId", "projectId"],
|
|
199
|
+
hasIsOwnerNotified: true,
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
table: "KubernetesClusterOwnerUser",
|
|
203
|
+
columns: ["kubernetesClusterId", "userId", "projectId"],
|
|
204
|
+
hasIsOwnerNotified: true,
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
table: "MonitorGroupOwnerTeam",
|
|
208
|
+
columns: ["monitorGroupId", "teamId", "projectId"],
|
|
209
|
+
hasIsOwnerNotified: true,
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
table: "MonitorGroupOwnerUser",
|
|
213
|
+
columns: ["monitorGroupId", "userId", "projectId"],
|
|
214
|
+
hasIsOwnerNotified: true,
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
table: "MonitorOwnerTeam",
|
|
218
|
+
columns: ["monitorId", "teamId", "projectId"],
|
|
219
|
+
hasIsOwnerNotified: true,
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
table: "MonitorOwnerUser",
|
|
223
|
+
columns: ["monitorId", "userId", "projectId"],
|
|
224
|
+
hasIsOwnerNotified: true,
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
table: "NetworkDeviceOwnerTeam",
|
|
228
|
+
columns: ["networkDeviceId", "teamId", "projectId"],
|
|
229
|
+
hasIsOwnerNotified: true,
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
table: "NetworkDeviceOwnerUser",
|
|
233
|
+
columns: ["networkDeviceId", "userId", "projectId"],
|
|
234
|
+
hasIsOwnerNotified: true,
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
table: "OnCallDutyPolicyOwnerTeam",
|
|
238
|
+
columns: ["onCallDutyPolicyId", "teamId", "projectId"],
|
|
239
|
+
hasIsOwnerNotified: true,
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
table: "OnCallDutyPolicyOwnerUser",
|
|
243
|
+
columns: ["onCallDutyPolicyId", "userId", "projectId"],
|
|
244
|
+
hasIsOwnerNotified: true,
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
table: "OnCallDutyPolicyScheduleOwnerTeam",
|
|
248
|
+
columns: ["onCallDutyPolicyScheduleId", "teamId", "projectId"],
|
|
249
|
+
hasIsOwnerNotified: true,
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
table: "OnCallDutyPolicyScheduleOwnerUser",
|
|
253
|
+
columns: ["onCallDutyPolicyScheduleId", "userId", "projectId"],
|
|
254
|
+
hasIsOwnerNotified: true,
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
table: "PodmanHostOwnerTeam",
|
|
258
|
+
columns: ["podmanHostId", "teamId", "projectId"],
|
|
259
|
+
hasIsOwnerNotified: true,
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
table: "PodmanHostOwnerUser",
|
|
263
|
+
columns: ["podmanHostId", "userId", "projectId"],
|
|
264
|
+
hasIsOwnerNotified: true,
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
table: "ProbeOwnerTeam",
|
|
268
|
+
columns: ["probeId", "teamId", "projectId"],
|
|
269
|
+
hasIsOwnerNotified: true,
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
table: "ProbeOwnerUser",
|
|
273
|
+
columns: ["probeId", "userId", "projectId"],
|
|
274
|
+
hasIsOwnerNotified: true,
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
table: "ProxmoxClusterOwnerTeam",
|
|
278
|
+
columns: ["proxmoxClusterId", "teamId", "projectId"],
|
|
279
|
+
hasIsOwnerNotified: true,
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
table: "ProxmoxClusterOwnerUser",
|
|
283
|
+
columns: ["proxmoxClusterId", "userId", "projectId"],
|
|
284
|
+
hasIsOwnerNotified: true,
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
table: "RumApplicationOwnerTeam",
|
|
288
|
+
columns: ["rumApplicationId", "teamId", "projectId"],
|
|
289
|
+
hasIsOwnerNotified: true,
|
|
290
|
+
},
|
|
291
|
+
{
|
|
292
|
+
table: "RumApplicationOwnerUser",
|
|
293
|
+
columns: ["rumApplicationId", "userId", "projectId"],
|
|
294
|
+
hasIsOwnerNotified: true,
|
|
295
|
+
},
|
|
296
|
+
{
|
|
297
|
+
table: "RunbookOwnerTeam",
|
|
298
|
+
columns: ["runbookId", "teamId", "projectId"],
|
|
299
|
+
hasIsOwnerNotified: true,
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
table: "RunbookOwnerUser",
|
|
303
|
+
columns: ["runbookId", "userId", "projectId"],
|
|
304
|
+
hasIsOwnerNotified: true,
|
|
305
|
+
},
|
|
306
|
+
{
|
|
307
|
+
table: "RunnerOwnerTeam",
|
|
308
|
+
columns: ["runnerId", "teamId", "projectId"],
|
|
309
|
+
hasIsOwnerNotified: true,
|
|
310
|
+
},
|
|
311
|
+
{
|
|
312
|
+
table: "RunnerOwnerUser",
|
|
313
|
+
columns: ["runnerId", "userId", "projectId"],
|
|
314
|
+
hasIsOwnerNotified: true,
|
|
315
|
+
},
|
|
316
|
+
{
|
|
317
|
+
table: "ScheduledMaintenanceOwnerTeam",
|
|
318
|
+
columns: ["scheduledMaintenanceId", "teamId", "projectId"],
|
|
319
|
+
hasIsOwnerNotified: true,
|
|
320
|
+
},
|
|
321
|
+
{
|
|
322
|
+
table: "ScheduledMaintenanceOwnerUser",
|
|
323
|
+
columns: ["scheduledMaintenanceId", "userId", "projectId"],
|
|
324
|
+
hasIsOwnerNotified: true,
|
|
325
|
+
},
|
|
326
|
+
{
|
|
327
|
+
table: "ScheduledMaintenanceTemplateOwnerTeam",
|
|
328
|
+
columns: ["scheduledMaintenanceTemplateId", "teamId", "projectId"],
|
|
329
|
+
hasIsOwnerNotified: false,
|
|
330
|
+
},
|
|
331
|
+
{
|
|
332
|
+
table: "ScheduledMaintenanceTemplateOwnerUser",
|
|
333
|
+
columns: ["scheduledMaintenanceTemplateId", "userId", "projectId"],
|
|
334
|
+
hasIsOwnerNotified: false,
|
|
335
|
+
},
|
|
336
|
+
{
|
|
337
|
+
table: "ServerlessFunctionOwnerTeam",
|
|
338
|
+
columns: ["serverlessFunctionId", "teamId", "projectId"],
|
|
339
|
+
hasIsOwnerNotified: true,
|
|
340
|
+
},
|
|
341
|
+
{
|
|
342
|
+
table: "ServerlessFunctionOwnerUser",
|
|
343
|
+
columns: ["serverlessFunctionId", "userId", "projectId"],
|
|
344
|
+
hasIsOwnerNotified: true,
|
|
345
|
+
},
|
|
346
|
+
{
|
|
347
|
+
table: "ServiceLevelObjectiveOwnerTeam",
|
|
348
|
+
columns: ["serviceLevelObjectiveId", "teamId", "projectId"],
|
|
349
|
+
hasIsOwnerNotified: true,
|
|
350
|
+
},
|
|
351
|
+
{
|
|
352
|
+
table: "ServiceLevelObjectiveOwnerUser",
|
|
353
|
+
columns: ["serviceLevelObjectiveId", "userId", "projectId"],
|
|
354
|
+
hasIsOwnerNotified: true,
|
|
355
|
+
},
|
|
356
|
+
{
|
|
357
|
+
table: "ServiceOwnerTeam",
|
|
358
|
+
columns: ["serviceId", "teamId", "projectId"],
|
|
359
|
+
hasIsOwnerNotified: false,
|
|
360
|
+
},
|
|
361
|
+
{
|
|
362
|
+
table: "ServiceOwnerUser",
|
|
363
|
+
columns: ["serviceId", "userId", "projectId"],
|
|
364
|
+
hasIsOwnerNotified: false,
|
|
365
|
+
},
|
|
366
|
+
{
|
|
367
|
+
table: "StatusPageOwnerTeam",
|
|
368
|
+
columns: ["statusPageId", "teamId", "projectId"],
|
|
369
|
+
hasIsOwnerNotified: true,
|
|
370
|
+
},
|
|
371
|
+
{
|
|
372
|
+
table: "StatusPageOwnerUser",
|
|
373
|
+
columns: ["statusPageId", "userId", "projectId"],
|
|
374
|
+
hasIsOwnerNotified: true,
|
|
375
|
+
},
|
|
376
|
+
{
|
|
377
|
+
table: "VMwareVCenterOwnerTeam",
|
|
378
|
+
columns: ["vmwareVCenterId", "teamId", "projectId"],
|
|
379
|
+
hasIsOwnerNotified: true,
|
|
380
|
+
},
|
|
381
|
+
{
|
|
382
|
+
table: "VMwareVCenterOwnerUser",
|
|
383
|
+
columns: ["vmwareVCenterId", "userId", "projectId"],
|
|
384
|
+
hasIsOwnerNotified: true,
|
|
385
|
+
},
|
|
386
|
+
{
|
|
387
|
+
table: "WorkflowOwnerTeam",
|
|
388
|
+
columns: ["workflowId", "teamId", "projectId"],
|
|
389
|
+
hasIsOwnerNotified: true,
|
|
390
|
+
},
|
|
391
|
+
{
|
|
392
|
+
table: "WorkflowOwnerUser",
|
|
393
|
+
columns: ["workflowId", "userId", "projectId"],
|
|
394
|
+
hasIsOwnerNotified: true,
|
|
395
|
+
},
|
|
396
|
+
];
|
|
397
|
+
|
|
398
|
+
export class MakeOwnerRowsUnique1793500000000 implements MigrationInterface {
|
|
399
|
+
public name: string = "MakeOwnerRowsUnique1793500000000";
|
|
400
|
+
|
|
401
|
+
public async up(queryRunner: QueryRunner): Promise<void> {
|
|
402
|
+
for (const ownerTable of OWNER_TABLES) {
|
|
403
|
+
await this.deleteDuplicateOwners(queryRunner, ownerTable);
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
await queryRunner.query(
|
|
407
|
+
`DROP INDEX "public"."IDX_4490b10d3394a9be5f27f8fc3b"`,
|
|
408
|
+
);
|
|
409
|
+
await queryRunner.query(
|
|
410
|
+
`DROP INDEX "public"."IDX_1d8d2229e31e4ec13ec99c79ae"`,
|
|
411
|
+
);
|
|
412
|
+
await queryRunner.query(
|
|
413
|
+
`DROP INDEX "public"."IDX_7b7272644aab237d503ed3429a"`,
|
|
414
|
+
);
|
|
415
|
+
await queryRunner.query(
|
|
416
|
+
`DROP INDEX "public"."IDX_6f6246149ab744fd62ada06ee5"`,
|
|
417
|
+
);
|
|
418
|
+
await queryRunner.query(
|
|
419
|
+
`DROP INDEX "public"."IDX_34f21c8ae164fb90be806818a8"`,
|
|
420
|
+
);
|
|
421
|
+
await queryRunner.query(
|
|
422
|
+
`DROP INDEX "public"."IDX_1539db4bbd6ada58abb940b058"`,
|
|
423
|
+
);
|
|
424
|
+
await queryRunner.query(
|
|
425
|
+
`DROP INDEX "public"."IDX_377b22d5ffc7f1e3d5085a27ea"`,
|
|
426
|
+
);
|
|
427
|
+
await queryRunner.query(
|
|
428
|
+
`DROP INDEX "public"."IDX_abc604b71465bc5579525ff256"`,
|
|
429
|
+
);
|
|
430
|
+
await queryRunner.query(
|
|
431
|
+
`DROP INDEX "public"."IDX_3c8d9da5d5cd959c953094653b"`,
|
|
432
|
+
);
|
|
433
|
+
await queryRunner.query(
|
|
434
|
+
`DROP INDEX "public"."IDX_9f9eff007b40602f856803c50a"`,
|
|
435
|
+
);
|
|
436
|
+
await queryRunner.query(
|
|
437
|
+
`DROP INDEX "public"."IDX_b737666365dbea2e4c914fc6d3"`,
|
|
438
|
+
);
|
|
439
|
+
await queryRunner.query(
|
|
440
|
+
`DROP INDEX "public"."IDX_a4621b7155a01292b92569549f"`,
|
|
441
|
+
);
|
|
442
|
+
await queryRunner.query(
|
|
443
|
+
`DROP INDEX "public"."IDX_4873976169085f14bdc39e168d"`,
|
|
444
|
+
);
|
|
445
|
+
await queryRunner.query(
|
|
446
|
+
`DROP INDEX "public"."IDX_a9f80dc4f648f0957ce695dc61"`,
|
|
447
|
+
);
|
|
448
|
+
await queryRunner.query(
|
|
449
|
+
`DROP INDEX "public"."IDX_23cb5a85c555d015abb14021bd"`,
|
|
450
|
+
);
|
|
451
|
+
await queryRunner.query(
|
|
452
|
+
`DROP INDEX "public"."IDX_9a2480665e9ab79bef464a8c57"`,
|
|
453
|
+
);
|
|
454
|
+
await queryRunner.query(
|
|
455
|
+
`DROP INDEX "public"."IDX_5144d0de37b0f040ca2d71abad"`,
|
|
456
|
+
);
|
|
457
|
+
await queryRunner.query(
|
|
458
|
+
`DROP INDEX "public"."IDX_3a5b7e91e8b9ee59041517906c"`,
|
|
459
|
+
);
|
|
460
|
+
await queryRunner.query(
|
|
461
|
+
`DROP INDEX "public"."IDX_7b57159bdf315d24ac3116739c"`,
|
|
462
|
+
);
|
|
463
|
+
await queryRunner.query(
|
|
464
|
+
`DROP INDEX "public"."IDX_d02f1b9d7f33e124ca2deda720"`,
|
|
465
|
+
);
|
|
466
|
+
await queryRunner.query(
|
|
467
|
+
`DROP INDEX "public"."IDX_dfbcaebaa02d06a556fd2e155c"`,
|
|
468
|
+
);
|
|
469
|
+
await queryRunner.query(
|
|
470
|
+
`DROP INDEX "public"."IDX_042a7841d65141fb940de9d881"`,
|
|
471
|
+
);
|
|
472
|
+
await queryRunner.query(
|
|
473
|
+
`DROP INDEX "public"."IDX_79c03a537d5c1f4dbeb8beb355"`,
|
|
474
|
+
);
|
|
475
|
+
await queryRunner.query(
|
|
476
|
+
`DROP INDEX "public"."IDX_74c82db90ec03c884ba9da813a"`,
|
|
477
|
+
);
|
|
478
|
+
await queryRunner.query(
|
|
479
|
+
`DROP INDEX "public"."IDX_c715213fcbbb6e127c939e77d5"`,
|
|
480
|
+
);
|
|
481
|
+
await queryRunner.query(
|
|
482
|
+
`DROP INDEX "public"."IDX_f9aa734977a4131f79216083e2"`,
|
|
483
|
+
);
|
|
484
|
+
await queryRunner.query(
|
|
485
|
+
`DROP INDEX "public"."IDX_be7506765e639c732a90783147"`,
|
|
486
|
+
);
|
|
487
|
+
await queryRunner.query(
|
|
488
|
+
`DROP INDEX "public"."IDX_53e4404ae86c9de055cf1dee02"`,
|
|
489
|
+
);
|
|
490
|
+
await queryRunner.query(
|
|
491
|
+
`DROP INDEX "public"."IDX_b4fd29eeca8c655246fc86e6ba"`,
|
|
492
|
+
);
|
|
493
|
+
await queryRunner.query(
|
|
494
|
+
`DROP INDEX "public"."IDX_8a02ec21317c3701dbab53e43d"`,
|
|
495
|
+
);
|
|
496
|
+
await queryRunner.query(
|
|
497
|
+
`CREATE UNIQUE INDEX "IDX_11c6b59fc829f8147d46bddd2b" ON "KubernetesClusterOwnerTeam" ("kubernetesClusterId", "teamId", "projectId") `,
|
|
498
|
+
);
|
|
499
|
+
await queryRunner.query(
|
|
500
|
+
`CREATE UNIQUE INDEX "IDX_7a3ab0c19695f86724009d0926" ON "KubernetesClusterOwnerUser" ("kubernetesClusterId", "userId", "projectId") `,
|
|
501
|
+
);
|
|
502
|
+
await queryRunner.query(
|
|
503
|
+
`CREATE UNIQUE INDEX "IDX_110a58ade0d1744b8d6c832a1d" ON "NetworkDeviceOwnerTeam" ("networkDeviceId", "teamId", "projectId") `,
|
|
504
|
+
);
|
|
505
|
+
await queryRunner.query(
|
|
506
|
+
`CREATE UNIQUE INDEX "IDX_24546d5de391b1c6fcff074842" ON "NetworkDeviceOwnerUser" ("networkDeviceId", "userId", "projectId") `,
|
|
507
|
+
);
|
|
508
|
+
await queryRunner.query(
|
|
509
|
+
`CREATE UNIQUE INDEX "IDX_44da1e8e6844ed0bb23c365487" ON "DockerHostOwnerTeam" ("dockerHostId", "teamId", "projectId") `,
|
|
510
|
+
);
|
|
511
|
+
await queryRunner.query(
|
|
512
|
+
`CREATE UNIQUE INDEX "IDX_ce1b388e6e68733a35812b45fc" ON "DockerHostOwnerUser" ("dockerHostId", "userId", "projectId") `,
|
|
513
|
+
);
|
|
514
|
+
await queryRunner.query(
|
|
515
|
+
`CREATE UNIQUE INDEX "IDX_0fe42310a08e84122c058d9a36" ON "PodmanHostOwnerTeam" ("podmanHostId", "teamId", "projectId") `,
|
|
516
|
+
);
|
|
517
|
+
await queryRunner.query(
|
|
518
|
+
`CREATE UNIQUE INDEX "IDX_27c39edd22d991939693b08963" ON "PodmanHostOwnerUser" ("podmanHostId", "userId", "projectId") `,
|
|
519
|
+
);
|
|
520
|
+
await queryRunner.query(
|
|
521
|
+
`CREATE UNIQUE INDEX "IDX_e8255ffba6701a426fb6218bf5" ON "ProxmoxClusterOwnerTeam" ("proxmoxClusterId", "teamId", "projectId") `,
|
|
522
|
+
);
|
|
523
|
+
await queryRunner.query(
|
|
524
|
+
`CREATE UNIQUE INDEX "IDX_b81360b62734aade7cd8942bc6" ON "DockerSwarmClusterOwnerTeam" ("dockerSwarmClusterId", "teamId", "projectId") `,
|
|
525
|
+
);
|
|
526
|
+
await queryRunner.query(
|
|
527
|
+
`CREATE UNIQUE INDEX "IDX_05e4e7a95b3bdb6de7523c4265" ON "ProxmoxClusterOwnerUser" ("proxmoxClusterId", "userId", "projectId") `,
|
|
528
|
+
);
|
|
529
|
+
await queryRunner.query(
|
|
530
|
+
`CREATE UNIQUE INDEX "IDX_1b57f437aa7d183c103441eaf0" ON "DockerSwarmClusterOwnerUser" ("dockerSwarmClusterId", "userId", "projectId") `,
|
|
531
|
+
);
|
|
532
|
+
await queryRunner.query(
|
|
533
|
+
`CREATE UNIQUE INDEX "IDX_274979c9c9f53857fdb9dd4add" ON "IoTFleetOwnerTeam" ("iotFleetId", "teamId", "projectId") `,
|
|
534
|
+
);
|
|
535
|
+
await queryRunner.query(
|
|
536
|
+
`CREATE UNIQUE INDEX "IDX_31ef8630b4fac368db98aab9a2" ON "IoTFleetOwnerUser" ("iotFleetId", "userId", "projectId") `,
|
|
537
|
+
);
|
|
538
|
+
await queryRunner.query(
|
|
539
|
+
`CREATE UNIQUE INDEX "IDX_2c8bb7d2d9e0f69a70acdbb3b2" ON "CephClusterOwnerTeam" ("cephClusterId", "teamId", "projectId") `,
|
|
540
|
+
);
|
|
541
|
+
await queryRunner.query(
|
|
542
|
+
`CREATE UNIQUE INDEX "IDX_493141a06c1a0e8eb9338827c4" ON "CephClusterOwnerUser" ("cephClusterId", "userId", "projectId") `,
|
|
543
|
+
);
|
|
544
|
+
await queryRunner.query(
|
|
545
|
+
`CREATE UNIQUE INDEX "IDX_9a6bd2017e0d9ad69c4a7cb83e" ON "VMwareVCenterOwnerTeam" ("vmwareVCenterId", "teamId", "projectId") `,
|
|
546
|
+
);
|
|
547
|
+
await queryRunner.query(
|
|
548
|
+
`CREATE UNIQUE INDEX "IDX_6f340ef127218ec4d0c50a7c87" ON "VMwareVCenterOwnerUser" ("vmwareVCenterId", "userId", "projectId") `,
|
|
549
|
+
);
|
|
550
|
+
await queryRunner.query(
|
|
551
|
+
`CREATE UNIQUE INDEX "IDX_3f0e121832ab6eddcb165328e2" ON "HostOwnerTeam" ("hostId", "teamId", "projectId") `,
|
|
552
|
+
);
|
|
553
|
+
await queryRunner.query(
|
|
554
|
+
`CREATE UNIQUE INDEX "IDX_475d30964cfbe0040019345d16" ON "HostOwnerUser" ("hostId", "userId", "projectId") `,
|
|
555
|
+
);
|
|
556
|
+
await queryRunner.query(
|
|
557
|
+
`CREATE UNIQUE INDEX "IDX_912ddc627eb4e8ca3f93a701c9" ON "ServerlessFunctionOwnerTeam" ("serverlessFunctionId", "teamId", "projectId") `,
|
|
558
|
+
);
|
|
559
|
+
await queryRunner.query(
|
|
560
|
+
`CREATE UNIQUE INDEX "IDX_f8efcb93010641cf8712bbd3f6" ON "ServerlessFunctionOwnerUser" ("serverlessFunctionId", "userId", "projectId") `,
|
|
561
|
+
);
|
|
562
|
+
await queryRunner.query(
|
|
563
|
+
`CREATE UNIQUE INDEX "IDX_2eb4784b49cc7012fd8be34911" ON "CloudResourceOwnerTeam" ("cloudResourceId", "teamId", "projectId") `,
|
|
564
|
+
);
|
|
565
|
+
await queryRunner.query(
|
|
566
|
+
`CREATE UNIQUE INDEX "IDX_2956fbee991fc0eada674617d7" ON "CloudResourceOwnerUser" ("cloudResourceId", "userId", "projectId") `,
|
|
567
|
+
);
|
|
568
|
+
await queryRunner.query(
|
|
569
|
+
`CREATE UNIQUE INDEX "IDX_24b4e231f58db2b6ff1df458b6" ON "RumApplicationOwnerTeam" ("rumApplicationId", "teamId", "projectId") `,
|
|
570
|
+
);
|
|
571
|
+
await queryRunner.query(
|
|
572
|
+
`CREATE UNIQUE INDEX "IDX_d5b096e3c2b664829c4bf021d9" ON "RumApplicationOwnerUser" ("rumApplicationId", "userId", "projectId") `,
|
|
573
|
+
);
|
|
574
|
+
await queryRunner.query(
|
|
575
|
+
`CREATE UNIQUE INDEX "IDX_4490b10d3394a9be5f27f8fc3b" ON "IncidentOwnerTeam" ("incidentId", "teamId", "projectId") `,
|
|
576
|
+
);
|
|
577
|
+
await queryRunner.query(
|
|
578
|
+
`CREATE UNIQUE INDEX "IDX_1d8d2229e31e4ec13ec99c79ae" ON "IncidentOwnerUser" ("incidentId", "userId", "projectId") `,
|
|
579
|
+
);
|
|
580
|
+
await queryRunner.query(
|
|
581
|
+
`CREATE UNIQUE INDEX "IDX_5ea13ac7a467e4532d18881e71" ON "IncidentTemplateOwnerTeam" ("incidentTemplateId", "teamId", "projectId") `,
|
|
582
|
+
);
|
|
583
|
+
await queryRunner.query(
|
|
584
|
+
`CREATE UNIQUE INDEX "IDX_9f40fdc8d3b6da5ee7fa30c1fb" ON "IncidentTemplateOwnerUser" ("incidentTemplateId", "userId", "projectId") `,
|
|
585
|
+
);
|
|
586
|
+
await queryRunner.query(
|
|
587
|
+
`CREATE UNIQUE INDEX "IDX_632005436db02ad442c7bcb634" ON "MonitorGroupOwnerTeam" ("monitorGroupId", "teamId", "projectId") `,
|
|
588
|
+
);
|
|
589
|
+
await queryRunner.query(
|
|
590
|
+
`CREATE UNIQUE INDEX "IDX_4ce33f4ec2b613851ec00d5ad9" ON "MonitorGroupOwnerUser" ("monitorGroupId", "userId", "projectId") `,
|
|
591
|
+
);
|
|
592
|
+
await queryRunner.query(
|
|
593
|
+
`CREATE UNIQUE INDEX "IDX_7b7272644aab237d503ed3429a" ON "MonitorOwnerTeam" ("monitorId", "teamId", "projectId") `,
|
|
594
|
+
);
|
|
595
|
+
await queryRunner.query(
|
|
596
|
+
`CREATE UNIQUE INDEX "IDX_6f6246149ab744fd62ada06ee5" ON "MonitorOwnerUser" ("monitorId", "userId", "projectId") `,
|
|
597
|
+
);
|
|
598
|
+
await queryRunner.query(
|
|
599
|
+
`CREATE UNIQUE INDEX "IDX_34f21c8ae164fb90be806818a8" ON "OnCallDutyPolicyOwnerTeam" ("onCallDutyPolicyId", "teamId", "projectId") `,
|
|
600
|
+
);
|
|
601
|
+
await queryRunner.query(
|
|
602
|
+
`CREATE UNIQUE INDEX "IDX_1539db4bbd6ada58abb940b058" ON "OnCallDutyPolicyOwnerUser" ("onCallDutyPolicyId", "userId", "projectId") `,
|
|
603
|
+
);
|
|
604
|
+
await queryRunner.query(
|
|
605
|
+
`CREATE UNIQUE INDEX "IDX_377b22d5ffc7f1e3d5085a27ea" ON "OnCallDutyPolicyScheduleOwnerTeam" ("onCallDutyPolicyScheduleId", "teamId", "projectId") `,
|
|
606
|
+
);
|
|
607
|
+
await queryRunner.query(
|
|
608
|
+
`CREATE UNIQUE INDEX "IDX_abc604b71465bc5579525ff256" ON "OnCallDutyPolicyScheduleOwnerUser" ("onCallDutyPolicyScheduleId", "userId", "projectId") `,
|
|
609
|
+
);
|
|
610
|
+
await queryRunner.query(
|
|
611
|
+
`CREATE UNIQUE INDEX "IDX_3c8d9da5d5cd959c953094653b" ON "IncomingCallPolicyOwnerTeam" ("incomingCallPolicyId", "teamId", "projectId") `,
|
|
612
|
+
);
|
|
613
|
+
await queryRunner.query(
|
|
614
|
+
`CREATE UNIQUE INDEX "IDX_9f9eff007b40602f856803c50a" ON "IncomingCallPolicyOwnerUser" ("incomingCallPolicyId", "userId", "projectId") `,
|
|
615
|
+
);
|
|
616
|
+
await queryRunner.query(
|
|
617
|
+
`CREATE UNIQUE INDEX "IDX_e853141fb4c21e905ce36dc60f" ON "ProbeOwnerTeam" ("probeId", "teamId", "projectId") `,
|
|
618
|
+
);
|
|
619
|
+
await queryRunner.query(
|
|
620
|
+
`CREATE UNIQUE INDEX "IDX_eafc36eb1963f058440702fc6e" ON "ProbeOwnerUser" ("probeId", "userId", "projectId") `,
|
|
621
|
+
);
|
|
622
|
+
await queryRunner.query(
|
|
623
|
+
`CREATE UNIQUE INDEX "IDX_c1889b64104f9b28ef6228c12e" ON "AIAgentOwnerTeam" ("aiAgentId", "teamId", "projectId") `,
|
|
624
|
+
);
|
|
625
|
+
await queryRunner.query(
|
|
626
|
+
`CREATE UNIQUE INDEX "IDX_3847a3fc0f1f00a73622ca6369" ON "AIAgentOwnerUser" ("aiAgentId", "userId", "projectId") `,
|
|
627
|
+
);
|
|
628
|
+
await queryRunner.query(
|
|
629
|
+
`CREATE UNIQUE INDEX "IDX_b737666365dbea2e4c914fc6d3" ON "ScheduledMaintenanceOwnerTeam" ("scheduledMaintenanceId", "teamId", "projectId") `,
|
|
630
|
+
);
|
|
631
|
+
await queryRunner.query(
|
|
632
|
+
`CREATE UNIQUE INDEX "IDX_a4621b7155a01292b92569549f" ON "ScheduledMaintenanceOwnerUser" ("scheduledMaintenanceId", "userId", "projectId") `,
|
|
633
|
+
);
|
|
634
|
+
await queryRunner.query(
|
|
635
|
+
`CREATE UNIQUE INDEX "IDX_3149703f26e38aaa65de2d2653" ON "ServiceOwnerTeam" ("serviceId", "teamId", "projectId") `,
|
|
636
|
+
);
|
|
637
|
+
await queryRunner.query(
|
|
638
|
+
`CREATE UNIQUE INDEX "IDX_b65a160e622610345018d1eb0c" ON "ServiceOwnerUser" ("serviceId", "userId", "projectId") `,
|
|
639
|
+
);
|
|
640
|
+
await queryRunner.query(
|
|
641
|
+
`CREATE UNIQUE INDEX "IDX_4873976169085f14bdc39e168d" ON "StatusPageOwnerTeam" ("statusPageId", "teamId", "projectId") `,
|
|
642
|
+
);
|
|
643
|
+
await queryRunner.query(
|
|
644
|
+
`CREATE UNIQUE INDEX "IDX_a9f80dc4f648f0957ce695dc61" ON "StatusPageOwnerUser" ("statusPageId", "userId", "projectId") `,
|
|
645
|
+
);
|
|
646
|
+
await queryRunner.query(
|
|
647
|
+
`CREATE UNIQUE INDEX "IDX_23cb5a85c555d015abb14021bd" ON "WorkflowOwnerTeam" ("workflowId", "teamId", "projectId") `,
|
|
648
|
+
);
|
|
649
|
+
await queryRunner.query(
|
|
650
|
+
`CREATE UNIQUE INDEX "IDX_9a2480665e9ab79bef464a8c57" ON "WorkflowOwnerUser" ("workflowId", "userId", "projectId") `,
|
|
651
|
+
);
|
|
652
|
+
await queryRunner.query(
|
|
653
|
+
`CREATE UNIQUE INDEX "IDX_5144d0de37b0f040ca2d71abad" ON "RunnerOwnerTeam" ("runnerId", "teamId", "projectId") `,
|
|
654
|
+
);
|
|
655
|
+
await queryRunner.query(
|
|
656
|
+
`CREATE UNIQUE INDEX "IDX_3a5b7e91e8b9ee59041517906c" ON "RunnerOwnerUser" ("runnerId", "userId", "projectId") `,
|
|
657
|
+
);
|
|
658
|
+
await queryRunner.query(
|
|
659
|
+
`CREATE UNIQUE INDEX "IDX_7b57159bdf315d24ac3116739c" ON "RunbookOwnerTeam" ("runbookId", "teamId", "projectId") `,
|
|
660
|
+
);
|
|
661
|
+
await queryRunner.query(
|
|
662
|
+
`CREATE UNIQUE INDEX "IDX_d02f1b9d7f33e124ca2deda720" ON "RunbookOwnerUser" ("runbookId", "userId", "projectId") `,
|
|
663
|
+
);
|
|
664
|
+
await queryRunner.query(
|
|
665
|
+
`CREATE UNIQUE INDEX "IDX_c916d6412aff8d51222300efc9" ON "ScheduledMaintenanceTemplateOwnerTeam" ("scheduledMaintenanceTemplateId", "teamId", "projectId") `,
|
|
666
|
+
);
|
|
667
|
+
await queryRunner.query(
|
|
668
|
+
`CREATE UNIQUE INDEX "IDX_881bd5d826e4f5ec3cba63760f" ON "ScheduledMaintenanceTemplateOwnerUser" ("scheduledMaintenanceTemplateId", "userId", "projectId") `,
|
|
669
|
+
);
|
|
670
|
+
await queryRunner.query(
|
|
671
|
+
`CREATE UNIQUE INDEX "IDX_dfbcaebaa02d06a556fd2e155c" ON "AlertOwnerTeam" ("alertId", "teamId", "projectId") `,
|
|
672
|
+
);
|
|
673
|
+
await queryRunner.query(
|
|
674
|
+
`CREATE UNIQUE INDEX "IDX_042a7841d65141fb940de9d881" ON "AlertOwnerUser" ("alertId", "userId", "projectId") `,
|
|
675
|
+
);
|
|
676
|
+
await queryRunner.query(
|
|
677
|
+
`CREATE UNIQUE INDEX "IDX_79c03a537d5c1f4dbeb8beb355" ON "AlertEpisodeOwnerUser" ("alertEpisodeId", "userId", "projectId") `,
|
|
678
|
+
);
|
|
679
|
+
await queryRunner.query(
|
|
680
|
+
`CREATE UNIQUE INDEX "IDX_74c82db90ec03c884ba9da813a" ON "AlertEpisodeOwnerTeam" ("alertEpisodeId", "teamId", "projectId") `,
|
|
681
|
+
);
|
|
682
|
+
await queryRunner.query(
|
|
683
|
+
`CREATE UNIQUE INDEX "IDX_c715213fcbbb6e127c939e77d5" ON "IncidentEpisodeOwnerUser" ("incidentEpisodeId", "userId", "projectId") `,
|
|
684
|
+
);
|
|
685
|
+
await queryRunner.query(
|
|
686
|
+
`CREATE UNIQUE INDEX "IDX_f9aa734977a4131f79216083e2" ON "IncidentEpisodeOwnerTeam" ("incidentEpisodeId", "teamId", "projectId") `,
|
|
687
|
+
);
|
|
688
|
+
await queryRunner.query(
|
|
689
|
+
`CREATE UNIQUE INDEX "IDX_be7506765e639c732a90783147" ON "ServiceLevelObjectiveOwnerUser" ("serviceLevelObjectiveId", "userId", "projectId") `,
|
|
690
|
+
);
|
|
691
|
+
await queryRunner.query(
|
|
692
|
+
`CREATE UNIQUE INDEX "IDX_53e4404ae86c9de055cf1dee02" ON "ServiceLevelObjectiveOwnerTeam" ("serviceLevelObjectiveId", "teamId", "projectId") `,
|
|
693
|
+
);
|
|
694
|
+
await queryRunner.query(
|
|
695
|
+
`CREATE UNIQUE INDEX "IDX_b4fd29eeca8c655246fc86e6ba" ON "DashboardOwnerTeam" ("dashboardId", "teamId", "projectId") `,
|
|
696
|
+
);
|
|
697
|
+
await queryRunner.query(
|
|
698
|
+
`CREATE UNIQUE INDEX "IDX_8a02ec21317c3701dbab53e43d" ON "DashboardOwnerUser" ("dashboardId", "userId", "projectId") `,
|
|
699
|
+
);
|
|
700
|
+
}
|
|
701
|
+
|
|
702
|
+
public async down(queryRunner: QueryRunner): Promise<void> {
|
|
703
|
+
/*
|
|
704
|
+
* Only the indexes are reversible. The duplicates removed in up() are
|
|
705
|
+
* gone, and bringing them back would bring back the double notifications.
|
|
706
|
+
*
|
|
707
|
+
* The non-unique indexes are recreated in their original column order
|
|
708
|
+
* (resource, owner, project). The generator lists the columns in table
|
|
709
|
+
* order instead, which would not be the index that was dropped.
|
|
710
|
+
*/
|
|
711
|
+
await queryRunner.query(
|
|
712
|
+
`DROP INDEX "public"."IDX_8a02ec21317c3701dbab53e43d"`,
|
|
713
|
+
);
|
|
714
|
+
await queryRunner.query(
|
|
715
|
+
`DROP INDEX "public"."IDX_b4fd29eeca8c655246fc86e6ba"`,
|
|
716
|
+
);
|
|
717
|
+
await queryRunner.query(
|
|
718
|
+
`DROP INDEX "public"."IDX_53e4404ae86c9de055cf1dee02"`,
|
|
719
|
+
);
|
|
720
|
+
await queryRunner.query(
|
|
721
|
+
`DROP INDEX "public"."IDX_be7506765e639c732a90783147"`,
|
|
722
|
+
);
|
|
723
|
+
await queryRunner.query(
|
|
724
|
+
`DROP INDEX "public"."IDX_f9aa734977a4131f79216083e2"`,
|
|
725
|
+
);
|
|
726
|
+
await queryRunner.query(
|
|
727
|
+
`DROP INDEX "public"."IDX_c715213fcbbb6e127c939e77d5"`,
|
|
728
|
+
);
|
|
729
|
+
await queryRunner.query(
|
|
730
|
+
`DROP INDEX "public"."IDX_74c82db90ec03c884ba9da813a"`,
|
|
731
|
+
);
|
|
732
|
+
await queryRunner.query(
|
|
733
|
+
`DROP INDEX "public"."IDX_79c03a537d5c1f4dbeb8beb355"`,
|
|
734
|
+
);
|
|
735
|
+
await queryRunner.query(
|
|
736
|
+
`DROP INDEX "public"."IDX_042a7841d65141fb940de9d881"`,
|
|
737
|
+
);
|
|
738
|
+
await queryRunner.query(
|
|
739
|
+
`DROP INDEX "public"."IDX_dfbcaebaa02d06a556fd2e155c"`,
|
|
740
|
+
);
|
|
741
|
+
await queryRunner.query(
|
|
742
|
+
`DROP INDEX "public"."IDX_881bd5d826e4f5ec3cba63760f"`,
|
|
743
|
+
);
|
|
744
|
+
await queryRunner.query(
|
|
745
|
+
`DROP INDEX "public"."IDX_c916d6412aff8d51222300efc9"`,
|
|
746
|
+
);
|
|
747
|
+
await queryRunner.query(
|
|
748
|
+
`DROP INDEX "public"."IDX_d02f1b9d7f33e124ca2deda720"`,
|
|
749
|
+
);
|
|
750
|
+
await queryRunner.query(
|
|
751
|
+
`DROP INDEX "public"."IDX_7b57159bdf315d24ac3116739c"`,
|
|
752
|
+
);
|
|
753
|
+
await queryRunner.query(
|
|
754
|
+
`DROP INDEX "public"."IDX_3a5b7e91e8b9ee59041517906c"`,
|
|
755
|
+
);
|
|
756
|
+
await queryRunner.query(
|
|
757
|
+
`DROP INDEX "public"."IDX_5144d0de37b0f040ca2d71abad"`,
|
|
758
|
+
);
|
|
759
|
+
await queryRunner.query(
|
|
760
|
+
`DROP INDEX "public"."IDX_9a2480665e9ab79bef464a8c57"`,
|
|
761
|
+
);
|
|
762
|
+
await queryRunner.query(
|
|
763
|
+
`DROP INDEX "public"."IDX_23cb5a85c555d015abb14021bd"`,
|
|
764
|
+
);
|
|
765
|
+
await queryRunner.query(
|
|
766
|
+
`DROP INDEX "public"."IDX_a9f80dc4f648f0957ce695dc61"`,
|
|
767
|
+
);
|
|
768
|
+
await queryRunner.query(
|
|
769
|
+
`DROP INDEX "public"."IDX_4873976169085f14bdc39e168d"`,
|
|
770
|
+
);
|
|
771
|
+
await queryRunner.query(
|
|
772
|
+
`DROP INDEX "public"."IDX_b65a160e622610345018d1eb0c"`,
|
|
773
|
+
);
|
|
774
|
+
await queryRunner.query(
|
|
775
|
+
`DROP INDEX "public"."IDX_3149703f26e38aaa65de2d2653"`,
|
|
776
|
+
);
|
|
777
|
+
await queryRunner.query(
|
|
778
|
+
`DROP INDEX "public"."IDX_a4621b7155a01292b92569549f"`,
|
|
779
|
+
);
|
|
780
|
+
await queryRunner.query(
|
|
781
|
+
`DROP INDEX "public"."IDX_b737666365dbea2e4c914fc6d3"`,
|
|
782
|
+
);
|
|
783
|
+
await queryRunner.query(
|
|
784
|
+
`DROP INDEX "public"."IDX_3847a3fc0f1f00a73622ca6369"`,
|
|
785
|
+
);
|
|
786
|
+
await queryRunner.query(
|
|
787
|
+
`DROP INDEX "public"."IDX_c1889b64104f9b28ef6228c12e"`,
|
|
788
|
+
);
|
|
789
|
+
await queryRunner.query(
|
|
790
|
+
`DROP INDEX "public"."IDX_eafc36eb1963f058440702fc6e"`,
|
|
791
|
+
);
|
|
792
|
+
await queryRunner.query(
|
|
793
|
+
`DROP INDEX "public"."IDX_e853141fb4c21e905ce36dc60f"`,
|
|
794
|
+
);
|
|
795
|
+
await queryRunner.query(
|
|
796
|
+
`DROP INDEX "public"."IDX_9f9eff007b40602f856803c50a"`,
|
|
797
|
+
);
|
|
798
|
+
await queryRunner.query(
|
|
799
|
+
`DROP INDEX "public"."IDX_3c8d9da5d5cd959c953094653b"`,
|
|
800
|
+
);
|
|
801
|
+
await queryRunner.query(
|
|
802
|
+
`DROP INDEX "public"."IDX_abc604b71465bc5579525ff256"`,
|
|
803
|
+
);
|
|
804
|
+
await queryRunner.query(
|
|
805
|
+
`DROP INDEX "public"."IDX_377b22d5ffc7f1e3d5085a27ea"`,
|
|
806
|
+
);
|
|
807
|
+
await queryRunner.query(
|
|
808
|
+
`DROP INDEX "public"."IDX_1539db4bbd6ada58abb940b058"`,
|
|
809
|
+
);
|
|
810
|
+
await queryRunner.query(
|
|
811
|
+
`DROP INDEX "public"."IDX_34f21c8ae164fb90be806818a8"`,
|
|
812
|
+
);
|
|
813
|
+
await queryRunner.query(
|
|
814
|
+
`DROP INDEX "public"."IDX_6f6246149ab744fd62ada06ee5"`,
|
|
815
|
+
);
|
|
816
|
+
await queryRunner.query(
|
|
817
|
+
`DROP INDEX "public"."IDX_7b7272644aab237d503ed3429a"`,
|
|
818
|
+
);
|
|
819
|
+
await queryRunner.query(
|
|
820
|
+
`DROP INDEX "public"."IDX_4ce33f4ec2b613851ec00d5ad9"`,
|
|
821
|
+
);
|
|
822
|
+
await queryRunner.query(
|
|
823
|
+
`DROP INDEX "public"."IDX_632005436db02ad442c7bcb634"`,
|
|
824
|
+
);
|
|
825
|
+
await queryRunner.query(
|
|
826
|
+
`DROP INDEX "public"."IDX_9f40fdc8d3b6da5ee7fa30c1fb"`,
|
|
827
|
+
);
|
|
828
|
+
await queryRunner.query(
|
|
829
|
+
`DROP INDEX "public"."IDX_5ea13ac7a467e4532d18881e71"`,
|
|
830
|
+
);
|
|
831
|
+
await queryRunner.query(
|
|
832
|
+
`DROP INDEX "public"."IDX_1d8d2229e31e4ec13ec99c79ae"`,
|
|
833
|
+
);
|
|
834
|
+
await queryRunner.query(
|
|
835
|
+
`DROP INDEX "public"."IDX_4490b10d3394a9be5f27f8fc3b"`,
|
|
836
|
+
);
|
|
837
|
+
await queryRunner.query(
|
|
838
|
+
`DROP INDEX "public"."IDX_d5b096e3c2b664829c4bf021d9"`,
|
|
839
|
+
);
|
|
840
|
+
await queryRunner.query(
|
|
841
|
+
`DROP INDEX "public"."IDX_24b4e231f58db2b6ff1df458b6"`,
|
|
842
|
+
);
|
|
843
|
+
await queryRunner.query(
|
|
844
|
+
`DROP INDEX "public"."IDX_2956fbee991fc0eada674617d7"`,
|
|
845
|
+
);
|
|
846
|
+
await queryRunner.query(
|
|
847
|
+
`DROP INDEX "public"."IDX_2eb4784b49cc7012fd8be34911"`,
|
|
848
|
+
);
|
|
849
|
+
await queryRunner.query(
|
|
850
|
+
`DROP INDEX "public"."IDX_f8efcb93010641cf8712bbd3f6"`,
|
|
851
|
+
);
|
|
852
|
+
await queryRunner.query(
|
|
853
|
+
`DROP INDEX "public"."IDX_912ddc627eb4e8ca3f93a701c9"`,
|
|
854
|
+
);
|
|
855
|
+
await queryRunner.query(
|
|
856
|
+
`DROP INDEX "public"."IDX_475d30964cfbe0040019345d16"`,
|
|
857
|
+
);
|
|
858
|
+
await queryRunner.query(
|
|
859
|
+
`DROP INDEX "public"."IDX_3f0e121832ab6eddcb165328e2"`,
|
|
860
|
+
);
|
|
861
|
+
await queryRunner.query(
|
|
862
|
+
`DROP INDEX "public"."IDX_6f340ef127218ec4d0c50a7c87"`,
|
|
863
|
+
);
|
|
864
|
+
await queryRunner.query(
|
|
865
|
+
`DROP INDEX "public"."IDX_9a6bd2017e0d9ad69c4a7cb83e"`,
|
|
866
|
+
);
|
|
867
|
+
await queryRunner.query(
|
|
868
|
+
`DROP INDEX "public"."IDX_493141a06c1a0e8eb9338827c4"`,
|
|
869
|
+
);
|
|
870
|
+
await queryRunner.query(
|
|
871
|
+
`DROP INDEX "public"."IDX_2c8bb7d2d9e0f69a70acdbb3b2"`,
|
|
872
|
+
);
|
|
873
|
+
await queryRunner.query(
|
|
874
|
+
`DROP INDEX "public"."IDX_31ef8630b4fac368db98aab9a2"`,
|
|
875
|
+
);
|
|
876
|
+
await queryRunner.query(
|
|
877
|
+
`DROP INDEX "public"."IDX_274979c9c9f53857fdb9dd4add"`,
|
|
878
|
+
);
|
|
879
|
+
await queryRunner.query(
|
|
880
|
+
`DROP INDEX "public"."IDX_1b57f437aa7d183c103441eaf0"`,
|
|
881
|
+
);
|
|
882
|
+
await queryRunner.query(
|
|
883
|
+
`DROP INDEX "public"."IDX_05e4e7a95b3bdb6de7523c4265"`,
|
|
884
|
+
);
|
|
885
|
+
await queryRunner.query(
|
|
886
|
+
`DROP INDEX "public"."IDX_b81360b62734aade7cd8942bc6"`,
|
|
887
|
+
);
|
|
888
|
+
await queryRunner.query(
|
|
889
|
+
`DROP INDEX "public"."IDX_e8255ffba6701a426fb6218bf5"`,
|
|
890
|
+
);
|
|
891
|
+
await queryRunner.query(
|
|
892
|
+
`DROP INDEX "public"."IDX_27c39edd22d991939693b08963"`,
|
|
893
|
+
);
|
|
894
|
+
await queryRunner.query(
|
|
895
|
+
`DROP INDEX "public"."IDX_0fe42310a08e84122c058d9a36"`,
|
|
896
|
+
);
|
|
897
|
+
await queryRunner.query(
|
|
898
|
+
`DROP INDEX "public"."IDX_ce1b388e6e68733a35812b45fc"`,
|
|
899
|
+
);
|
|
900
|
+
await queryRunner.query(
|
|
901
|
+
`DROP INDEX "public"."IDX_44da1e8e6844ed0bb23c365487"`,
|
|
902
|
+
);
|
|
903
|
+
await queryRunner.query(
|
|
904
|
+
`DROP INDEX "public"."IDX_24546d5de391b1c6fcff074842"`,
|
|
905
|
+
);
|
|
906
|
+
await queryRunner.query(
|
|
907
|
+
`DROP INDEX "public"."IDX_110a58ade0d1744b8d6c832a1d"`,
|
|
908
|
+
);
|
|
909
|
+
await queryRunner.query(
|
|
910
|
+
`DROP INDEX "public"."IDX_7a3ab0c19695f86724009d0926"`,
|
|
911
|
+
);
|
|
912
|
+
await queryRunner.query(
|
|
913
|
+
`DROP INDEX "public"."IDX_11c6b59fc829f8147d46bddd2b"`,
|
|
914
|
+
);
|
|
915
|
+
await queryRunner.query(
|
|
916
|
+
`CREATE INDEX "IDX_8a02ec21317c3701dbab53e43d" ON "DashboardOwnerUser" ("dashboardId", "userId", "projectId") `,
|
|
917
|
+
);
|
|
918
|
+
await queryRunner.query(
|
|
919
|
+
`CREATE INDEX "IDX_b4fd29eeca8c655246fc86e6ba" ON "DashboardOwnerTeam" ("dashboardId", "teamId", "projectId") `,
|
|
920
|
+
);
|
|
921
|
+
await queryRunner.query(
|
|
922
|
+
`CREATE INDEX "IDX_53e4404ae86c9de055cf1dee02" ON "ServiceLevelObjectiveOwnerTeam" ("serviceLevelObjectiveId", "teamId", "projectId") `,
|
|
923
|
+
);
|
|
924
|
+
await queryRunner.query(
|
|
925
|
+
`CREATE INDEX "IDX_be7506765e639c732a90783147" ON "ServiceLevelObjectiveOwnerUser" ("serviceLevelObjectiveId", "userId", "projectId") `,
|
|
926
|
+
);
|
|
927
|
+
await queryRunner.query(
|
|
928
|
+
`CREATE INDEX "IDX_f9aa734977a4131f79216083e2" ON "IncidentEpisodeOwnerTeam" ("incidentEpisodeId", "teamId", "projectId") `,
|
|
929
|
+
);
|
|
930
|
+
await queryRunner.query(
|
|
931
|
+
`CREATE INDEX "IDX_c715213fcbbb6e127c939e77d5" ON "IncidentEpisodeOwnerUser" ("incidentEpisodeId", "userId", "projectId") `,
|
|
932
|
+
);
|
|
933
|
+
await queryRunner.query(
|
|
934
|
+
`CREATE INDEX "IDX_74c82db90ec03c884ba9da813a" ON "AlertEpisodeOwnerTeam" ("alertEpisodeId", "teamId", "projectId") `,
|
|
935
|
+
);
|
|
936
|
+
await queryRunner.query(
|
|
937
|
+
`CREATE INDEX "IDX_79c03a537d5c1f4dbeb8beb355" ON "AlertEpisodeOwnerUser" ("alertEpisodeId", "userId", "projectId") `,
|
|
938
|
+
);
|
|
939
|
+
await queryRunner.query(
|
|
940
|
+
`CREATE INDEX "IDX_042a7841d65141fb940de9d881" ON "AlertOwnerUser" ("alertId", "userId", "projectId") `,
|
|
941
|
+
);
|
|
942
|
+
await queryRunner.query(
|
|
943
|
+
`CREATE INDEX "IDX_dfbcaebaa02d06a556fd2e155c" ON "AlertOwnerTeam" ("alertId", "teamId", "projectId") `,
|
|
944
|
+
);
|
|
945
|
+
await queryRunner.query(
|
|
946
|
+
`CREATE INDEX "IDX_d02f1b9d7f33e124ca2deda720" ON "RunbookOwnerUser" ("runbookId", "userId", "projectId") `,
|
|
947
|
+
);
|
|
948
|
+
await queryRunner.query(
|
|
949
|
+
`CREATE INDEX "IDX_7b57159bdf315d24ac3116739c" ON "RunbookOwnerTeam" ("runbookId", "teamId", "projectId") `,
|
|
950
|
+
);
|
|
951
|
+
await queryRunner.query(
|
|
952
|
+
`CREATE INDEX "IDX_3a5b7e91e8b9ee59041517906c" ON "RunnerOwnerUser" ("runnerId", "userId", "projectId") `,
|
|
953
|
+
);
|
|
954
|
+
await queryRunner.query(
|
|
955
|
+
`CREATE INDEX "IDX_5144d0de37b0f040ca2d71abad" ON "RunnerOwnerTeam" ("runnerId", "teamId", "projectId") `,
|
|
956
|
+
);
|
|
957
|
+
await queryRunner.query(
|
|
958
|
+
`CREATE INDEX "IDX_9a2480665e9ab79bef464a8c57" ON "WorkflowOwnerUser" ("workflowId", "userId", "projectId") `,
|
|
959
|
+
);
|
|
960
|
+
await queryRunner.query(
|
|
961
|
+
`CREATE INDEX "IDX_23cb5a85c555d015abb14021bd" ON "WorkflowOwnerTeam" ("workflowId", "teamId", "projectId") `,
|
|
962
|
+
);
|
|
963
|
+
await queryRunner.query(
|
|
964
|
+
`CREATE INDEX "IDX_a9f80dc4f648f0957ce695dc61" ON "StatusPageOwnerUser" ("statusPageId", "userId", "projectId") `,
|
|
965
|
+
);
|
|
966
|
+
await queryRunner.query(
|
|
967
|
+
`CREATE INDEX "IDX_4873976169085f14bdc39e168d" ON "StatusPageOwnerTeam" ("statusPageId", "teamId", "projectId") `,
|
|
968
|
+
);
|
|
969
|
+
await queryRunner.query(
|
|
970
|
+
`CREATE INDEX "IDX_a4621b7155a01292b92569549f" ON "ScheduledMaintenanceOwnerUser" ("scheduledMaintenanceId", "userId", "projectId") `,
|
|
971
|
+
);
|
|
972
|
+
await queryRunner.query(
|
|
973
|
+
`CREATE INDEX "IDX_b737666365dbea2e4c914fc6d3" ON "ScheduledMaintenanceOwnerTeam" ("scheduledMaintenanceId", "teamId", "projectId") `,
|
|
974
|
+
);
|
|
975
|
+
await queryRunner.query(
|
|
976
|
+
`CREATE INDEX "IDX_9f9eff007b40602f856803c50a" ON "IncomingCallPolicyOwnerUser" ("incomingCallPolicyId", "userId", "projectId") `,
|
|
977
|
+
);
|
|
978
|
+
await queryRunner.query(
|
|
979
|
+
`CREATE INDEX "IDX_3c8d9da5d5cd959c953094653b" ON "IncomingCallPolicyOwnerTeam" ("incomingCallPolicyId", "teamId", "projectId") `,
|
|
980
|
+
);
|
|
981
|
+
await queryRunner.query(
|
|
982
|
+
`CREATE INDEX "IDX_abc604b71465bc5579525ff256" ON "OnCallDutyPolicyScheduleOwnerUser" ("onCallDutyPolicyScheduleId", "userId", "projectId") `,
|
|
983
|
+
);
|
|
984
|
+
await queryRunner.query(
|
|
985
|
+
`CREATE INDEX "IDX_377b22d5ffc7f1e3d5085a27ea" ON "OnCallDutyPolicyScheduleOwnerTeam" ("onCallDutyPolicyScheduleId", "teamId", "projectId") `,
|
|
986
|
+
);
|
|
987
|
+
await queryRunner.query(
|
|
988
|
+
`CREATE INDEX "IDX_1539db4bbd6ada58abb940b058" ON "OnCallDutyPolicyOwnerUser" ("onCallDutyPolicyId", "userId", "projectId") `,
|
|
989
|
+
);
|
|
990
|
+
await queryRunner.query(
|
|
991
|
+
`CREATE INDEX "IDX_34f21c8ae164fb90be806818a8" ON "OnCallDutyPolicyOwnerTeam" ("onCallDutyPolicyId", "teamId", "projectId") `,
|
|
992
|
+
);
|
|
993
|
+
await queryRunner.query(
|
|
994
|
+
`CREATE INDEX "IDX_6f6246149ab744fd62ada06ee5" ON "MonitorOwnerUser" ("monitorId", "userId", "projectId") `,
|
|
995
|
+
);
|
|
996
|
+
await queryRunner.query(
|
|
997
|
+
`CREATE INDEX "IDX_7b7272644aab237d503ed3429a" ON "MonitorOwnerTeam" ("monitorId", "teamId", "projectId") `,
|
|
998
|
+
);
|
|
999
|
+
await queryRunner.query(
|
|
1000
|
+
`CREATE INDEX "IDX_1d8d2229e31e4ec13ec99c79ae" ON "IncidentOwnerUser" ("incidentId", "userId", "projectId") `,
|
|
1001
|
+
);
|
|
1002
|
+
await queryRunner.query(
|
|
1003
|
+
`CREATE INDEX "IDX_4490b10d3394a9be5f27f8fc3b" ON "IncidentOwnerTeam" ("incidentId", "teamId", "projectId") `,
|
|
1004
|
+
);
|
|
1005
|
+
}
|
|
1006
|
+
|
|
1007
|
+
private async deleteDuplicateOwners(
|
|
1008
|
+
queryRunner: QueryRunner,
|
|
1009
|
+
ownerTable: OwnerTable,
|
|
1010
|
+
): Promise<void> {
|
|
1011
|
+
const key: string = ownerTable.columns
|
|
1012
|
+
.map((column: string): string => {
|
|
1013
|
+
return `"${column}"`;
|
|
1014
|
+
})
|
|
1015
|
+
.join(", ");
|
|
1016
|
+
|
|
1017
|
+
const partitionBy: string = ownerTable.columns
|
|
1018
|
+
.map((column: string): string => {
|
|
1019
|
+
return `t."${column}"`;
|
|
1020
|
+
})
|
|
1021
|
+
.join(", ");
|
|
1022
|
+
|
|
1023
|
+
const joinOnKey: string = ownerTable.columns
|
|
1024
|
+
.map((column: string): string => {
|
|
1025
|
+
return `d."${column}" = t."${column}"`;
|
|
1026
|
+
})
|
|
1027
|
+
.join(" AND ");
|
|
1028
|
+
|
|
1029
|
+
const survivorOrder: string = [
|
|
1030
|
+
`(t."deletedAt" IS NOT NULL) ASC`,
|
|
1031
|
+
...(ownerTable.hasIsOwnerNotified ? [`t."isOwnerNotified" DESC`] : []),
|
|
1032
|
+
`t."createdAt" ASC`,
|
|
1033
|
+
`t._id ASC`,
|
|
1034
|
+
].join(", ");
|
|
1035
|
+
|
|
1036
|
+
await queryRunner.query(`
|
|
1037
|
+
WITH duplicate_groups AS (
|
|
1038
|
+
SELECT ${key}
|
|
1039
|
+
FROM "${ownerTable.table}"
|
|
1040
|
+
GROUP BY ${key}
|
|
1041
|
+
HAVING COUNT(*) > 1
|
|
1042
|
+
),
|
|
1043
|
+
ranked AS (
|
|
1044
|
+
SELECT t._id,
|
|
1045
|
+
ROW_NUMBER() OVER (
|
|
1046
|
+
PARTITION BY ${partitionBy}
|
|
1047
|
+
ORDER BY ${survivorOrder}
|
|
1048
|
+
) AS rn
|
|
1049
|
+
FROM "${ownerTable.table}" t
|
|
1050
|
+
JOIN duplicate_groups d ON ${joinOnKey}
|
|
1051
|
+
)
|
|
1052
|
+
DELETE FROM "${ownerTable.table}" t
|
|
1053
|
+
USING ranked r
|
|
1054
|
+
WHERE t._id = r._id AND r.rn > 1;
|
|
1055
|
+
`);
|
|
1056
|
+
}
|
|
1057
|
+
}
|