From 738f52408344e760a1907cdcee91cb6451978fa4 Mon Sep 17 00:00:00 2001 From: Oliver Kieselbach Date: Fri, 27 Mar 2026 09:35:14 +0100 Subject: [PATCH] fix nullables --- .../AutopilotMonitor.Agent/buildcounter.txt | 2 +- .../Ingest/IngestEventsFunction.Processing.cs | 2 +- .../AutopilotMonitor.Shared.csproj | 1 + .../Models/Config/TenantConfiguration.cs | 2 +- .../Models/Enrollment/EnrollmentEvent.cs | 4 ++-- .../Models/GeographicApiModels.cs | 2 +- .../Models/SessionApiModels.cs | 12 +++++----- .../Models/SessionSearchFilter.cs | 22 +++++++++---------- 8 files changed, 24 insertions(+), 23 deletions(-) diff --git a/src/Agent/AutopilotMonitor.Agent/buildcounter.txt b/src/Agent/AutopilotMonitor.Agent/buildcounter.txt index 82d45208..cb3e25bb 100644 --- a/src/Agent/AutopilotMonitor.Agent/buildcounter.txt +++ b/src/Agent/AutopilotMonitor.Agent/buildcounter.txt @@ -1 +1 @@ -589 +609 diff --git a/src/Backend/AutopilotMonitor.Functions/Functions/Ingest/IngestEventsFunction.Processing.cs b/src/Backend/AutopilotMonitor.Functions/Functions/Ingest/IngestEventsFunction.Processing.cs index fdab016a..95f5c6ae 100644 --- a/src/Backend/AutopilotMonitor.Functions/Functions/Ingest/IngestEventsFunction.Processing.cs +++ b/src/Backend/AutopilotMonitor.Functions/Functions/Ingest/IngestEventsFunction.Processing.cs @@ -471,7 +471,7 @@ namespace AutopilotMonitor.Functions.Functions.Ingest break; } - AggregateAppInstallEvent(evt, storedEvents[0].TenantId, storedEvents[0].SessionId, classification.AppInstallUpdates); + AggregateAppInstallEvent(evt, storedEvents[0].TenantId!, storedEvents[0].SessionId!, classification.AppInstallUpdates); } return classification; diff --git a/src/Shared/AutopilotMonitor.Shared/AutopilotMonitor.Shared.csproj b/src/Shared/AutopilotMonitor.Shared/AutopilotMonitor.Shared.csproj index 594d0e6d..2e218256 100644 --- a/src/Shared/AutopilotMonitor.Shared/AutopilotMonitor.Shared.csproj +++ b/src/Shared/AutopilotMonitor.Shared/AutopilotMonitor.Shared.csproj @@ -3,6 +3,7 @@ netstandard2.0 9.0 + enable diff --git a/src/Shared/AutopilotMonitor.Shared/Models/Config/TenantConfiguration.cs b/src/Shared/AutopilotMonitor.Shared/Models/Config/TenantConfiguration.cs index 8e0eb1b0..f75d7bf6 100644 --- a/src/Shared/AutopilotMonitor.Shared/Models/Config/TenantConfiguration.cs +++ b/src/Shared/AutopilotMonitor.Shared/Models/Config/TenantConfiguration.cs @@ -53,7 +53,7 @@ namespace AutopilotMonitor.Shared.Models /// Optional reason why the tenant was disabled /// Displayed to users attempting to log in /// - public string DisabledReason { get; set; } + public string? DisabledReason { get; set; } /// /// Optional date/time until which the tenant is disabled diff --git a/src/Shared/AutopilotMonitor.Shared/Models/Enrollment/EnrollmentEvent.cs b/src/Shared/AutopilotMonitor.Shared/Models/Enrollment/EnrollmentEvent.cs index c881541e..cc1d82ec 100644 --- a/src/Shared/AutopilotMonitor.Shared/Models/Enrollment/EnrollmentEvent.cs +++ b/src/Shared/AutopilotMonitor.Shared/Models/Enrollment/EnrollmentEvent.cs @@ -17,12 +17,12 @@ namespace AutopilotMonitor.Shared.Models /// /// Session identifier this event belongs to /// - public string SessionId { get; set; } + public string? SessionId { get; set; } /// /// Tenant identifier /// - public string TenantId { get; set; } + public string? TenantId { get; set; } /// /// Timestamp when the agent detected/created this event on the device (UTC). diff --git a/src/Shared/AutopilotMonitor.Shared/Models/GeographicApiModels.cs b/src/Shared/AutopilotMonitor.Shared/Models/GeographicApiModels.cs index 5a7555ed..8ebf3d28 100644 --- a/src/Shared/AutopilotMonitor.Shared/Models/GeographicApiModels.cs +++ b/src/Shared/AutopilotMonitor.Shared/Models/GeographicApiModels.cs @@ -56,7 +56,7 @@ namespace AutopilotMonitor.Shared.Models public bool IsOutlier { get; set; } /// "fast", "slow", or null - public string OutlierDirection { get; set; } + public string? OutlierDirection { get; set; } } /// diff --git a/src/Shared/AutopilotMonitor.Shared/Models/SessionApiModels.cs b/src/Shared/AutopilotMonitor.Shared/Models/SessionApiModels.cs index d40983f2..a0ae236b 100644 --- a/src/Shared/AutopilotMonitor.Shared/Models/SessionApiModels.cs +++ b/src/Shared/AutopilotMonitor.Shared/Models/SessionApiModels.cs @@ -25,7 +25,7 @@ namespace AutopilotMonitor.Shared.Models /// Non-null when the session was already marked as terminal by an admin before agent restart. /// Values: "Succeeded", "Failed". Agent should run cleanup instead of starting monitoring. /// - public string AdminAction { get; set; } + public string? AdminAction { get; set; } } /// @@ -63,7 +63,7 @@ namespace AutopilotMonitor.Shared.Models /// /// Rate limit details (only populated if RateLimitExceeded is true) /// - public RateLimitInfo RateLimitInfo { get; set; } + public RateLimitInfo? RateLimitInfo { get; set; } /// /// Whether the device has been temporarily blocked by an admin @@ -85,7 +85,7 @@ namespace AutopilotMonitor.Shared.Models /// Non-null when an admin has externally changed the session status. /// Values: "Succeeded", "Failed". Agent should treat as terminal signal and run cleanup. /// - public string AdminAction { get; set; } + public string? AdminAction { get; set; } } /// @@ -131,9 +131,9 @@ namespace AutopilotMonitor.Shared.Models public class GetDiagnosticsUploadUrlResponse { public bool Success { get; set; } - public string UploadUrl { get; set; } + public string? UploadUrl { get; set; } public DateTime ExpiresAt { get; set; } - public string Message { get; set; } + public string? Message { get; set; } } /// @@ -222,7 +222,7 @@ namespace AutopilotMonitor.Shared.Models { public List Sessions { get; set; } = new(); public bool HasMore { get; set; } - public string Cursor { get; set; } + public string? Cursor { get; set; } } /// diff --git a/src/Shared/AutopilotMonitor.Shared/Models/SessionSearchFilter.cs b/src/Shared/AutopilotMonitor.Shared/Models/SessionSearchFilter.cs index 06f88203..64e9281f 100644 --- a/src/Shared/AutopilotMonitor.Shared/Models/SessionSearchFilter.cs +++ b/src/Shared/AutopilotMonitor.Shared/Models/SessionSearchFilter.cs @@ -6,25 +6,25 @@ namespace AutopilotMonitor.Shared.Models public class SessionSearchFilter { // Basic (SessionSummary fields) - public string Status { get; set; } - public string SerialNumber { get; set; } - public string AgentVersion { get; set; } - public string ImeAgentVersion { get; set; } - public string DeviceName { get; set; } - public string Manufacturer { get; set; } - public string Model { get; set; } - public string OsBuild { get; set; } - public string EnrollmentType { get; set; } + public string? Status { get; set; } + public string? SerialNumber { get; set; } + public string? AgentVersion { get; set; } + public string? ImeAgentVersion { get; set; } + public string? DeviceName { get; set; } + public string? Manufacturer { get; set; } + public string? Model { get; set; } + public string? OsBuild { get; set; } + public string? EnrollmentType { get; set; } public bool? IsPreProvisioned { get; set; } public bool? IsHybridJoin { get; set; } - public string GeoCountry { get; set; } + public string? GeoCountry { get; set; } public DateTime? StartedAfter { get; set; } public DateTime? StartedBefore { get; set; } public int Limit { get; set; } = 50; // Dynamic device property filters (key = "eventType.propertyName", value = filter expression) // Examples: "tpm_status.specVersion" = "2.0", "hardware_spec.ramTotalGB" = ">=8" - public Dictionary DeviceProperties { get; set; } + public Dictionary? DeviceProperties { get; set; } public bool HasDeviceSnapshotFilters => DeviceProperties != null && DeviceProperties.Count > 0;