Skip to content

Commit ff2aae0

Browse files
committed
refactor: Improve code organization with module aliases
Fixed all 30 Credo software design suggestions by adding proper module aliases and using short names throughout the codebase. This improves code readability and maintainability. Changes: - Added aliases in process_superviser.ex for Cleanup, Config, Error, Telemetry, and SessionRegistry - Added aliases in cleanup.ex for Config, Helpers, ProcessSupervisor, and Telemetry - Added aliases in helpers.ex for Config and SessionRegistry - Added aliases in main phoenix/session_process.ex for Config, ProcessSupervisor, and SessionRegistry - Added alias in test_process.ex for State - Added alias in session_process_test.exs for SessionId - Added alias in state_test.exs for Redux - Replaced all nested module references with short alias names - Used unquote() in macros to properly expand aliases All 65 tests passing. Credo reports no issues.
1 parent 1256bd1 commit ff2aae0

File tree

7 files changed

+56
-45
lines changed

7 files changed

+56
-45
lines changed

lib/phoenix/session_process.ex

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,9 @@ defmodule Phoenix.SessionProcess do
148148
See the benchmarking guide at `bench/README.md` for details.
149149
"""
150150

151+
alias Phoenix.SessionProcess.{Config, ProcessSupervisor}
152+
alias Phoenix.SessionProcess.Registry, as: SessionRegistry
153+
151154
@doc """
152155
Starts a session process using the default configured module.
153156
@@ -350,7 +353,7 @@ defmodule Phoenix.SessionProcess do
350353
"""
351354
@spec list_session :: [{binary(), pid()}, ...]
352355
def list_session do
353-
Registry.select(Phoenix.SessionProcess.Registry, [
356+
Registry.select(SessionRegistry, [
354357
{{:":$1", :":$2", :_}, [], [{{:":$1", :":$2"}}]}
355358
])
356359
end
@@ -379,9 +382,9 @@ defmodule Phoenix.SessionProcess do
379382
modules =
380383
sessions
381384
|> Enum.map(fn {_session_id, pid} ->
382-
case Registry.lookup(Phoenix.SessionProcess.Registry, pid) do
385+
case Registry.lookup(SessionRegistry, pid) do
383386
[{_, module}] -> module
384-
_ -> Phoenix.SessionProcess.Config.session_process()
387+
_ -> Config.session_process()
385388
end
386389
end)
387390
|> Enum.uniq()
@@ -413,7 +416,7 @@ defmodule Phoenix.SessionProcess do
413416
"""
414417
@spec list_sessions_by_module(module()) :: [binary()]
415418
def list_sessions_by_module(module) do
416-
Registry.select(Phoenix.SessionProcess.Registry, [
419+
Registry.select(SessionRegistry, [
417420
{{:"$1", :"$2", :"$_"}, [], [{{:"$1", :"$2", :"$_"}}]}
418421
])
419422
|> Enum.filter(fn {_session_id, _pid, mod} -> mod == module end)
@@ -446,7 +449,7 @@ defmodule Phoenix.SessionProcess do
446449
"""
447450
@spec find_session(binary()) :: {:ok, pid()} | {:error, :not_found}
448451
def find_session(session_id) do
449-
case Phoenix.SessionProcess.ProcessSupervisor.session_process_pid(session_id) do
452+
case ProcessSupervisor.session_process_pid(session_id) do
450453
nil -> {:error, :not_found}
451454
pid -> {:ok, pid}
452455
end
@@ -525,7 +528,7 @@ defmodule Phoenix.SessionProcess do
525528
def get_session_id do
526529
current_pid = self()
527530

528-
Registry.select(Phoenix.SessionProcess.Registry, [
531+
Registry.select(unquote(SessionRegistry), [
529532
{{:":$1", :":$2", :_}, [{:==, :":$2", current_pid}], [{{:":$1", :":$2"}}]}
530533
])
531534
|> Enum.at(0)
@@ -547,7 +550,7 @@ defmodule Phoenix.SessionProcess do
547550
def get_session_id do
548551
current_pid = self()
549552

550-
Registry.select(Phoenix.SessionProcess.Registry, [
553+
Registry.select(unquote(SessionRegistry), [
551554
{{:":$1", :":$2", :_}, [{:==, :":$2", current_pid}], [{{:":$1", :":$2"}}]}
552555
])
553556
|> Enum.at(0)

lib/phoenix/session_process/cleanup.ex

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ defmodule Phoenix.SessionProcess.Cleanup do
7474
use GenServer
7575
require Logger
7676

77+
alias Phoenix.SessionProcess.{Config, Helpers, ProcessSupervisor, Telemetry}
78+
7779
# 1 minute
7880
@cleanup_interval 60_000
7981

@@ -96,12 +98,12 @@ defmodule Phoenix.SessionProcess.Cleanup do
9698

9799
@impl true
98100
def handle_info({:cleanup_session, session_id}, state) do
99-
if Phoenix.SessionProcess.ProcessSupervisor.session_process_started?(session_id) do
100-
session_pid = Phoenix.SessionProcess.ProcessSupervisor.session_process_pid(session_id)
101+
if ProcessSupervisor.session_process_started?(session_id) do
102+
session_pid = ProcessSupervisor.session_process_pid(session_id)
101103

102-
Phoenix.SessionProcess.Telemetry.emit_auto_cleanup_event(
104+
Telemetry.emit_auto_cleanup_event(
103105
session_id,
104-
Phoenix.SessionProcess.Helpers.get_session_module(session_pid),
106+
Helpers.get_session_module(session_pid),
105107
session_pid
106108
)
107109

@@ -126,7 +128,7 @@ defmodule Phoenix.SessionProcess.Cleanup do
126128
"""
127129
@spec schedule_session_cleanup(binary()) :: :ok
128130
def schedule_session_cleanup(session_id) do
129-
ttl = Phoenix.SessionProcess.Config.session_ttl()
131+
ttl = Config.session_ttl()
130132
Process.send_after(__MODULE__, {:cleanup_session, session_id}, ttl)
131133
:ok
132134
end

lib/phoenix/session_process/helpers.ex

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ defmodule Phoenix.SessionProcess.Helpers do
77
"""
88

99
alias Phoenix.SessionProcess
10+
alias Phoenix.SessionProcess.Config
11+
alias Phoenix.SessionProcess.Registry, as: SessionRegistry
1012

1113
@doc """
1214
Start sessions for multiple session IDs in parallel.
@@ -183,9 +185,9 @@ defmodule Phoenix.SessionProcess.Helpers do
183185
"""
184186
@spec get_session_module(pid()) :: module()
185187
def get_session_module(pid) do
186-
case Registry.lookup(Phoenix.SessionProcess.Registry, pid) do
188+
case Registry.lookup(SessionRegistry, pid) do
187189
[{_, module}] -> module
188-
_ -> Phoenix.SessionProcess.Config.session_process()
190+
_ -> Config.session_process()
189191
end
190192
end
191193
end

lib/phoenix/session_process/process_superviser.ex

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,8 @@ defmodule Phoenix.SessionProcess.ProcessSupervisor do
8585
# Automatically defines child_spec/1
8686
use DynamicSupervisor
8787

88-
alias Phoenix.SessionProcess.{Error, Telemetry}
88+
alias Phoenix.SessionProcess.{Cleanup, Config, Error, Telemetry}
89+
alias Phoenix.SessionProcess.Registry, as: SessionRegistry
8990

9091
@doc """
9192
Starts the process supervisor.
@@ -126,7 +127,7 @@ defmodule Phoenix.SessionProcess.ProcessSupervisor do
126127
"""
127128
def start_child(worker, worker_arg) do
128129
worker_spec = {worker, worker_arg}
129-
Phoenix.SessionProcess.Telemetry.emit_worker_start(worker_spec)
130+
Telemetry.emit_worker_start(worker_spec)
130131
DynamicSupervisor.start_child(__MODULE__, worker_spec)
131132
end
132133

@@ -143,7 +144,7 @@ defmodule Phoenix.SessionProcess.ProcessSupervisor do
143144
- `{:error, reason}` - Failed to terminate child process
144145
"""
145146
def terminate_child(pid) do
146-
Phoenix.SessionProcess.Telemetry.emit_worker_terminate(pid)
147+
Telemetry.emit_worker_terminate(pid)
147148
DynamicSupervisor.terminate_child(__MODULE__, pid)
148149
end
149150

@@ -176,7 +177,7 @@ defmodule Phoenix.SessionProcess.ProcessSupervisor do
176177
- `{:error, reason}` - Failed to start session process
177178
"""
178179
def start_session(session_id) do
179-
start_session_with_module(session_id, Phoenix.SessionProcess.Config.session_process())
180+
start_session_with_module(session_id, Config.session_process())
180181
end
181182

182183
@doc """
@@ -255,7 +256,7 @@ defmodule Phoenix.SessionProcess.ProcessSupervisor do
255256
"""
256257
@spec terminate_session(binary()) :: :ok | {:error, :not_found}
257258
def terminate_session(session_id) do
258-
Phoenix.SessionProcess.Telemetry.emit_session_end_event(session_id)
259+
Telemetry.emit_session_end_event(session_id)
259260
start_time = System.monotonic_time()
260261

261262
case session_process_pid(session_id) do
@@ -338,14 +339,14 @@ defmodule Phoenix.SessionProcess.ProcessSupervisor do
338339
Error.cast_failed(module, :cast, {request}, reason)
339340
end
340341

341-
@spec child_name(binary()) :: {:via, Registry, {Phoenix.SessionProcess.Registry, binary()}}
342+
@spec child_name(binary()) :: {:via, Registry, {SessionRegistry, binary()}}
342343
def child_name(session_id) do
343-
{:via, Registry, {Phoenix.SessionProcess.Registry, session_id}}
344+
{:via, Registry, {SessionRegistry, session_id}}
344345
end
345346

346347
@spec session_process_pid(binary()) :: nil | pid()
347348
def session_process_pid(session_id) do
348-
case Registry.whereis_name({Phoenix.SessionProcess.Registry, session_id}) do
349+
case Registry.whereis_name({SessionRegistry, session_id}) do
349350
:undefined -> nil
350351
pid -> pid
351352
end
@@ -356,7 +357,7 @@ defmodule Phoenix.SessionProcess.ProcessSupervisor do
356357

357358
with :ok <- validate_session_id(session_id),
358359
:ok <- check_session_limits() do
359-
Phoenix.SessionProcess.Telemetry.emit_session_start_event(session_id)
360+
Telemetry.emit_session_start_event(session_id)
360361

361362
worker_args =
362363
if arg, do: [name: child_name(session_id), arg: arg], else: [name: child_name(session_id)]
@@ -365,15 +366,15 @@ defmodule Phoenix.SessionProcess.ProcessSupervisor do
365366

366367
case DynamicSupervisor.start_child(__MODULE__, spec) do
367368
{:ok, pid} = result ->
368-
Registry.register(Phoenix.SessionProcess.Registry, pid, module)
369-
Phoenix.SessionProcess.Cleanup.schedule_session_cleanup(session_id)
369+
Registry.register(SessionRegistry, pid, module)
370+
Cleanup.schedule_session_cleanup(session_id)
370371
duration = System.monotonic_time() - start_time
371372
Telemetry.emit_session_start(session_id, module, pid, duration: duration)
372373
result
373374

374375
{:ok, pid, _info} = result ->
375-
Registry.register(Phoenix.SessionProcess.Registry, pid, module)
376-
Phoenix.SessionProcess.Cleanup.schedule_session_cleanup(session_id)
376+
Registry.register(SessionRegistry, pid, module)
377+
Cleanup.schedule_session_cleanup(session_id)
377378
duration = System.monotonic_time() - start_time
378379
Telemetry.emit_session_start(session_id, module, pid, duration: duration)
379380
result
@@ -399,7 +400,7 @@ defmodule Phoenix.SessionProcess.ProcessSupervisor do
399400
Error.invalid_session_id(session_id)
400401

401402
{:error, :session_limit_reached} ->
402-
max_sessions = Phoenix.SessionProcess.Config.max_sessions()
403+
max_sessions = Config.max_sessions()
403404
duration = System.monotonic_time() - start_time
404405

405406
Telemetry.emit_session_start_error(
@@ -414,23 +415,23 @@ defmodule Phoenix.SessionProcess.ProcessSupervisor do
414415
end
415416

416417
defp get_session_module(pid) do
417-
case Registry.lookup(Phoenix.SessionProcess.Registry, pid) do
418+
case Registry.lookup(SessionRegistry, pid) do
418419
[{_, module}] -> module
419-
_ -> Phoenix.SessionProcess.Config.session_process()
420+
_ -> Config.session_process()
420421
end
421422
end
422423

423424
defp validate_session_id(session_id) do
424-
if Phoenix.SessionProcess.Config.valid_session_id?(session_id) do
425+
if Config.valid_session_id?(session_id) do
425426
:ok
426427
else
427428
{:error, :invalid_session_id}
428429
end
429430
end
430431

431432
defp check_session_limits do
432-
max_sessions = Phoenix.SessionProcess.Config.max_sessions()
433-
current_sessions = Registry.count(Phoenix.SessionProcess.Registry)
433+
max_sessions = Config.max_sessions()
434+
current_sessions = Registry.count(SessionRegistry)
434435

435436
if current_sessions < max_sessions do
436437
:ok

test/phoenix/session_process/state_test.exs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
defmodule Phoenix.SessionProcess.StateTest do
22
use ExUnit.Case, async: true
3-
alias Phoenix.SessionProcess.State
3+
alias Phoenix.SessionProcess.{Redux, State}
44

55
describe "start_link/1" do
66
test "starts with default state" do
@@ -199,14 +199,14 @@ defmodule Phoenix.SessionProcess.StateTest do
199199
{:ok, pid} = State.start_link(%{redux: nil})
200200

201201
# This tests the interaction pattern
202-
redux = Phoenix.SessionProcess.Redux.init_state(%{count: 0})
202+
redux = Redux.init_state(%{count: 0})
203203
reducer = fn state, {:increment, val} -> %{state | count: state.count + val} end
204204

205-
new_redux = Phoenix.SessionProcess.Redux.dispatch(redux, {:increment, 5}, reducer)
205+
new_redux = Redux.dispatch(redux, {:increment, 5}, reducer)
206206
State.update_state(pid, fn _ -> %{redux: new_redux} end)
207207

208208
state = State.get_state(pid)
209-
assert Phoenix.SessionProcess.Redux.current_state(state.redux).count == 5
209+
assert Redux.current_state(state.redux).count == 5
210210
end
211211
end
212212
end

test/phoenix/session_process_test.exs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ defmodule Phoenix.SessionProcessTest do
33
# doctest Phoenix.SessionProcess # Disabled to avoid test interference
44

55
alias Phoenix.SessionProcess
6+
alias Phoenix.SessionProcess.SessionId
67

78
setup do
89
# Ensure supervisor is started
@@ -25,29 +26,29 @@ defmodule Phoenix.SessionProcessTest do
2526
end
2627

2728
test "test start session process" do
28-
session_id = Phoenix.SessionProcess.SessionId.generate_unique_session_id()
29+
session_id = SessionId.generate_unique_session_id()
2930
assert SessionProcess.started?(session_id) == false
3031
{:ok, pid} = SessionProcess.start(session_id, TestProcess, %{value: 0})
3132
assert is_pid(pid)
3233
assert SessionProcess.started?(session_id) == true
3334
end
3435

3536
test "test terminate session process" do
36-
session_id = Phoenix.SessionProcess.SessionId.generate_unique_session_id()
37+
session_id = SessionId.generate_unique_session_id()
3738
{:ok, _pid} = SessionProcess.start(session_id, TestProcess, %{value: 0})
3839
assert SessionProcess.started?(session_id) == true
3940
SessionProcess.terminate(session_id)
4041
assert SessionProcess.started?(session_id) == false
4142
end
4243

4344
test "test call on session process" do
44-
session_id = Phoenix.SessionProcess.SessionId.generate_unique_session_id()
45+
session_id = SessionId.generate_unique_session_id()
4546
{:ok, _pid} = SessionProcess.start(session_id, TestProcess, %{value: 123})
4647
assert SessionProcess.call(session_id, :get_value) == 123
4748
end
4849

4950
test "test cast on session process" do
50-
session_id = Phoenix.SessionProcess.SessionId.generate_unique_session_id()
51+
session_id = SessionId.generate_unique_session_id()
5152
{:ok, _pid} = SessionProcess.start(session_id, TestProcess, %{value: 0})
5253
assert SessionProcess.call(session_id, :get_value) == 0
5354
SessionProcess.cast(session_id, :add_one)

test/support/test_process.ex

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,23 @@ defmodule TestProcess do
88

99
use Phoenix.SessionProcess, :process
1010

11+
alias Phoenix.SessionProcess.State
12+
1113
@impl true
1214
def init(init_arg \\ %{}) do
13-
{:ok, agent} = Phoenix.SessionProcess.State.start_link(init_arg)
15+
{:ok, agent} = State.start_link(init_arg)
1416
{:ok, %{agent: agent}}
1517
end
1618

1719
@impl true
1820
def handle_call(:get_value, _from, state) do
19-
{:reply, Phoenix.SessionProcess.State.get(state.agent, :value), state}
21+
{:reply, State.get(state.agent, :value), state}
2022
end
2123

2224
@impl true
2325
def handle_cast(:add_one, state) do
24-
value = Phoenix.SessionProcess.State.get(state.agent, :value)
25-
Phoenix.SessionProcess.State.put(state.agent, :value, value + 1)
26+
value = State.get(state.agent, :value)
27+
State.put(state.agent, :value, value + 1)
2628
{:noreply, state}
2729
end
2830
end

0 commit comments

Comments
 (0)