Class: RobotLab::Audit::EventLog
- Inherits:
-
Object
- Object
- RobotLab::Audit::EventLog
- Defined in:
- lib/robot_lab/audit/event_log.rb
Constant Summary collapse
- SCHEMA =
<<~SQL CREATE TABLE IF NOT EXISTS network_runs ( id INTEGER PRIMARY KEY AUTOINCREMENT, run_id TEXT NOT NULL UNIQUE, network_name TEXT, input TEXT, result TEXT, error_class TEXT, error_message TEXT, started_at TEXT NOT NULL, finished_at TEXT, duration_ms REAL ); CREATE TABLE IF NOT EXISTS audit_events ( id INTEGER PRIMARY KEY AUTOINCREMENT, run_id TEXT, event_type TEXT NOT NULL, robot_name TEXT, tool_name TEXT, input TEXT, output TEXT, error_class TEXT, error_message TEXT, started_at TEXT NOT NULL, finished_at TEXT, duration_ms REAL ); SQL
- NETWORK_RUN_COLUMNS =
%i[id run_id network_name input result error_class error_message started_at finished_at duration_ms].freeze
- AUDIT_EVENT_COLUMNS =
%i[id run_id event_type robot_name tool_name input output error_class error_message started_at finished_at duration_ms].freeze
Instance Method Summary collapse
- #events_for(run_id) ⇒ Object
-
#initialize(db_path:) ⇒ EventLog
constructor
A new instance of EventLog.
- #network_runs(limit: 100) ⇒ Object
- #recent_errors(limit: 50) ⇒ Object
- #record_event(run_id:, event_type:, robot_name:, tool_name:, input:, output:, error_class:, error_message:, started_at:, finished_at:, duration_ms:) ⇒ Object
- #record_network_run(run_id:, network_name:, input:, result:, error_class:, error_message:, started_at:, finished_at:, duration_ms:) ⇒ Object
Constructor Details
Instance Method Details
#events_for(run_id) ⇒ Object
76 77 78 79 |
# File 'lib/robot_lab/audit/event_log.rb', line 76 def events_for(run_id) rows = @db.execute('SELECT * FROM audit_events WHERE run_id = ? ORDER BY started_at', [run_id]) rows.map { |r| row_to_hash(:audit_events, r) } end |
#network_runs(limit: 100) ⇒ Object
71 72 73 74 |
# File 'lib/robot_lab/audit/event_log.rb', line 71 def network_runs(limit: 100) rows = @db.execute('SELECT * FROM network_runs ORDER BY started_at DESC LIMIT ?', [limit]) rows.map { |r| row_to_hash(:network_runs, r) } end |
#recent_errors(limit: 50) ⇒ Object
81 82 83 84 85 86 87 |
# File 'lib/robot_lab/audit/event_log.rb', line 81 def recent_errors(limit: 50) rows = @db.execute( 'SELECT * FROM audit_events WHERE error_class IS NOT NULL ORDER BY started_at DESC LIMIT ?', [limit] ) rows.map { |r| row_to_hash(:audit_events, r) } end |
#record_event(run_id:, event_type:, robot_name:, tool_name:, input:, output:, error_class:, error_message:, started_at:, finished_at:, duration_ms:) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/robot_lab/audit/event_log.rb', line 59 def record_event(run_id:, event_type:, robot_name:, tool_name:, input:, output:, error_class:, error_message:, started_at:, finished_at:, duration_ms:) @db.execute( "INSERT INTO audit_events (run_id, event_type, robot_name, tool_name, input, output, error_class, error_message, started_at, finished_at, duration_ms) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", [run_id, event_type, robot_name, tool_name, input, output, error_class, , started_at, finished_at, duration_ms] ) end |
#record_network_run(run_id:, network_name:, input:, result:, error_class:, error_message:, started_at:, finished_at:, duration_ms:) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/robot_lab/audit/event_log.rb', line 47 def record_network_run(run_id:, network_name:, input:, result:, error_class:, error_message:, started_at:, finished_at:, duration_ms:) @db.execute( "INSERT INTO network_runs (run_id, network_name, input, result, error_class, error_message, started_at, finished_at, duration_ms) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)", [run_id, network_name, input, result, error_class, , started_at, finished_at, duration_ms] ) end |