towerops/lib/towerops_web/live/maintenance_live/index.ex
Graham McIntire 532d88ffb9
perf: disable Req retry for faster error tests
- Add retry: false to VISP Client HTTP requests
- Add retry: false to ReleaseChecker GitHub API requests
- Remove unused Plug.Conn import from RemoteIpLogger
- Remove unused default parameter from req_get/2

Results:
- VISP sync test: 7007ms → 113ms (62x faster)
- ReleaseChecker test: 7004ms → 17ms (402x faster)
- UserResetPasswordLive test: 1495ms → 284ms (5x faster)

Req's default retry behavior (1s, 2s, 4s exponential backoff) was
causing 7-second delays for HTTP 500/503 error responses in tests.
For these clients, immediate failure is preferred over retries.
2026-03-10 16:19:31 -05:00

48 lines
1.3 KiB
Elixir

defmodule ToweropsWeb.MaintenanceLive.Index do
@moduledoc false
use ToweropsWeb, :live_view
alias Towerops.Maintenance
alias ToweropsWeb.MaintenanceLive.Helpers
@impl true
def mount(_params, _session, socket) do
organization = socket.assigns.current_scope.organization
{:ok,
socket
|> assign(:page_title, t("Maintenance Windows"))
|> assign(:filter, "all")
|> assign(:timezone, socket.assigns.current_scope.timezone)
|> load_windows(organization.id)}
end
@impl true
def handle_params(params, _url, socket) do
filter = Map.get(params, "filter", "all")
{:noreply,
socket
|> assign(:filter, filter)
|> load_windows(socket.assigns.current_scope.organization.id)}
end
defp load_windows(socket, org_id) do
filter_atom =
case socket.assigns.filter do
"active" -> :active
"upcoming" -> :upcoming
"past" -> :past
_ -> nil
end
opts = if filter_atom, do: [filter: filter_atom], else: []
windows = Maintenance.list_windows(org_id, opts)
assign(socket, :windows, windows)
end
defdelegate status_for(window), to: Helpers
defdelegate scope_label(window), to: Helpers
defdelegate format_datetime(dt, timezone), to: Helpers
defdelegate status_label(status), to: Helpers
end