Class: Harbor::AuditLog
- Inherits:
-
Object
- Object
- Harbor::AuditLog
- Defined in:
- lib/harbor/audit_log.rb
Instance Method Summary collapse
- #close ⇒ Object
-
#initialize(db_path = nil) ⇒ AuditLog
constructor
A new instance of AuditLog.
- #query(project: nil, limit: 50) ⇒ Object
- #record(project:, operation:, destination: nil, parameters: nil, initiated_by: "cli", status: "success", output: nil, duration_ms: nil) ⇒ Object
- #record_complete(id, status:, output: nil, duration_ms: nil) ⇒ Object
- #record_start(project:, operation:, destination: nil, parameters: nil, initiated_by: "cli") ⇒ Object
Constructor Details
#initialize(db_path = nil) ⇒ AuditLog
Returns a new instance of AuditLog.
9 10 11 12 13 14 15 16 17 |
# File 'lib/harbor/audit_log.rb', line 9 def initialize(db_path = nil) db_path ||= DEFAULT_AUDIT_DB FileUtils.mkdir_p(File.dirname(db_path)) @db = SQLite3::Database.new(db_path) @db.execute("PRAGMA journal_mode=WAL") @db.execute("PRAGMA busy_timeout=5000") @db.results_as_hash = true create_table end |
Instance Method Details
#close ⇒ Object
50 51 52 |
# File 'lib/harbor/audit_log.rb', line 50 def close @db.close end |
#query(project: nil, limit: 50) ⇒ Object
42 43 44 45 46 47 48 |
# File 'lib/harbor/audit_log.rb', line 42 def query(project: nil, limit: 50) if project @db.execute("SELECT * FROM audit_log WHERE project = ? ORDER BY id DESC LIMIT ?", [project, limit]) else @db.execute("SELECT * FROM audit_log ORDER BY id DESC LIMIT ?", [limit]) end end |
#record(project:, operation:, destination: nil, parameters: nil, initiated_by: "cli", status: "success", output: nil, duration_ms: nil) ⇒ Object
34 35 36 37 38 39 40 |
# File 'lib/harbor/audit_log.rb', line 34 def record(project:, operation:, destination: nil, parameters: nil, initiated_by: "cli", status: "success", output: nil, duration_ms: nil) @db.execute( "INSERT INTO audit_log (timestamp, project, destination, operation, parameters, initiated_by, status, output, duration_ms) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)", [Time.now.utc.iso8601, project, destination, operation, parameters&.to_json, initiated_by, status, truncate_output(output), duration_ms] ) end |
#record_complete(id, status:, output: nil, duration_ms: nil) ⇒ Object
27 28 29 30 31 32 |
# File 'lib/harbor/audit_log.rb', line 27 def record_complete(id, status:, output: nil, duration_ms: nil) @db.execute( "UPDATE audit_log SET status = ?, output = ?, duration_ms = ? WHERE id = ?", [status, truncate_output(output), duration_ms, id] ) end |
#record_start(project:, operation:, destination: nil, parameters: nil, initiated_by: "cli") ⇒ Object
19 20 21 22 23 24 25 |
# File 'lib/harbor/audit_log.rb', line 19 def record_start(project:, operation:, destination: nil, parameters: nil, initiated_by: "cli") @db.execute( "INSERT INTO audit_log (timestamp, project, destination, operation, parameters, initiated_by, status) VALUES (?, ?, ?, ?, ?, ?, ?)", [Time.now.utc.iso8601, project, destination, operation, parameters&.to_json, initiated_by, "started"] ) @db.last_insert_row_id end |