@oneuptime/common 11.6.0 → 11.6.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.
- package/Models/AnalyticsModels/AnalyticsBaseModel/AnalyticsBaseModel.ts +41 -24
- package/Models/AnalyticsModels/Index.ts +4 -0
- package/Models/AnalyticsModels/KubernetesCostAllocation.ts +842 -0
- package/Models/AnalyticsModels/MetricBaselineHourly.ts +2 -0
- package/Models/AnalyticsModels/MetricItemAggMV1m.ts +5 -2
- package/Models/AnalyticsModels/MetricItemAggMV1mByContainer.ts +5 -2
- package/Models/AnalyticsModels/MetricItemAggMV1mByHostV2.ts +5 -2
- package/Models/AnalyticsModels/MetricItemAggMV1mByK8sCluster.ts +5 -2
- package/Models/AnalyticsModels/MetricItemAggMV1mByService.ts +5 -2
- package/Models/AnalyticsModels/NetworkFlow.ts +54 -0
- package/Models/AnalyticsModels/SloHistory.ts +240 -0
- package/Models/DatabaseModels/Index.ts +20 -0
- package/Models/DatabaseModels/NetworkDevice.ts +453 -6
- package/Models/DatabaseModels/NetworkDeviceDiscoveryScan.ts +7 -6
- package/Models/DatabaseModels/NetworkEndpoint.ts +753 -0
- package/Models/DatabaseModels/NetworkSite.ts +1155 -0
- package/Models/DatabaseModels/NetworkSiteAssignmentRule.ts +517 -0
- package/Models/DatabaseModels/NetworkSiteLink.ts +611 -0
- package/Models/DatabaseModels/NetworkSiteStatusTimeline.ts +520 -0
- package/Models/DatabaseModels/NetworkSiteType.ts +499 -0
- package/Models/DatabaseModels/ServiceLevelObjective.ts +1106 -0
- package/Models/DatabaseModels/ServiceLevelObjectiveBurnRateRule.ts +762 -0
- package/Models/DatabaseModels/ServiceLevelObjectiveOwnerTeam.ts +444 -0
- package/Models/DatabaseModels/ServiceLevelObjectiveOwnerUser.ts +443 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784757142154-AddNetworkSiteHierarchyAndEndpoints.ts +359 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784897317860-AddNetworkSiteAlerting.ts +48 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784970388777-AddNetworkDevicePollingColumns.ts +65 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784986826214-AddNetworkSiteTypeTable.ts +88 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784987015619-AddServiceLevelObjective.ts +391 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +10 -0
- package/Server/Services/AnalyticsDatabaseService.ts +38 -10
- package/Server/Services/Index.ts +24 -0
- package/Server/Services/KubernetesCostAllocationService.ts +14 -0
- package/Server/Services/MetricService.ts +21 -2
- package/Server/Services/MonitorService.ts +22 -0
- package/Server/Services/NetworkDeviceService.ts +438 -2
- package/Server/Services/NetworkEndpointService.ts +414 -0
- package/Server/Services/NetworkSiteAssignmentRuleService.ts +98 -0
- package/Server/Services/NetworkSiteLinkService.ts +10 -0
- package/Server/Services/NetworkSiteService.ts +1254 -0
- package/Server/Services/NetworkSiteStatusTimelineService.ts +10 -0
- package/Server/Services/NetworkSiteTypeService.ts +10 -0
- package/Server/Services/ProjectService.ts +122 -2
- package/Server/Services/ServiceLevelObjectiveBurnRateRuleService.ts +457 -0
- package/Server/Services/ServiceLevelObjectiveOwnerTeamService.ts +10 -0
- package/Server/Services/ServiceLevelObjectiveOwnerUserService.ts +10 -0
- package/Server/Services/ServiceLevelObjectiveService.ts +677 -0
- package/Server/Services/SloHistoryService.ts +101 -0
- package/Server/Services/UserNotificationSettingService.ts +37 -0
- package/Server/Types/AnalyticsDatabase/AggregateBy.ts +9 -0
- package/Server/Types/Database/Permissions/OwnerTableRegistry.ts +15 -0
- package/Server/Utils/AnalyticsDatabase/Statement.ts +39 -3
- package/Server/Utils/AnalyticsDatabase/StatementGenerator.ts +128 -52
- package/Server/Utils/Memory.ts +9 -1
- package/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.ts +190 -12
- package/Server/Utils/Monitor/Data/OuiVendors.json +6920 -0
- package/Server/Utils/Monitor/DnsResolutionCache.ts +129 -0
- package/Server/Utils/Monitor/MonitorResource.ts +4 -30
- package/Server/Utils/Monitor/NetworkDeviceHydrationUtil.ts +214 -39
- package/Server/Utils/Monitor/NetworkDeviceMetricUtil.ts +343 -0
- package/Server/Utils/Monitor/NetworkDeviceWalkUtil.ts +251 -0
- package/Server/Utils/Monitor/NetworkInventoryUtil.ts +176 -142
- package/Server/Utils/Monitor/OuiLookupUtil.ts +49 -0
- package/Server/Utils/Monitor/SnmpInterfaceRateUtil.ts +17 -13
- package/Server/Utils/WhatsAppTemplateUtil.ts +7 -3
- package/Tests/Models/AnalyticsModels/AnalyticsBaseModel.test.ts +122 -0
- package/Tests/Models/AnalyticsModels/KubernetesCostAllocation.test.ts +135 -0
- package/Tests/Models/NetworkSiteHierarchy.test.ts +134 -0
- package/Tests/Server/Services/AnalyticsDatabaseService.test.ts +239 -0
- package/Tests/Server/Services/KubernetesCostAllocationAggregate.test.ts +338 -0
- package/Tests/Server/Services/MetricServiceAggregate.test.ts +142 -0
- package/Tests/Server/Services/NetworkDeviceSiteAssignment.test.ts +484 -0
- package/Tests/Server/Services/NetworkEndpointServiceUpsert.test.ts +686 -0
- package/Tests/Server/Services/NetworkSiteAssignmentRuleService.test.ts +185 -0
- package/Tests/Server/Services/NetworkSiteService.test.ts +1354 -0
- package/Tests/Server/Services/ServiceLevelObjectiveBurnRateRuleService.test.ts +1313 -0
- package/Tests/Server/Services/ServiceLevelObjectiveService.test.ts +1988 -0
- package/Tests/Server/Utils/AnalyticsDatabase/ClusterAwareSchema.test.ts +164 -3
- package/Tests/Server/Utils/AnalyticsDatabase/Statement.test.ts +22 -0
- package/Tests/Server/Utils/AnalyticsDatabase/StatementGenerator.test.ts +503 -0
- package/Tests/Server/Utils/Encryption.test.ts +70 -0
- package/Tests/Server/Utils/FileAttachmentMarkdownUtil.test.ts +225 -0
- package/Tests/Server/Utils/JsonWebToken.test.ts +175 -0
- package/Tests/Server/Utils/LocalFile.test.ts +258 -0
- package/Tests/Server/Utils/Memory.test.ts +213 -0
- package/Tests/Server/Utils/Monitor/Criteria/LogMonitorCriteria.test.ts +30 -0
- package/Tests/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.test.ts +385 -0
- package/Tests/Server/Utils/Monitor/DnsResolutionCache.test.ts +194 -0
- package/Tests/Server/Utils/Monitor/NetworkDeviceHydrationUtil.test.ts +155 -0
- package/Tests/Server/Utils/Monitor/NetworkDeviceWalkUtil.test.ts +600 -0
- package/Tests/Server/Utils/Monitor/NetworkInventoryUtil.test.ts +151 -124
- package/Tests/Server/Utils/Monitor/SnmpInterfaceRateUtil.test.ts +496 -0
- package/Tests/Server/Utils/MonitorCriteriaDataExtractor.test.ts +175 -0
- package/Tests/Server/Utils/MonitorCriteriaMessageFormatter.test.ts +282 -0
- package/Tests/Server/Utils/OuiLookupUtil.test.ts +59 -0
- package/Tests/Server/Utils/SeriesResourceLabels.test.ts +117 -0
- package/Tests/Server/Utils/StackTraceParser.test.ts +370 -0
- package/Tests/Server/Utils/Stream.test.ts +87 -0
- package/Tests/Server/Utils/ValidateGlobalProviderProjectTeams.test.ts +221 -0
- package/Tests/Server/Utils/WhatsAppTemplateUtil.test.ts +199 -0
- package/Tests/Types/Database/CompareOperatorWireSerialization.test.ts +33 -0
- package/Tests/Types/Email.test.ts +198 -0
- package/Tests/Types/HashCode.test.ts +41 -0
- package/Tests/Types/Kubernetes/KubernetesObjectParser.test.ts +177 -0
- package/Tests/Types/Log/LogQueryParser.test.ts +186 -0
- package/Tests/Types/Log/LogQueryToFilter.test.ts +111 -0
- package/Tests/Types/Monitor/MonitorStepNetworkDeviceMonitor.test.ts +141 -1
- package/Tests/Types/Monitor/MonitorType.test.ts +59 -1
- package/Tests/Types/Monitor/NetworkDeviceAlertPack.test.ts +97 -0
- package/Tests/Types/Monitor/SnmpEndpointDiscovery.test.ts +151 -0
- package/Tests/Types/Monitor/SnmpVendorTemplate.test.ts +110 -6
- package/Tests/Types/NetworkSite/DefaultNetworkSiteType.test.ts +129 -0
- package/Tests/Types/SerializableObjectDictionary.test.ts +166 -0
- package/Tests/Types/Time/RangeStartAndEndDateTime.test.ts +98 -0
- package/Tests/Types/WebsiteRequest.test.ts +230 -0
- package/Tests/UI/Components/EntityFilterRoundTrip.test.tsx +103 -0
- package/Tests/UI/Components/ModelTable/BaseModelTableUrlState.test.tsx +612 -0
- package/Tests/UI/Components/ModelTable/FilterDataToQuery.test.ts +275 -0
- package/Tests/UI/Utils/LogExport.test.ts +159 -0
- package/Tests/UI/Utils/Navigation.test.ts +183 -0
- package/Tests/UI/Utils/TableFilterUrlState.test.ts +539 -0
- package/Tests/UI/Utils/TableViewUrlState.test.ts +272 -0
- package/Tests/Utils/Base64.test.ts +51 -0
- package/Tests/Utils/Boolean.test.ts +76 -0
- package/Tests/Utils/Crypto.test.ts +48 -0
- package/Tests/Utils/Dashboard/DashboardSloComponent.test.ts +259 -0
- package/Tests/Utils/Dashboard/ModelQueryVariableInterpolation.test.ts +162 -0
- package/Tests/Utils/Dashboard/VariableInterpolation.test.ts +197 -0
- package/Tests/Utils/Enum.test.ts +54 -0
- package/Tests/Utils/IpCanonicalUtil.test.ts +85 -0
- package/Tests/Utils/Metrics/MetricSeriesFingerprint.test.ts +160 -0
- package/Tests/Utils/Monitor/EndpointAttachmentUtil.test.ts +836 -0
- package/Tests/Utils/Monitor/MonitorMetricType.test.ts +218 -0
- package/Tests/Utils/Monitor/NetworkTopologyUtil.test.ts +447 -0
- package/Tests/Utils/NetworkSite/CidrMatchUtil.test.ts +440 -0
- package/Tests/Utils/NetworkSite/MaterializedPathUtil.test.ts +205 -0
- package/Tests/Utils/NetworkSite/SiteStatusRollupUtil.test.ts +221 -0
- package/Tests/Utils/NetworkSite/SiteUptimeUtil.test.ts +283 -0
- package/Tests/Utils/ObjectUtil.test.ts +30 -0
- package/Tests/Utils/Slo/SloStatusColor.test.ts +89 -0
- package/Tests/Utils/Slo/SloUtil.test.ts +1980 -0
- package/Tests/Utils/Slo/SloWidgetFormat.test.ts +605 -0
- package/Tests/Utils/TechStack.test.ts +50 -0
- package/Tests/Utils/Traces/CriticalPath.test.ts +178 -0
- package/Tests/Utils/ValueFormatter.test.ts +305 -0
- package/Types/AnalyticsDatabase/AnalyticsTableName.ts +10 -0
- package/Types/AnalyticsDatabase/TableColumn.ts +23 -0
- package/Types/BaseDatabase/EqualTo.ts +9 -1
- package/Types/BaseDatabase/EqualToOrNull.ts +9 -1
- package/Types/BaseDatabase/NotEqual.ts +9 -1
- package/Types/Dashboard/DashboardComponentType.ts +1 -0
- package/Types/Dashboard/DashboardComponents/ComponentArgument.ts +1 -0
- package/Types/Dashboard/DashboardComponents/DashboardSloComponent.ts +42 -0
- package/Types/Dashboard/DashboardTemplates.ts +214 -0
- package/Types/Email/EmailTemplateType.ts +2 -0
- package/Types/Kubernetes/KubernetesCostIngest.ts +79 -0
- package/Types/Monitor/CriteriaFilter.ts +9 -0
- package/Types/Monitor/MonitorStep.ts +5 -8
- package/Types/Monitor/MonitorStepNetworkDeviceMonitor.ts +27 -5
- package/Types/Monitor/MonitorType.ts +15 -5
- package/Types/Monitor/SnmpMonitor/ArpEntry.ts +14 -0
- package/Types/Monitor/SnmpMonitor/FdbEntry.ts +18 -0
- package/Types/Monitor/SnmpMonitor/NetworkDeviceAlertPack.ts +10 -3
- package/Types/Monitor/SnmpMonitor/NetworkTopology.ts +31 -5
- package/Types/Monitor/SnmpMonitor/SnmpMonitorResponse.ts +12 -0
- package/Types/Monitor/SnmpMonitor/SnmpVendorTemplate.ts +231 -3
- package/Types/NetworkSite/DefaultNetworkSiteType.ts +20 -0
- package/Types/NotificationSetting/NotificationSettingEventType.ts +4 -0
- package/Types/Permission.ts +449 -0
- package/Types/ServiceLevelObjective/SliType.ts +6 -0
- package/Types/ServiceLevelObjective/SloMultiMonitorMode.ts +6 -0
- package/Types/ServiceLevelObjective/SloStatus.ts +9 -0
- package/Types/ServiceLevelObjective/SloWindowType.ts +6 -0
- package/Types/Telemetry/ServiceType.ts +1 -0
- package/UI/Components/Filters/EntityFilter.tsx +16 -0
- package/UI/Components/Filters/FilterViewer.tsx +22 -5
- package/UI/Components/List/List.tsx +8 -0
- package/UI/Components/ModelTable/BaseModelTable.tsx +309 -106
- package/UI/Components/ModelTable/FilterDataToQuery.ts +172 -0
- package/UI/Components/Navbar/NavBar.tsx +16 -2
- package/UI/Components/Navbar/NavBarMenuModal.tsx +3 -3
- package/UI/Utils/Navigation.ts +10 -0
- package/UI/Utils/TableFilterUrlState.ts +204 -17
- package/UI/Utils/TableViewUrlState.ts +165 -0
- package/Utils/Dashboard/Components/DashboardSloComponent.ts +114 -0
- package/Utils/Dashboard/Components/Index.ts +7 -0
- package/Utils/IpCanonicalUtil.ts +134 -0
- package/Utils/Monitor/EndpointAttachmentUtil.ts +508 -0
- package/Utils/Monitor/NetworkTopologyUtil.ts +157 -5
- package/Utils/NetworkSite/CidrMatchUtil.ts +296 -0
- package/Utils/NetworkSite/MaterializedPathUtil.ts +115 -0
- package/Utils/NetworkSite/SiteStatusRollupUtil.ts +97 -0
- package/Utils/NetworkSite/SiteUptimeUtil.ts +111 -0
- package/Utils/Slo/SloStatusColor.ts +54 -0
- package/Utils/Slo/SloUtil.ts +637 -0
- package/Utils/Slo/SloWidgetFormat.ts +383 -0
- package/build/dist/Models/AnalyticsModels/AnalyticsBaseModel/AnalyticsBaseModel.js +25 -20
- package/build/dist/Models/AnalyticsModels/AnalyticsBaseModel/AnalyticsBaseModel.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/Index.js +4 -0
- package/build/dist/Models/AnalyticsModels/Index.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/KubernetesCostAllocation.js +713 -0
- package/build/dist/Models/AnalyticsModels/KubernetesCostAllocation.js.map +1 -0
- package/build/dist/Models/AnalyticsModels/MetricBaselineHourly.js +2 -0
- package/build/dist/Models/AnalyticsModels/MetricBaselineHourly.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1m.js +5 -2
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1m.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByContainer.js +5 -2
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByContainer.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByHostV2.js +5 -2
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByHostV2.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByK8sCluster.js +5 -2
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByK8sCluster.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByService.js +5 -2
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByService.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/NetworkFlow.js +44 -0
- package/build/dist/Models/AnalyticsModels/NetworkFlow.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/SloHistory.js +215 -0
- package/build/dist/Models/AnalyticsModels/SloHistory.js.map +1 -0
- package/build/dist/Models/DatabaseModels/Index.js +20 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDevice.js +458 -6
- package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js +0 -6
- package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkEndpoint.js +779 -0
- package/build/dist/Models/DatabaseModels/NetworkEndpoint.js.map +1 -0
- package/build/dist/Models/DatabaseModels/NetworkSite.js +1180 -0
- package/build/dist/Models/DatabaseModels/NetworkSite.js.map +1 -0
- package/build/dist/Models/DatabaseModels/NetworkSiteAssignmentRule.js +534 -0
- package/build/dist/Models/DatabaseModels/NetworkSiteAssignmentRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/NetworkSiteLink.js +629 -0
- package/build/dist/Models/DatabaseModels/NetworkSiteLink.js.map +1 -0
- package/build/dist/Models/DatabaseModels/NetworkSiteStatusTimeline.js +538 -0
- package/build/dist/Models/DatabaseModels/NetworkSiteStatusTimeline.js.map +1 -0
- package/build/dist/Models/DatabaseModels/NetworkSiteType.js +522 -0
- package/build/dist/Models/DatabaseModels/NetworkSiteType.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ServiceLevelObjective.js +1124 -0
- package/build/dist/Models/DatabaseModels/ServiceLevelObjective.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveBurnRateRule.js +769 -0
- package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveBurnRateRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveOwnerTeam.js +460 -0
- package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveOwnerTeam.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveOwnerUser.js +459 -0
- package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveOwnerUser.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784757142154-AddNetworkSiteHierarchyAndEndpoints.js +130 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784757142154-AddNetworkSiteHierarchyAndEndpoints.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784897317860-AddNetworkSiteAlerting.js +31 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784897317860-AddNetworkSiteAlerting.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784970388777-AddNetworkDevicePollingColumns.js +36 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784970388777-AddNetworkDevicePollingColumns.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784986826214-AddNetworkSiteTypeTable.js +49 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784986826214-AddNetworkSiteTypeTable.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784987015619-AddServiceLevelObjective.js +140 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784987015619-AddServiceLevelObjective.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +10 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Services/AnalyticsDatabaseService.js +32 -7
- package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +24 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/KubernetesCostAllocationService.js +12 -0
- package/build/dist/Server/Services/KubernetesCostAllocationService.js.map +1 -0
- package/build/dist/Server/Services/MetricService.js +21 -3
- package/build/dist/Server/Services/MetricService.js.map +1 -1
- package/build/dist/Server/Services/MonitorService.js +19 -0
- package/build/dist/Server/Services/MonitorService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceService.js +351 -1
- package/build/dist/Server/Services/NetworkDeviceService.js.map +1 -1
- package/build/dist/Server/Services/NetworkEndpointService.js +319 -0
- package/build/dist/Server/Services/NetworkEndpointService.js.map +1 -0
- package/build/dist/Server/Services/NetworkSiteAssignmentRuleService.js +90 -0
- package/build/dist/Server/Services/NetworkSiteAssignmentRuleService.js.map +1 -0
- package/build/dist/Server/Services/NetworkSiteLinkService.js +9 -0
- package/build/dist/Server/Services/NetworkSiteLinkService.js.map +1 -0
- package/build/dist/Server/Services/NetworkSiteService.js +1038 -0
- package/build/dist/Server/Services/NetworkSiteService.js.map +1 -0
- package/build/dist/Server/Services/NetworkSiteStatusTimelineService.js +9 -0
- package/build/dist/Server/Services/NetworkSiteStatusTimelineService.js.map +1 -0
- package/build/dist/Server/Services/NetworkSiteTypeService.js +9 -0
- package/build/dist/Server/Services/NetworkSiteTypeService.js.map +1 -0
- package/build/dist/Server/Services/ProjectService.js +98 -2
- package/build/dist/Server/Services/ProjectService.js.map +1 -1
- package/build/dist/Server/Services/ServiceLevelObjectiveBurnRateRuleService.js +358 -0
- package/build/dist/Server/Services/ServiceLevelObjectiveBurnRateRuleService.js.map +1 -0
- package/build/dist/Server/Services/ServiceLevelObjectiveOwnerTeamService.js +9 -0
- package/build/dist/Server/Services/ServiceLevelObjectiveOwnerTeamService.js.map +1 -0
- package/build/dist/Server/Services/ServiceLevelObjectiveOwnerUserService.js +9 -0
- package/build/dist/Server/Services/ServiceLevelObjectiveOwnerUserService.js.map +1 -0
- package/build/dist/Server/Services/ServiceLevelObjectiveService.js +582 -0
- package/build/dist/Server/Services/ServiceLevelObjectiveService.js.map +1 -0
- package/build/dist/Server/Services/SloHistoryService.js +77 -0
- package/build/dist/Server/Services/SloHistoryService.js.map +1 -0
- package/build/dist/Server/Services/UserNotificationSettingService.js +20 -0
- package/build/dist/Server/Services/UserNotificationSettingService.js.map +1 -1
- package/build/dist/Server/Types/AnalyticsDatabase/AggregateBy.js +9 -0
- package/build/dist/Server/Types/AnalyticsDatabase/AggregateBy.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js +15 -0
- package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js.map +1 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/Statement.js +31 -0
- package/build/dist/Server/Utils/AnalyticsDatabase/Statement.js.map +1 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js +105 -52
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js.map +1 -1
- package/build/dist/Server/Utils/Memory.js +9 -1
- package/build/dist/Server/Utils/Memory.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js +132 -10
- package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Data/OuiVendors.json +6920 -0
- package/build/dist/Server/Utils/Monitor/DnsResolutionCache.js +77 -0
- package/build/dist/Server/Utils/Monitor/DnsResolutionCache.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/MonitorResource.js +21 -41
- package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/NetworkDeviceHydrationUtil.js +152 -40
- package/build/dist/Server/Utils/Monitor/NetworkDeviceHydrationUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/NetworkDeviceMetricUtil.js +262 -0
- package/build/dist/Server/Utils/Monitor/NetworkDeviceMetricUtil.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/NetworkDeviceWalkUtil.js +201 -0
- package/build/dist/Server/Utils/Monitor/NetworkDeviceWalkUtil.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js +152 -120
- package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/OuiLookupUtil.js +44 -0
- package/build/dist/Server/Utils/Monitor/OuiLookupUtil.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/SnmpInterfaceRateUtil.js +10 -10
- package/build/dist/Server/Utils/Monitor/SnmpInterfaceRateUtil.js.map +1 -1
- package/build/dist/Server/Utils/WhatsAppTemplateUtil.js +5 -0
- package/build/dist/Server/Utils/WhatsAppTemplateUtil.js.map +1 -1
- package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js +10 -0
- package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js.map +1 -1
- package/build/dist/Types/AnalyticsDatabase/TableColumn.js +7 -0
- package/build/dist/Types/AnalyticsDatabase/TableColumn.js.map +1 -1
- package/build/dist/Types/BaseDatabase/EqualTo.js +9 -1
- package/build/dist/Types/BaseDatabase/EqualTo.js.map +1 -1
- package/build/dist/Types/BaseDatabase/EqualToOrNull.js +9 -1
- package/build/dist/Types/BaseDatabase/EqualToOrNull.js.map +1 -1
- package/build/dist/Types/BaseDatabase/NotEqual.js +9 -1
- package/build/dist/Types/BaseDatabase/NotEqual.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardComponentType.js +1 -0
- package/build/dist/Types/Dashboard/DashboardComponentType.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js +1 -0
- package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardSloComponent.js +23 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardSloComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardTemplates.js +205 -0
- package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
- package/build/dist/Types/Email/EmailTemplateType.js +1 -0
- package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
- package/build/dist/Types/Kubernetes/KubernetesCostIngest.js +21 -0
- package/build/dist/Types/Kubernetes/KubernetesCostIngest.js.map +1 -0
- package/build/dist/Types/Monitor/CriteriaFilter.js +1 -0
- package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStep.js +5 -5
- package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStepNetworkDeviceMonitor.js +8 -0
- package/build/dist/Types/Monitor/MonitorStepNetworkDeviceMonitor.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorType.js +15 -5
- package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
- package/build/dist/Types/Monitor/SnmpMonitor/ArpEntry.js +2 -0
- package/build/dist/Types/Monitor/SnmpMonitor/ArpEntry.js.map +1 -0
- package/build/dist/Types/Monitor/SnmpMonitor/FdbEntry.js +2 -0
- package/build/dist/Types/Monitor/SnmpMonitor/FdbEntry.js.map +1 -0
- package/build/dist/Types/Monitor/SnmpMonitor/NetworkDeviceAlertPack.js +9 -3
- package/build/dist/Types/Monitor/SnmpMonitor/NetworkDeviceAlertPack.js.map +1 -1
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpVendorTemplate.js +217 -3
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpVendorTemplate.js.map +1 -1
- package/build/dist/Types/NetworkSite/DefaultNetworkSiteType.js +21 -0
- package/build/dist/Types/NetworkSite/DefaultNetworkSiteType.js.map +1 -0
- package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js +3 -0
- package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js.map +1 -1
- package/build/dist/Types/Permission.js +409 -0
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/ServiceLevelObjective/SliType.js +7 -0
- package/build/dist/Types/ServiceLevelObjective/SliType.js.map +1 -0
- package/build/dist/Types/ServiceLevelObjective/SloMultiMonitorMode.js +7 -0
- package/build/dist/Types/ServiceLevelObjective/SloMultiMonitorMode.js.map +1 -0
- package/build/dist/Types/ServiceLevelObjective/SloStatus.js +10 -0
- package/build/dist/Types/ServiceLevelObjective/SloStatus.js.map +1 -0
- package/build/dist/Types/ServiceLevelObjective/SloWindowType.js +7 -0
- package/build/dist/Types/ServiceLevelObjective/SloWindowType.js.map +1 -0
- package/build/dist/Types/Telemetry/ServiceType.js +1 -0
- package/build/dist/Types/Telemetry/ServiceType.js.map +1 -1
- package/build/dist/UI/Components/Filters/EntityFilter.js +15 -0
- package/build/dist/UI/Components/Filters/EntityFilter.js.map +1 -1
- package/build/dist/UI/Components/Filters/FilterViewer.js +19 -4
- package/build/dist/UI/Components/Filters/FilterViewer.js.map +1 -1
- package/build/dist/UI/Components/List/List.js +1 -1
- package/build/dist/UI/Components/List/List.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js +235 -89
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/FilterDataToQuery.js +96 -0
- package/build/dist/UI/Components/ModelTable/FilterDataToQuery.js.map +1 -0
- package/build/dist/UI/Components/Navbar/NavBar.js +14 -2
- package/build/dist/UI/Components/Navbar/NavBar.js.map +1 -1
- package/build/dist/UI/Components/Navbar/NavBarMenuModal.js +3 -2
- package/build/dist/UI/Components/Navbar/NavBarMenuModal.js.map +1 -1
- package/build/dist/UI/Utils/Navigation.js +9 -0
- package/build/dist/UI/Utils/Navigation.js.map +1 -1
- package/build/dist/UI/Utils/TableFilterUrlState.js +159 -15
- package/build/dist/UI/Utils/TableFilterUrlState.js.map +1 -1
- package/build/dist/UI/Utils/TableViewUrlState.js +103 -0
- package/build/dist/UI/Utils/TableViewUrlState.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardSloComponent.js +93 -0
- package/build/dist/Utils/Dashboard/Components/DashboardSloComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/Index.js +4 -0
- package/build/dist/Utils/Dashboard/Components/Index.js.map +1 -1
- package/build/dist/Utils/IpCanonicalUtil.js +110 -0
- package/build/dist/Utils/IpCanonicalUtil.js.map +1 -0
- package/build/dist/Utils/Monitor/EndpointAttachmentUtil.js +311 -0
- package/build/dist/Utils/Monitor/EndpointAttachmentUtil.js.map +1 -0
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js +98 -5
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js.map +1 -1
- package/build/dist/Utils/NetworkSite/CidrMatchUtil.js +222 -0
- package/build/dist/Utils/NetworkSite/CidrMatchUtil.js.map +1 -0
- package/build/dist/Utils/NetworkSite/MaterializedPathUtil.js +89 -0
- package/build/dist/Utils/NetworkSite/MaterializedPathUtil.js.map +1 -0
- package/build/dist/Utils/NetworkSite/SiteStatusRollupUtil.js +60 -0
- package/build/dist/Utils/NetworkSite/SiteStatusRollupUtil.js.map +1 -0
- package/build/dist/Utils/NetworkSite/SiteUptimeUtil.js +76 -0
- package/build/dist/Utils/NetworkSite/SiteUptimeUtil.js.map +1 -0
- package/build/dist/Utils/Slo/SloStatusColor.js +18 -0
- package/build/dist/Utils/Slo/SloStatusColor.js.map +1 -0
- package/build/dist/Utils/Slo/SloUtil.js +393 -0
- package/build/dist/Utils/Slo/SloUtil.js.map +1 -0
- package/build/dist/Utils/Slo/SloWidgetFormat.js +174 -0
- package/build/dist/Utils/Slo/SloWidgetFormat.js.map +1 -0
- package/package.json +2 -2
- package/Types/Dashboard/DashboardComponents/Index.ts +0 -7
- package/build/dist/Types/Dashboard/DashboardComponents/Index.js +0 -8
- package/build/dist/Types/Dashboard/DashboardComponents/Index.js.map +0 -1
|
@@ -5,7 +5,7 @@ import Select from "../../Types/AnalyticsDatabase/Select";
|
|
|
5
5
|
import Sort from "../../Types/AnalyticsDatabase/Sort";
|
|
6
6
|
import UpdateBy from "../../Types/AnalyticsDatabase/UpdateBy";
|
|
7
7
|
import logger from "../Logger";
|
|
8
|
-
import { SQL, Statement } from "./Statement";
|
|
8
|
+
import { QualifiedColumn, SQL, Statement } from "./Statement";
|
|
9
9
|
import {
|
|
10
10
|
adaptTableSettingsForStorage,
|
|
11
11
|
getDistributedEngine,
|
|
@@ -69,6 +69,8 @@ export interface EntityScopeQueryValue {
|
|
|
69
69
|
attributeValue: string;
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
+
const SIMPLE_AGGREGATE_FUNCTION_NAME_REGEX: RegExp = /^[A-Za-z_][A-Za-z0-9_]*$/;
|
|
73
|
+
|
|
72
74
|
export default class StatementGenerator<TBaseModel extends AnalyticsBaseModel> {
|
|
73
75
|
public model!: TBaseModel;
|
|
74
76
|
public modelType!: { new (): TBaseModel };
|
|
@@ -88,6 +90,7 @@ export default class StatementGenerator<TBaseModel extends AnalyticsBaseModel> {
|
|
|
88
90
|
mapColumn: AnalyticsTableColumn;
|
|
89
91
|
mapKey: string;
|
|
90
92
|
skip?: boolean;
|
|
93
|
+
tableAlias?: string | undefined;
|
|
91
94
|
}): void {
|
|
92
95
|
const mapKeysColumnName: string | undefined = input.mapColumn.mapKeysColumn;
|
|
93
96
|
|
|
@@ -102,13 +105,17 @@ export default class StatementGenerator<TBaseModel extends AnalyticsBaseModel> {
|
|
|
102
105
|
return;
|
|
103
106
|
}
|
|
104
107
|
|
|
108
|
+
const keysColumnRef: string | QualifiedColumn = input.tableAlias
|
|
109
|
+
? new QualifiedColumn(input.tableAlias, mapKeysColumn.key)
|
|
110
|
+
: mapKeysColumn.key;
|
|
111
|
+
|
|
105
112
|
/*
|
|
106
113
|
* Keep empty key-array rows eligible so data written before the
|
|
107
114
|
* denormalized column existed, or by a lagging ingest path, is still
|
|
108
115
|
* checked by the canonical map['key'] predicate that follows.
|
|
109
116
|
*/
|
|
110
117
|
input.whereStatement.append(
|
|
111
|
-
SQL`AND (empty(${
|
|
118
|
+
SQL`AND (empty(${keysColumnRef}) OR hasAny(${keysColumnRef}, ${{
|
|
112
119
|
value: [input.mapKey],
|
|
113
120
|
type: TableColumnType.ArrayText,
|
|
114
121
|
}})) `,
|
|
@@ -426,11 +433,35 @@ export default class StatementGenerator<TBaseModel extends AnalyticsBaseModel> {
|
|
|
426
433
|
}
|
|
427
434
|
|
|
428
435
|
/**
|
|
429
|
-
* Conditions to append to "WHERE TRUE"
|
|
436
|
+
* Conditions to append to "WHERE TRUE".
|
|
437
|
+
*
|
|
438
|
+
* Compiles a Query into an `AND col <op> ...` chain. When
|
|
439
|
+
* `options.tableAlias` is set, every column reference is emitted
|
|
440
|
+
* table-qualified (`alias.col`). Builders whose SELECT aliases an
|
|
441
|
+
* expression to a real column name (aggregate statements — see
|
|
442
|
+
* AggregateUtil.buildBucketTimestampSelect) MUST pass the alias of the
|
|
443
|
+
* table the WHERE executes against: ClickHouse substitutes SELECT
|
|
444
|
+
* aliases into same-level unqualified WHERE references, which turns a
|
|
445
|
+
* `Total` aggregation's `min(col) as col` into an ILLEGAL_AGGREGATION
|
|
446
|
+
* error and silently snaps bucketed time filters to bucket boundaries.
|
|
447
|
+
* Statements that embed this WHERE against a different table (MV
|
|
448
|
+
* paths, cascade deletes) must stay unqualified.
|
|
430
449
|
*/
|
|
431
|
-
public toWhereStatement(
|
|
450
|
+
public toWhereStatement(
|
|
451
|
+
query: Query<TBaseModel>,
|
|
452
|
+
options?: { tableAlias?: string | undefined },
|
|
453
|
+
): Statement {
|
|
432
454
|
const whereStatement: Statement = new Statement();
|
|
433
455
|
|
|
456
|
+
type ColumnRefFunction = (columnName: string) => string | QualifiedColumn;
|
|
457
|
+
const columnRef: ColumnRefFunction = (
|
|
458
|
+
columnName: string,
|
|
459
|
+
): string | QualifiedColumn => {
|
|
460
|
+
return options?.tableAlias
|
|
461
|
+
? new QualifiedColumn(options.tableAlias, columnName)
|
|
462
|
+
: columnName;
|
|
463
|
+
};
|
|
464
|
+
|
|
434
465
|
let first: boolean = true;
|
|
435
466
|
for (const key in query) {
|
|
436
467
|
const value: any = query[key];
|
|
@@ -474,7 +505,7 @@ export default class StatementGenerator<TBaseModel extends AnalyticsBaseModel> {
|
|
|
474
505
|
whereStatement.append(SQL` OR `);
|
|
475
506
|
}
|
|
476
507
|
whereStatement.append(
|
|
477
|
-
SQL`${col.key} ILIKE ${{
|
|
508
|
+
SQL`${columnRef(col.key)} ILIKE ${{
|
|
478
509
|
value: new Search<string>(ms.value),
|
|
479
510
|
type: col.type,
|
|
480
511
|
}}`,
|
|
@@ -534,10 +565,10 @@ export default class StatementGenerator<TBaseModel extends AnalyticsBaseModel> {
|
|
|
534
565
|
|
|
535
566
|
if (scopeEntityKeys.length > 0 && hasAttributeFallback) {
|
|
536
567
|
whereStatement.append(
|
|
537
|
-
SQL`AND (hasAny(${entityKeysColumn.key}, ${{
|
|
568
|
+
SQL`AND (hasAny(${columnRef(entityKeysColumn.key)}, ${{
|
|
538
569
|
value: scopeEntityKeys,
|
|
539
570
|
type: TableColumnType.ArrayText,
|
|
540
|
-
}}) OR ${attributesColumn!.key}[${{
|
|
571
|
+
}}) OR ${columnRef(attributesColumn!.key)}[${{
|
|
541
572
|
value: scope.attributeKey,
|
|
542
573
|
type: TableColumnType.Text,
|
|
543
574
|
}}] = ${{
|
|
@@ -547,14 +578,14 @@ export default class StatementGenerator<TBaseModel extends AnalyticsBaseModel> {
|
|
|
547
578
|
);
|
|
548
579
|
} else if (scopeEntityKeys.length > 0) {
|
|
549
580
|
whereStatement.append(
|
|
550
|
-
SQL`AND hasAny(${entityKeysColumn.key}, ${{
|
|
581
|
+
SQL`AND hasAny(${columnRef(entityKeysColumn.key)}, ${{
|
|
551
582
|
value: scopeEntityKeys,
|
|
552
583
|
type: TableColumnType.ArrayText,
|
|
553
584
|
}})`,
|
|
554
585
|
);
|
|
555
586
|
} else {
|
|
556
587
|
whereStatement.append(
|
|
557
|
-
SQL`AND ${attributesColumn!.key}[${{
|
|
588
|
+
SQL`AND ${columnRef(attributesColumn!.key)}[${{
|
|
558
589
|
value: scope.attributeKey,
|
|
559
590
|
type: TableColumnType.Text,
|
|
560
591
|
}}] = ${{
|
|
@@ -582,66 +613,66 @@ export default class StatementGenerator<TBaseModel extends AnalyticsBaseModel> {
|
|
|
582
613
|
|
|
583
614
|
if (value instanceof Search) {
|
|
584
615
|
whereStatement.append(
|
|
585
|
-
SQL`AND ${key} ILIKE ${{
|
|
616
|
+
SQL`AND ${columnRef(key)} ILIKE ${{
|
|
586
617
|
value: value,
|
|
587
618
|
type: tableColumn.type,
|
|
588
619
|
}}`,
|
|
589
620
|
);
|
|
590
621
|
} else if (value instanceof NotEqual) {
|
|
591
622
|
whereStatement.append(
|
|
592
|
-
SQL`AND ${key} != ${{
|
|
623
|
+
SQL`AND ${columnRef(key)} != ${{
|
|
593
624
|
value: value,
|
|
594
625
|
type: tableColumn.type,
|
|
595
626
|
}}`,
|
|
596
627
|
);
|
|
597
628
|
} else if (value instanceof GreaterThan) {
|
|
598
629
|
whereStatement.append(
|
|
599
|
-
SQL`AND ${key} > ${{
|
|
630
|
+
SQL`AND ${columnRef(key)} > ${{
|
|
600
631
|
value: value,
|
|
601
632
|
type: tableColumn.type,
|
|
602
633
|
}}`,
|
|
603
634
|
);
|
|
604
635
|
} else if (value instanceof LessThan) {
|
|
605
636
|
whereStatement.append(
|
|
606
|
-
SQL`AND ${key} < ${{
|
|
637
|
+
SQL`AND ${columnRef(key)} < ${{
|
|
607
638
|
value: value,
|
|
608
639
|
type: tableColumn.type,
|
|
609
640
|
}}`,
|
|
610
641
|
);
|
|
611
642
|
} else if (value instanceof LessThanOrEqual) {
|
|
612
643
|
whereStatement.append(
|
|
613
|
-
SQL`AND ${key} <= ${{
|
|
644
|
+
SQL`AND ${columnRef(key)} <= ${{
|
|
614
645
|
value: value,
|
|
615
646
|
type: tableColumn.type,
|
|
616
647
|
}}`,
|
|
617
648
|
);
|
|
618
649
|
} else if (value instanceof LessThanOrNull) {
|
|
619
650
|
whereStatement.append(
|
|
620
|
-
SQL`AND (${key} <= ${{
|
|
651
|
+
SQL`AND (${columnRef(key)} <= ${{
|
|
621
652
|
value: value,
|
|
622
653
|
type: tableColumn.type,
|
|
623
|
-
}} OR ${key} IS NULL)`,
|
|
654
|
+
}} OR ${columnRef(key)} IS NULL)`,
|
|
624
655
|
);
|
|
625
656
|
} else if (value instanceof GreaterThanOrNull) {
|
|
626
657
|
whereStatement.append(
|
|
627
|
-
SQL`AND (${key} >= ${{
|
|
658
|
+
SQL`AND (${columnRef(key)} >= ${{
|
|
628
659
|
value: value,
|
|
629
660
|
type: tableColumn.type,
|
|
630
|
-
}} OR ${key} IS NULL)`,
|
|
661
|
+
}} OR ${columnRef(key)} IS NULL)`,
|
|
631
662
|
);
|
|
632
663
|
} else if (value instanceof GreaterThanOrEqual) {
|
|
633
664
|
whereStatement.append(
|
|
634
|
-
SQL`AND ${key} >= ${{
|
|
665
|
+
SQL`AND ${columnRef(key)} >= ${{
|
|
635
666
|
value: value,
|
|
636
667
|
type: tableColumn.type,
|
|
637
668
|
}}`,
|
|
638
669
|
);
|
|
639
670
|
} else if (value instanceof InBetween) {
|
|
640
671
|
whereStatement.append(
|
|
641
|
-
SQL`AND ${key} >= ${{
|
|
672
|
+
SQL`AND ${columnRef(key)} >= ${{
|
|
642
673
|
value: value.startValue,
|
|
643
674
|
type: tableColumn.type,
|
|
644
|
-
}} AND ${key} <= ${{
|
|
675
|
+
}} AND ${columnRef(key)} <= ${{
|
|
645
676
|
value: value.endValue,
|
|
646
677
|
type: tableColumn.type,
|
|
647
678
|
}}`,
|
|
@@ -663,7 +694,7 @@ export default class StatementGenerator<TBaseModel extends AnalyticsBaseModel> {
|
|
|
663
694
|
((value as Includes).values as Array<string>) || [];
|
|
664
695
|
if (arrayIncludeValues.length > 0) {
|
|
665
696
|
whereStatement.append(
|
|
666
|
-
SQL`AND hasAny(${key}, ${{
|
|
697
|
+
SQL`AND hasAny(${columnRef(key)}, ${{
|
|
667
698
|
value: arrayIncludeValues,
|
|
668
699
|
type: TableColumnType.ArrayText,
|
|
669
700
|
}})`,
|
|
@@ -671,7 +702,7 @@ export default class StatementGenerator<TBaseModel extends AnalyticsBaseModel> {
|
|
|
671
702
|
}
|
|
672
703
|
} else if (value instanceof Includes) {
|
|
673
704
|
whereStatement.append(
|
|
674
|
-
SQL`AND ${key} IN ${{
|
|
705
|
+
SQL`AND ${columnRef(key)} IN ${{
|
|
675
706
|
value: value,
|
|
676
707
|
type: tableColumn.type,
|
|
677
708
|
}}`,
|
|
@@ -689,7 +720,7 @@ export default class StatementGenerator<TBaseModel extends AnalyticsBaseModel> {
|
|
|
689
720
|
((value as IncludesNone).values as Array<string>) || [];
|
|
690
721
|
if (arrayExcludeValues.length > 0) {
|
|
691
722
|
whereStatement.append(
|
|
692
|
-
SQL`AND NOT hasAny(${key}, ${{
|
|
723
|
+
SQL`AND NOT hasAny(${columnRef(key)}, ${{
|
|
693
724
|
value: arrayExcludeValues,
|
|
694
725
|
type: TableColumnType.ArrayText,
|
|
695
726
|
}})`,
|
|
@@ -705,7 +736,7 @@ export default class StatementGenerator<TBaseModel extends AnalyticsBaseModel> {
|
|
|
705
736
|
((value as IncludesNone).values as Array<string | ObjectID>) || [];
|
|
706
737
|
if (excludeValues.length > 0) {
|
|
707
738
|
whereStatement.append(
|
|
708
|
-
SQL`AND ${key} NOT IN ${{
|
|
739
|
+
SQL`AND ${columnRef(key)} NOT IN ${{
|
|
709
740
|
value: value,
|
|
710
741
|
type: tableColumn.type,
|
|
711
742
|
}}`,
|
|
@@ -713,9 +744,11 @@ export default class StatementGenerator<TBaseModel extends AnalyticsBaseModel> {
|
|
|
713
744
|
}
|
|
714
745
|
} else if (value instanceof IsNull) {
|
|
715
746
|
if (tableColumn.type === TableColumnType.Text) {
|
|
716
|
-
whereStatement.append(
|
|
747
|
+
whereStatement.append(
|
|
748
|
+
SQL`AND (${columnRef(key)} IS NULL OR ${columnRef(key)} = '')`,
|
|
749
|
+
);
|
|
717
750
|
} else {
|
|
718
|
-
whereStatement.append(SQL`AND ${key} IS NULL`);
|
|
751
|
+
whereStatement.append(SQL`AND ${columnRef(key)} IS NULL`);
|
|
719
752
|
}
|
|
720
753
|
} else if (
|
|
721
754
|
tableColumn.type === TableColumnType.MapStringString &&
|
|
@@ -764,10 +797,10 @@ export default class StatementGenerator<TBaseModel extends AnalyticsBaseModel> {
|
|
|
764
797
|
*/
|
|
765
798
|
if (mapEntry instanceof IsNull) {
|
|
766
799
|
whereStatement.append(
|
|
767
|
-
SQL`AND ((NOT mapContains(${key}, ${{
|
|
800
|
+
SQL`AND ((NOT mapContains(${columnRef(key)}, ${{
|
|
768
801
|
value: mapKey,
|
|
769
802
|
type: TableColumnType.Text,
|
|
770
|
-
}})) OR ${key}[${{
|
|
803
|
+
}})) OR ${columnRef(key)}[${{
|
|
771
804
|
value: mapKey,
|
|
772
805
|
type: TableColumnType.Text,
|
|
773
806
|
}}] = '')`,
|
|
@@ -780,12 +813,13 @@ export default class StatementGenerator<TBaseModel extends AnalyticsBaseModel> {
|
|
|
780
813
|
whereStatement,
|
|
781
814
|
mapColumn: tableColumn,
|
|
782
815
|
mapKey,
|
|
816
|
+
tableAlias: options?.tableAlias,
|
|
783
817
|
});
|
|
784
818
|
whereStatement.append(
|
|
785
|
-
SQL`AND mapContains(${key}, ${{
|
|
819
|
+
SQL`AND mapContains(${columnRef(key)}, ${{
|
|
786
820
|
value: mapKey,
|
|
787
821
|
type: TableColumnType.Text,
|
|
788
|
-
}}) AND ${key}[${{
|
|
822
|
+
}}) AND ${columnRef(key)}[${{
|
|
789
823
|
value: mapKey,
|
|
790
824
|
type: TableColumnType.Text,
|
|
791
825
|
}}] != ''`,
|
|
@@ -801,7 +835,7 @@ export default class StatementGenerator<TBaseModel extends AnalyticsBaseModel> {
|
|
|
801
835
|
}}) AND v ILIKE ${{
|
|
802
836
|
value: mapEntry as Search<string>,
|
|
803
837
|
type: TableColumnType.Text,
|
|
804
|
-
}}, mapKeys(${key}), mapValues(${key}))`,
|
|
838
|
+
}}, mapKeys(${columnRef(key)}), mapValues(${columnRef(key)}))`,
|
|
805
839
|
);
|
|
806
840
|
continue;
|
|
807
841
|
}
|
|
@@ -815,7 +849,7 @@ export default class StatementGenerator<TBaseModel extends AnalyticsBaseModel> {
|
|
|
815
849
|
}}) AND v ILIKE ${{
|
|
816
850
|
value: literalValue,
|
|
817
851
|
type: TableColumnType.Text,
|
|
818
|
-
}}, mapKeys(${key}), mapValues(${key}))`,
|
|
852
|
+
}}, mapKeys(${columnRef(key)}), mapValues(${columnRef(key)}))`,
|
|
819
853
|
);
|
|
820
854
|
continue;
|
|
821
855
|
}
|
|
@@ -829,7 +863,7 @@ export default class StatementGenerator<TBaseModel extends AnalyticsBaseModel> {
|
|
|
829
863
|
}}) AND v ILIKE ${{
|
|
830
864
|
value: literalValue,
|
|
831
865
|
type: TableColumnType.Text,
|
|
832
|
-
}}, mapKeys(${key}), mapValues(${key}))`,
|
|
866
|
+
}}, mapKeys(${columnRef(key)}), mapValues(${columnRef(key)}))`,
|
|
833
867
|
);
|
|
834
868
|
continue;
|
|
835
869
|
}
|
|
@@ -843,14 +877,14 @@ export default class StatementGenerator<TBaseModel extends AnalyticsBaseModel> {
|
|
|
843
877
|
}}) AND v ILIKE ${{
|
|
844
878
|
value: literalValue,
|
|
845
879
|
type: TableColumnType.Text,
|
|
846
|
-
}}, mapKeys(${key}), mapValues(${key}))`,
|
|
880
|
+
}}, mapKeys(${columnRef(key)}), mapValues(${columnRef(key)}))`,
|
|
847
881
|
);
|
|
848
882
|
continue;
|
|
849
883
|
}
|
|
850
884
|
|
|
851
885
|
if (mapEntry instanceof NotEqual) {
|
|
852
886
|
whereStatement.append(
|
|
853
|
-
SQL`AND ${key}[${{
|
|
887
|
+
SQL`AND ${columnRef(key)}[${{
|
|
854
888
|
value: mapKey,
|
|
855
889
|
type: TableColumnType.Text,
|
|
856
890
|
}}] != ${{
|
|
@@ -870,9 +904,10 @@ export default class StatementGenerator<TBaseModel extends AnalyticsBaseModel> {
|
|
|
870
904
|
mapColumn: tableColumn,
|
|
871
905
|
mapKey,
|
|
872
906
|
skip: equalityValue === "",
|
|
907
|
+
tableAlias: options?.tableAlias,
|
|
873
908
|
});
|
|
874
909
|
whereStatement.append(
|
|
875
|
-
SQL`AND ${key}[${{
|
|
910
|
+
SQL`AND ${columnRef(key)}[${{
|
|
876
911
|
value: mapKey,
|
|
877
912
|
type: TableColumnType.Text,
|
|
878
913
|
}}] = ${{
|
|
@@ -895,9 +930,10 @@ export default class StatementGenerator<TBaseModel extends AnalyticsBaseModel> {
|
|
|
895
930
|
whereStatement,
|
|
896
931
|
mapColumn: tableColumn,
|
|
897
932
|
mapKey,
|
|
933
|
+
tableAlias: options?.tableAlias,
|
|
898
934
|
});
|
|
899
935
|
whereStatement.append(
|
|
900
|
-
SQL`AND toFloat64OrNull(${key}[${{
|
|
936
|
+
SQL`AND toFloat64OrNull(${columnRef(key)}[${{
|
|
901
937
|
value: mapKey,
|
|
902
938
|
type: TableColumnType.Text,
|
|
903
939
|
}}]) > ${{
|
|
@@ -913,9 +949,10 @@ export default class StatementGenerator<TBaseModel extends AnalyticsBaseModel> {
|
|
|
913
949
|
whereStatement,
|
|
914
950
|
mapColumn: tableColumn,
|
|
915
951
|
mapKey,
|
|
952
|
+
tableAlias: options?.tableAlias,
|
|
916
953
|
});
|
|
917
954
|
whereStatement.append(
|
|
918
|
-
SQL`AND toFloat64OrNull(${key}[${{
|
|
955
|
+
SQL`AND toFloat64OrNull(${columnRef(key)}[${{
|
|
919
956
|
value: mapKey,
|
|
920
957
|
type: TableColumnType.Text,
|
|
921
958
|
}}]) >= ${{
|
|
@@ -931,9 +968,10 @@ export default class StatementGenerator<TBaseModel extends AnalyticsBaseModel> {
|
|
|
931
968
|
whereStatement,
|
|
932
969
|
mapColumn: tableColumn,
|
|
933
970
|
mapKey,
|
|
971
|
+
tableAlias: options?.tableAlias,
|
|
934
972
|
});
|
|
935
973
|
whereStatement.append(
|
|
936
|
-
SQL`AND toFloat64OrNull(${key}[${{
|
|
974
|
+
SQL`AND toFloat64OrNull(${columnRef(key)}[${{
|
|
937
975
|
value: mapKey,
|
|
938
976
|
type: TableColumnType.Text,
|
|
939
977
|
}}]) < ${{
|
|
@@ -949,9 +987,10 @@ export default class StatementGenerator<TBaseModel extends AnalyticsBaseModel> {
|
|
|
949
987
|
whereStatement,
|
|
950
988
|
mapColumn: tableColumn,
|
|
951
989
|
mapKey,
|
|
990
|
+
tableAlias: options?.tableAlias,
|
|
952
991
|
});
|
|
953
992
|
whereStatement.append(
|
|
954
|
-
SQL`AND toFloat64OrNull(${key}[${{
|
|
993
|
+
SQL`AND toFloat64OrNull(${columnRef(key)}[${{
|
|
955
994
|
value: mapKey,
|
|
956
995
|
type: TableColumnType.Text,
|
|
957
996
|
}}]) <= ${{
|
|
@@ -983,9 +1022,10 @@ export default class StatementGenerator<TBaseModel extends AnalyticsBaseModel> {
|
|
|
983
1022
|
mapColumn: tableColumn,
|
|
984
1023
|
mapKey,
|
|
985
1024
|
skip: includesValues.includes(""),
|
|
1025
|
+
tableAlias: options?.tableAlias,
|
|
986
1026
|
});
|
|
987
1027
|
whereStatement.append(
|
|
988
|
-
SQL`AND ${key}[${{
|
|
1028
|
+
SQL`AND ${columnRef(key)}[${{
|
|
989
1029
|
value: mapKey,
|
|
990
1030
|
type: TableColumnType.Text,
|
|
991
1031
|
}}] IN ${{
|
|
@@ -1015,7 +1055,7 @@ export default class StatementGenerator<TBaseModel extends AnalyticsBaseModel> {
|
|
|
1015
1055
|
continue;
|
|
1016
1056
|
}
|
|
1017
1057
|
whereStatement.append(
|
|
1018
|
-
SQL`AND ${key}[${{
|
|
1058
|
+
SQL`AND ${columnRef(key)}[${{
|
|
1019
1059
|
value: mapKey,
|
|
1020
1060
|
type: TableColumnType.Text,
|
|
1021
1061
|
}}] NOT IN ${{
|
|
@@ -1033,9 +1073,10 @@ export default class StatementGenerator<TBaseModel extends AnalyticsBaseModel> {
|
|
|
1033
1073
|
mapColumn: tableColumn,
|
|
1034
1074
|
mapKey,
|
|
1035
1075
|
skip: equalityValue === "",
|
|
1076
|
+
tableAlias: options?.tableAlias,
|
|
1036
1077
|
});
|
|
1037
1078
|
whereStatement.append(
|
|
1038
|
-
SQL`AND ${key}[${{
|
|
1079
|
+
SQL`AND ${columnRef(key)}[${{
|
|
1039
1080
|
value: mapKey,
|
|
1040
1081
|
type: TableColumnType.Text,
|
|
1041
1082
|
}}] = ${{
|
|
@@ -1058,7 +1099,7 @@ export default class StatementGenerator<TBaseModel extends AnalyticsBaseModel> {
|
|
|
1058
1099
|
|
|
1059
1100
|
if (flatValue[objKey] && typeof flatValue[objKey] === "string") {
|
|
1060
1101
|
whereStatement.append(
|
|
1061
|
-
SQL`AND JSONExtractString(${key}, ${{
|
|
1102
|
+
SQL`AND JSONExtractString(${columnRef(key)}, ${{
|
|
1062
1103
|
value: objKey,
|
|
1063
1104
|
type: TableColumnType.Text,
|
|
1064
1105
|
}}) = ${{
|
|
@@ -1071,7 +1112,7 @@ export default class StatementGenerator<TBaseModel extends AnalyticsBaseModel> {
|
|
|
1071
1112
|
|
|
1072
1113
|
if (flatValue[objKey] && typeof flatValue[objKey] === "number") {
|
|
1073
1114
|
whereStatement.append(
|
|
1074
|
-
SQL`AND JSONExtractInt(${key}, ${{
|
|
1115
|
+
SQL`AND JSONExtractInt(${columnRef(key)}, ${{
|
|
1075
1116
|
value: objKey,
|
|
1076
1117
|
type: TableColumnType.Text,
|
|
1077
1118
|
}}) = ${{
|
|
@@ -1084,7 +1125,7 @@ export default class StatementGenerator<TBaseModel extends AnalyticsBaseModel> {
|
|
|
1084
1125
|
|
|
1085
1126
|
if (flatValue[objKey] && typeof flatValue[objKey] === "boolean") {
|
|
1086
1127
|
whereStatement.append(
|
|
1087
|
-
SQL`AND JSONExtractBool(${key}, ${{
|
|
1128
|
+
SQL`AND JSONExtractBool(${columnRef(key)}, ${{
|
|
1088
1129
|
value: objKey,
|
|
1089
1130
|
type: TableColumnType.Text,
|
|
1090
1131
|
}}) = ${{
|
|
@@ -1097,7 +1138,7 @@ export default class StatementGenerator<TBaseModel extends AnalyticsBaseModel> {
|
|
|
1097
1138
|
}
|
|
1098
1139
|
} else {
|
|
1099
1140
|
whereStatement.append(
|
|
1100
|
-
SQL`AND ${key} = ${{ value, type: tableColumn.type }}`,
|
|
1141
|
+
SQL`AND ${columnRef(key)} = ${{ value, type: tableColumn.type }}`,
|
|
1101
1142
|
);
|
|
1102
1143
|
}
|
|
1103
1144
|
}
|
|
@@ -1361,6 +1402,32 @@ export default class StatementGenerator<TBaseModel extends AnalyticsBaseModel> {
|
|
|
1361
1402
|
* column. Scalar types ignore the rest of the column.
|
|
1362
1403
|
*/
|
|
1363
1404
|
public toColumnType(column: AnalyticsTableColumn): Statement {
|
|
1405
|
+
const simpleAggregateFunction: string | undefined =
|
|
1406
|
+
column.simpleAggregateFunction;
|
|
1407
|
+
|
|
1408
|
+
if (simpleAggregateFunction !== undefined) {
|
|
1409
|
+
if (column.type === TableColumnType.AggregateFunction) {
|
|
1410
|
+
throw new BadDataException(
|
|
1411
|
+
`Column ${column.key} cannot declare both AggregateFunction and SimpleAggregateFunction.`,
|
|
1412
|
+
);
|
|
1413
|
+
}
|
|
1414
|
+
|
|
1415
|
+
/*
|
|
1416
|
+
* The function name is emitted as raw ClickHouse DDL, so accept only a
|
|
1417
|
+
* plain function identifier. Besides catching accidental whitespace /
|
|
1418
|
+
* empty definitions, this prevents a model field from injecting another
|
|
1419
|
+
* type or table clause into generated schema SQL.
|
|
1420
|
+
*/
|
|
1421
|
+
if (
|
|
1422
|
+
simpleAggregateFunction.trim() !== simpleAggregateFunction ||
|
|
1423
|
+
!SIMPLE_AGGREGATE_FUNCTION_NAME_REGEX.test(simpleAggregateFunction)
|
|
1424
|
+
) {
|
|
1425
|
+
throw new BadDataException(
|
|
1426
|
+
`Column ${column.key} has invalid simpleAggregateFunction "${simpleAggregateFunction}".`,
|
|
1427
|
+
);
|
|
1428
|
+
}
|
|
1429
|
+
}
|
|
1430
|
+
|
|
1364
1431
|
if (column.type === TableColumnType.AggregateFunction) {
|
|
1365
1432
|
const def: string | undefined = column.aggregateFunctionDefinition;
|
|
1366
1433
|
if (!def) {
|
|
@@ -1371,7 +1438,7 @@ export default class StatementGenerator<TBaseModel extends AnalyticsBaseModel> {
|
|
|
1371
1438
|
return SQL`AggregateFunction(`.append(def).append(SQL`)`);
|
|
1372
1439
|
}
|
|
1373
1440
|
|
|
1374
|
-
const
|
|
1441
|
+
const scalarStatement: Statement | undefined = {
|
|
1375
1442
|
[TableColumnType.Text]: SQL`String`,
|
|
1376
1443
|
[TableColumnType.ObjectID]: SQL`String`,
|
|
1377
1444
|
[TableColumnType.Boolean]: SQL`Bool`,
|
|
@@ -1394,13 +1461,21 @@ export default class StatementGenerator<TBaseModel extends AnalyticsBaseModel> {
|
|
|
1394
1461
|
[TableColumnType.UInt64]: SQL`UInt64`,
|
|
1395
1462
|
}[column.type];
|
|
1396
1463
|
|
|
1397
|
-
if (!
|
|
1464
|
+
if (!scalarStatement) {
|
|
1398
1465
|
throw new BadDataException(
|
|
1399
1466
|
`Unknown column type: ${column.type}. Please add support for this column type.`,
|
|
1400
1467
|
);
|
|
1401
1468
|
}
|
|
1402
1469
|
|
|
1403
|
-
|
|
1470
|
+
if (simpleAggregateFunction) {
|
|
1471
|
+
return SQL`SimpleAggregateFunction(`
|
|
1472
|
+
.append(simpleAggregateFunction)
|
|
1473
|
+
.append(SQL`, `)
|
|
1474
|
+
.append(scalarStatement)
|
|
1475
|
+
.append(SQL`)`);
|
|
1476
|
+
}
|
|
1477
|
+
|
|
1478
|
+
return scalarStatement;
|
|
1404
1479
|
}
|
|
1405
1480
|
|
|
1406
1481
|
/**
|
|
@@ -1413,7 +1488,8 @@ export default class StatementGenerator<TBaseModel extends AnalyticsBaseModel> {
|
|
|
1413
1488
|
*/
|
|
1414
1489
|
public toFullColumnType(column: AnalyticsTableColumn): Statement {
|
|
1415
1490
|
const isAggregateFunction: boolean =
|
|
1416
|
-
column.type === TableColumnType.AggregateFunction
|
|
1491
|
+
column.type === TableColumnType.AggregateFunction ||
|
|
1492
|
+
Boolean(column.simpleAggregateFunction);
|
|
1417
1493
|
|
|
1418
1494
|
let typeStatement: Statement = this.toColumnType(column);
|
|
1419
1495
|
|
package/Server/Utils/Memory.ts
CHANGED
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
import fs from "fs";
|
|
2
2
|
import os from "os";
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
/*
|
|
5
|
+
* Treat an absurdly large cgroup limit as "unlimited". Must be `2 ** 60`, not
|
|
6
|
+
* `1 << 60`: JavaScript's `<<` truncates to 32 bits and takes the shift count
|
|
7
|
+
* mod 32, so `1 << 60` is `1 << 28` = 256 MiB. That made every container with
|
|
8
|
+
* a limit of 256 MiB or more look unlimited, so getCgroupAvailableMemoryInBytes
|
|
9
|
+
* returned null and the container-aware helper silently fell back to the whole
|
|
10
|
+
* host's free memory — the exact OOM-kill case it exists to prevent.
|
|
11
|
+
*/
|
|
12
|
+
const UNLIMITED_CGROUP_THRESHOLD_BYTES: number = 2 ** 60;
|
|
5
13
|
|
|
6
14
|
export default class MemoryUtil {
|
|
7
15
|
public static getHostFreeMemoryInBytes(): number {
|