@@ -11,24 +11,24 @@ defmodule PhoenixScopePlayer.DataProvider do
1111 Lists all available debug sessions.
1212 """
1313 def list_sessions do
14- IO . puts ( "\n === Listing Sessions ===" )
14+ Logger . info ( "\n === Listing Sessions ===" )
1515 case File . ls ( @ sessions_dir ) do
1616 { :ok , session_dirs } ->
17- IO . puts ( "Found #{ length ( session_dirs ) } session directories" )
17+ Logger . info ( "Found #{ length ( session_dirs ) } session directories" )
1818 sessions = session_dirs
1919 |> Enum . map ( & load_session_metadata / 1 )
2020 |> Enum . reject ( & is_nil / 1 )
2121 |> Enum . sort_by ( & & 1 [ "date" ] , :desc )
2222
23- IO . puts ( "Processed #{ length ( sessions ) } valid sessions:" )
23+ Logger . info ( "Processed #{ length ( sessions ) } valid sessions:" )
2424 Enum . each ( sessions , fn session ->
25- IO . puts ( " - #{ session [ "id" ] } : #{ session [ "event_count" ] } events" )
25+ Logger . info ( " - #{ session [ "id" ] } : #{ session [ "event_count" ] } events" )
2626 end )
2727
2828 sessions
2929
3030 { :error , reason } ->
31- IO . puts ( "Error listing sessions: #{ inspect ( reason ) } " )
31+ Logger . error ( "Error listing sessions: #{ inspect ( reason ) } " )
3232 [ ]
3333 end
3434 end
@@ -37,32 +37,70 @@ defmodule PhoenixScopePlayer.DataProvider do
3737 Gets the complete data for a specific session.
3838 """
3939 def get_session_data ( session_id ) do
40- IO . puts ( "\n === Getting Session Data: #{ session_id } ===" )
40+ Logger . info ( "\n === Getting Session Data: #{ session_id } ===" )
4141 session_dir = Path . join ( @ sessions_dir , session_id )
4242
4343 with { :ok , metadata } <- read_json_file ( session_dir , "metadata.json" ) ,
4444 { :ok , events } <- read_json_file ( session_dir , "events.json" ) ,
4545 { :ok , source_code } <- read_json_file ( session_dir , "source_code.json" ) do
4646
47- IO . puts ( "Metadata: #{ inspect ( metadata ) } " )
48- IO . puts ( "Events count: #{ length ( events || [ ] ) } " )
47+ # Transform events into the expected format
48+ transformed_events = Enum . map ( events , fn event ->
49+ % {
50+ "type" => event [ "type" ] ,
51+ "module" => get_in ( event , [ "data" , "module" ] ) ,
52+ "function" => get_in ( event , [ "data" , "function" ] ) ,
53+ "args" => format_args ( get_in ( event , [ "data" , "args" ] ) ) ,
54+ "return_value" => format_return_value ( get_in ( event , [ "data" , "return_value" ] ) ) ,
55+ "pid" => event [ "id" ] ,
56+ "timestamp" => event [ "timestamp_ns" ] ,
57+ "variables" => get_in ( event , [ "data" , "variables" ] )
58+ }
59+ end )
60+
61+ # Transform source code into the expected format
62+ transformed_source_code = % {
63+ "files" => Map . new ( source_code , fn { module , content } ->
64+ { module , % {
65+ "content" => content ,
66+ "type" => "elixir"
67+ } }
68+ end )
69+ }
70+
71+ Logger . info ( "Metadata: #{ inspect ( metadata ) } " )
72+ Logger . info ( "Events count: #{ length ( transformed_events ) } " )
73+ Logger . info ( "Source code files: #{ inspect ( Map . keys ( transformed_source_code [ "files" ] ) ) } " )
4974
5075 { :ok , % {
51- metadata: metadata ,
52- events: events , # The events are directly in the root of events.json
53- source_code: source_code
76+ " metadata" => metadata ,
77+ " events" => transformed_events ,
78+ " source_code" => transformed_source_code
5479 } }
5580 else
5681 error ->
57- IO . puts ( "Error reading session data: #{ inspect ( error ) } " )
82+ Logger . error ( "Error reading session data: #{ inspect ( error ) } " )
5883 { :error , :not_found }
5984 end
6085 end
6186
6287 # Private helpers
6388
89+ defp format_args ( nil ) , do: nil
90+ defp format_args ( args ) when is_list ( args ) do
91+ Enum . map ( args , & format_value / 1 )
92+ end
93+
94+ defp format_return_value ( nil ) , do: nil
95+ defp format_return_value ( value ) , do: format_value ( value )
96+
97+ defp format_value ( % { "type" => type , "value" => value } ) do
98+ "#{ type } : #{ value } "
99+ end
100+ defp format_value ( value ) , do: inspect ( value )
101+
64102 defp load_session_metadata ( session_dir ) do
65- IO . puts ( "\n Loading metadata for session: #{ session_dir } " )
103+ Logger . info ( "\n Loading metadata for session: #{ session_dir } " )
66104 case read_json_file ( Path . join ( @ sessions_dir , session_dir ) , "metadata.json" ) do
67105 { :ok , metadata } ->
68106 # Read events file to get actual event count
@@ -78,36 +116,36 @@ defmodule PhoenixScopePlayer.DataProvider do
78116
79117 session = Map . merge ( metadata , % {
80118 "id" => session_dir ,
81- "name" => session_dir |> String . replace ( "_" , " " ) |> String . capitalize ( ) ,
119+ "name" => metadata [ "name" ] || session_dir |> String . replace ( "_" , " " ) |> String . capitalize ( ) ,
82120 "date" => metadata [ "timestamp" ] || "Unknown" ,
83- "description" => "Debug session with #{ actual_event_count } events"
121+ "description" => metadata [ "description" ] || "Debug session with #{ actual_event_count } events"
84122 } )
85123
86- IO . puts ( " Loaded session: #{ inspect ( session , pretty: true ) } " )
124+ Logger . info ( " Loaded session: #{ inspect ( session , pretty: true ) } " )
87125 session
88126
89127 error ->
90- IO . puts ( " Error loading metadata: #{ inspect ( error ) } " )
128+ Logger . error ( " Error loading metadata: #{ inspect ( error ) } " )
91129 nil
92130 end
93131 end
94132
95133 defp read_json_file ( dir , filename ) do
96134 path = Path . join ( dir , filename )
97- IO . puts ( "Reading JSON file: #{ path } " )
135+ Logger . info ( "Reading JSON file: #{ path } " )
98136
99137 case File . read ( path ) do
100138 { :ok , content } ->
101139 case Jason . decode ( content ) do
102140 { :ok , data } ->
103- IO . puts ( " Successfully decoded JSON" )
141+ Logger . info ( " Successfully decoded JSON: #{ inspect ( String . slice ( content , 0 .. 100 ) ) } ... " )
104142 { :ok , data }
105143 error ->
106- IO . puts ( " Error decoding JSON: #{ inspect ( error ) } " )
144+ Logger . error ( " Error decoding JSON: #{ inspect ( error ) } " )
107145 error
108146 end
109147 { :error , reason } ->
110- IO . puts ( " Error reading file: #{ inspect ( reason ) } " )
148+ Logger . error ( " Error reading file: #{ inspect ( reason ) } " )
111149 { :error , :not_found }
112150 end
113151 end
0 commit comments