diff --git a/src/BuslyCLI.Console/Commands/ServiceControl/Message/SearchMessagesCommand.cs b/src/BuslyCLI.Console/Commands/ServiceControl/Message/SearchMessagesCommand.cs index 7ae7ddda..b8af5fc4 100644 --- a/src/BuslyCLI.Console/Commands/ServiceControl/Message/SearchMessagesCommand.cs +++ b/src/BuslyCLI.Console/Commands/ServiceControl/Message/SearchMessagesCommand.cs @@ -27,6 +27,7 @@ protected override async Task ExecuteAsync(CommandContext context, SearchMe var table = new Table(); table.AddColumn("Id"); table.AddColumn("Message Type"); + table.AddColumn("Status"); table.AddColumn("Processing Time"); table.AddColumn("Critical Time"); table.AddColumn("Delivery Time"); @@ -37,10 +38,11 @@ protected override async Task ExecuteAsync(CommandContext context, SearchMe table.AddRow( message.Id, message.MessageType, + message.Status.ToString(), message.ProcessingTime, message.CriticalTime.StartsWith("-") ? "00:00:00" : message.ProcessingTime, message.DeliveryTime.StartsWith("-") ? message.DeliveryTime.Substring(1) : message.DeliveryTime, - message.TimeSent.Value.ToString("u")); + message.TimeSent?.ToString("u") ?? ""); } console.Write(table); diff --git a/src/BuslyCLI.Console/Commands/ServiceControl/Message/SearchMessagesSettings.cs b/src/BuslyCLI.Console/Commands/ServiceControl/Message/SearchMessagesSettings.cs index 72d73069..220d7699 100644 --- a/src/BuslyCLI.Console/Commands/ServiceControl/Message/SearchMessagesSettings.cs +++ b/src/BuslyCLI.Console/Commands/ServiceControl/Message/SearchMessagesSettings.cs @@ -16,7 +16,7 @@ public class SearchMessagesSettings : GlobalCommandSettings [CommandOption("--page-size ")] [DefaultValue(50)] [Description("The page size to use when searching messages")] - public uint PageSize { get; set; } + public int PageSize { get; set; } [CommandOption("--from ")] [Description("The start date to search messages from, using ISO-8601 format (YYYY-MM-DDTHH:mm:ssZ)")] diff --git a/src/BuslyCLI.Console/Infrastructure/ServiceControlClient.cs b/src/BuslyCLI.Console/Infrastructure/ServiceControlClient.cs index 4734f71f..a1fd34b5 100644 --- a/src/BuslyCLI.Console/Infrastructure/ServiceControlClient.cs +++ b/src/BuslyCLI.Console/Infrastructure/ServiceControlClient.cs @@ -1,6 +1,7 @@ using System.Net; using System.Net.Http.Json; using System.Text.Json; +using System.Text.Json.Serialization; using BuslyCLI.Infrastructure.ServiceControl; namespace BuslyCLI.Infrastructure; @@ -10,6 +11,7 @@ public class ServiceControlClient(HttpClient httpClient) private static readonly JsonSerializerOptions JsonOptions = new() { PropertyNamingPolicy = JsonNamingPolicy.SnakeCaseLower, + Converters = { new JsonStringEnumConverter(JsonNamingPolicy.SnakeCaseLower) }, }; public async Task> GetEndpointsAsync(string baseUrl, CancellationToken cancellationToken = default) @@ -62,7 +64,7 @@ public async Task> SearchMessagesAsync( string endpointName = null, DateTimeOffset? from = null, DateTimeOffset? to = null, - uint pageSize = 50, + int pageSize = 50, string sort = "time_sent", string direction = "desc", CancellationToken cancellationToken = default) diff --git a/src/BuslyCLI.Console/Infrastructure/ServiceControlMessage.cs b/src/BuslyCLI.Console/Infrastructure/ServiceControlMessage.cs index 7d6fc1a8..5df1ed1c 100644 --- a/src/BuslyCLI.Console/Infrastructure/ServiceControlMessage.cs +++ b/src/BuslyCLI.Console/Infrastructure/ServiceControlMessage.cs @@ -14,7 +14,7 @@ public class ServiceControlMessage public string ProcessingTime { get; set; } public bool IsSystemMessage { get; set; } public string ConversationId { get; set; } - public string Status { get; set; } + public MessageStatus Status { get; set; } public string MessageIntent { get; set; } public string BodyUrl { get; set; } public int BodySize { get; set; } @@ -22,7 +22,18 @@ public class ServiceControlMessage public IReadOnlyList Headers { get; set; } = []; } +public enum MessageStatus +{ + Failed = 1, + RepeatedFailure = 2, + Successful = 3, + ResolvedSuccessfully = 4, + ArchivedFailure = 5, + RetryIssued = 6 +} + public class ServiceControlMessageEndpoint + { public string Name { get; set; } public string Host { get; set; }