diff --git a/lib/outboxer/message.rb b/lib/outboxer/message.rb
index e19a6381..70691695 100644
--- a/lib/outboxer/message.rb
+++ b/lib/outboxer/message.rb
@@ -712,48 +712,17 @@ def rollup_counts(time: Time)
def count_by_status
ActiveRecord::Base.connection_pool.with_connection do
result = Models::Message::Count.select(
- "COALESCE(SUM(queued), 0) AS queued",
- "COALESCE(SUM(publishing), 0) AS publishing",
- "COALESCE(SUM(published), 0) AS published",
- "COALESCE(SUM(failed), 0) AS failed"
+ "COALESCE(SUM(queued), 0) AS queued",
+ "COALESCE(SUM(publishing), 0) AS publishing",
+ "COALESCE(SUM(published), 0) AS published",
+ "COALESCE(SUM(failed), 0) AS failed",
+ "COALESCE(SUM(queued + publishing + published + failed), 0) AS total"
).take
result.attributes.symbolize_keys.slice(
- :queued, :publishing, :published, :failed
- )
- end
- end
-
- # Retrieves and calculates metrics related to message statuses,
- # using the unified Counter.total for all counts.
- # Latency and throughput are placeholders (0) until time-series metrics are implemented.
- #
- # @return [Hash] detailed metrics across various message statuses.
- def metrics
- totals = count_by_status
-
- metrics = {
- all: {
- count: {
- total: totals.values.sum
- }
- }
- }
-
- {
- queued: :queued,
- publishing: :publishing,
- published: :published,
- failed: :failed
- }.each do |status, field|
- metrics[status] = {
- count: { total: totals[field].to_i },
- latency: 0,
- throughput: 0
- }
+ :queued, :publishing, :published, :failed, :total
+ ).transform_values(&:to_i)
end
-
- metrics
end
end
end
diff --git a/lib/outboxer/web.rb b/lib/outboxer/web.rb
index 005edd67..5c6fb213 100755
--- a/lib/outboxer/web.rb
+++ b/lib/outboxer/web.rb
@@ -215,12 +215,12 @@ def time_ago_in_words(time)
per_page: denormalised_query_params[:per_page],
time_zone: denormalised_query_params[:time_zone])
- messages_metrics = Message.metrics
+ message_count_by_status = Message.count_by_status
publishers = Publisher.all
erb :home, locals: {
- messages_metrics: messages_metrics,
+ message_count_by_status: message_count_by_status,
denormalised_query_params: denormalised_query_params,
normalised_query_params: normalised_query_params,
normalised_query_string: normalised_query_string,
@@ -253,12 +253,12 @@ def time_ago_in_words(time)
per_page: denormalised_query_params[:per_page],
time_zone: denormalised_query_params[:time_zone])
- messages_metrics = Message.metrics
+ message_count_by_status = Message.count_by_status
publishers = Publisher.all
erb :home, locals: {
- messages_metrics: messages_metrics,
+ message_count_by_status: message_count_by_status,
denormalised_query_params: denormalised_query_params,
normalised_query_params: normalised_query_params,
normalised_query_string: normalised_query_string,
@@ -311,7 +311,7 @@ def time_ago_in_words(time)
per_page: denormalised_query_params[:per_page],
time_zone: denormalised_query_params[:time_zone])
- messages_metrics = Message.metrics
+ message_count_by_status = Message.count_by_status
paginated_messages = Message.list(
status: denormalised_query_params[:status],
@@ -327,7 +327,7 @@ def time_ago_in_words(time)
denormalised_query_params: denormalised_query_params)
erb :messages, locals: {
- messages_metrics: messages_metrics,
+ message_count_by_status: message_count_by_status,
messages: paginated_messages[:messages],
denormalised_query_params: denormalised_query_params,
normalised_query_params: normalised_query_params,
@@ -627,7 +627,7 @@ def normalise_query_string(status: Message::LIST_STATUS_DEFAULT,
per_page: denormalised_query_params[:per_page],
time_zone: denormalised_query_params[:time_zone])
- messages_metrics = Message.metrics
+ message_count_by_status = Message.count_by_status
message = Message.find_by_id(id: params[:id])
@@ -638,7 +638,7 @@ def normalise_query_string(status: Message::LIST_STATUS_DEFAULT,
denormalised_query_params: denormalised_query_params,
normalised_query_params: normalised_query_params,
normalised_query_string: normalised_query_string,
- messages_metrics: messages_metrics,
+ message_count_by_status: message_count_by_status,
message: message,
messageable: messageable
}
@@ -654,7 +654,7 @@ def normalise_query_string(status: Message::LIST_STATUS_DEFAULT,
time_zone: params[:time_zone])
message = Message.find_by_id(id: params[:id])
- messages_metrics = Message.metrics
+ message_count_by_status = Message.count_by_status
messageable_class = message[:messageable_type]&.safe_constantize
messageable = messageable_class&.find_by_id(id: message[:messageable_id])
@@ -662,7 +662,7 @@ def normalise_query_string(status: Message::LIST_STATUS_DEFAULT,
erb :messageable, locals: {
message: message,
messageable: messageable,
- messages_metrics: messages_metrics,
+ message_count_by_status: message_count_by_status,
denormalised_query_params: denormalised_query_params
}
end
@@ -740,10 +740,10 @@ def normalise_query_string(status: Message::LIST_STATUS_DEFAULT,
publisher = Publisher.find_by_id(id: params[:id])
- messages_metrics = Message.metrics
+ message_count_by_status = Message.count_by_status
erb :publisher, locals: {
- messages_metrics: messages_metrics,
+ message_count_by_status: message_count_by_status,
denormalised_query_params: denormalised_query_params,
normalised_query_params: normalised_query_params,
normalised_query_string: normalised_query_string,
diff --git a/lib/outboxer/web/views/home.erb b/lib/outboxer/web/views/home.erb
index bc3d7479..708d803c 100644
--- a/lib/outboxer/web/views/home.erb
+++ b/lib/outboxer/web/views/home.erb
@@ -123,9 +123,9 @@
<%= status %>
-
<%= Outboxer::Web.pretty_number(number: messages_metrics[status.to_sym][:count][:total]) %> |
- <%= Outboxer::Web.pretty_throughput(per_second: messages_metrics[status.to_sym][:throughput]) %> |
- <%= Outboxer::Web.pretty_duration_from_seconds(seconds: messages_metrics[status.to_sym][:latency]) %> |
+ <%= Outboxer::Web.pretty_number(number: message_count_by_status[status.to_sym]) %> |
+ <%= Outboxer::Web.pretty_throughput(per_second: 0) %> |
+ <%= Outboxer::Web.pretty_duration_from_seconds(seconds: 0) %> |
<% end %>
diff --git a/lib/outboxer/web/views/layout.erb b/lib/outboxer/web/views/layout.erb
index d65deb26..83e46732 100644
--- a/lib/outboxer/web/views/layout.erb
+++ b/lib/outboxer/web/views/layout.erb
@@ -55,7 +55,7 @@
Outboxer
- <%= Outboxer::Web.pretty_number(number: messages_metrics[:published][:count][:total]) %>
+ <%= Outboxer::Web.pretty_number(number: message_count_by_status[:published]) %>