Deployment and lifecycle management for Nix
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

refactor: extract lookup_deployment into Garden.Socket.State

SOW-74

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

+29 -3
+3 -3
apps/garden/lib/garden/socket.ex
··· 261 261 262 262 @impl Slipstream 263 263 def handle_info({:run_deployment, sid}, socket) do 264 - case Map.get(socket.active_deployments, sid) do 265 - nil -> 264 + case State.lookup_deployment(sid, socket.active_deployments) do 265 + :not_found -> 266 266 Logger.warning(msg: "Deployment not found", sid: sid) 267 267 {:noreply, socket} 268 268 269 - deployment -> 269 + {:ok, deployment} -> 270 270 {:ok, _} = 271 271 push_message( 272 272 socket,
+7
apps/garden/lib/garden/socket/state.ex
··· 57 57 Enum.filter(subscriptions, & &1.poll_on_connect) 58 58 end 59 59 60 + def lookup_deployment(sid, active_deployments) do 61 + case Map.get(active_deployments, sid) do 62 + nil -> :not_found 63 + deployment -> {:ok, deployment} 64 + end 65 + end 66 + 60 67 def receive_deployment(%Deployment{skipped: true}, _active_deployments) do 61 68 :skipped 62 69 end
+19
apps/garden/test/garden/socket/state_test.exs
··· 175 175 assert map_size(active) == 2 176 176 end 177 177 end 178 + 179 + describe "lookup_deployment/2" do 180 + test "returns deployment when found" do 181 + deployment = %Deployment{ 182 + sid: "deploy_123", 183 + request_id: "dr_456", 184 + seed_deployments: [], 185 + skipped: false 186 + } 187 + 188 + active = %{"deploy_123" => deployment} 189 + 190 + assert {:ok, ^deployment} = State.lookup_deployment("deploy_123", active) 191 + end 192 + 193 + test "returns not_found when missing" do 194 + assert :not_found = State.lookup_deployment("deploy_123", %{}) 195 + end 196 + end 178 197 end