Class: ActualDbSchema::RollbackStatsRepository
- Inherits:
-
Object
- Object
- ActualDbSchema::RollbackStatsRepository
- Defined in:
- lib/actual_db_schema/rollback_stats_repository.rb
Overview
Persists rollback events in DB.
Constant Summary collapse
- TABLE_NAME =
"actual_db_schema_rollback_events"
Class Method Summary collapse
Class Method Details
.record(payload) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/actual_db_schema/rollback_stats_repository.rb', line 9 def record(payload) ensure_table! connection.execute(" INSERT INTO \#{quoted_table}\n (\#{quoted_column(\"version\")}, \#{quoted_column(\"name\")}, \#{quoted_column(\"database\")},\n \#{quoted_column(\"schema\")}, \#{quoted_column(\"branch\")}, \#{quoted_column(\"manual_mode\")},\n \#{quoted_column(\"created_at\")})\n VALUES\n (\#{connection.quote(payload[:version].to_s)}, \#{connection.quote(payload[:name].to_s)},\n \#{connection.quote(payload[:database].to_s)}, \#{connection.quote((payload[:schema] || \"default\").to_s)},\n \#{connection.quote(payload[:branch].to_s)}, \#{connection.quote(!!payload[:manual_mode])},\n \#{connection.quote(Time.current)})\n SQL\nend\n".squish) |
.reset! ⇒ Object
43 44 45 46 47 |
# File 'lib/actual_db_schema/rollback_stats_repository.rb', line 43 def reset! return unless table_exists? connection.execute("DELETE FROM #{quoted_table}") end |
.stats ⇒ Object
24 25 26 27 28 29 30 31 32 33 |
# File 'lib/actual_db_schema/rollback_stats_repository.rb', line 24 def stats return empty_stats unless table_exists? { total: total_rollbacks, by_database: aggregate_by(:database), by_schema: aggregate_by(:schema), by_branch: aggregate_by(:branch) } end |
.total_rollbacks ⇒ Object
35 36 37 38 39 40 41 |
# File 'lib/actual_db_schema/rollback_stats_repository.rb', line 35 def total_rollbacks return 0 unless table_exists? connection.select_value(" SELECT COUNT(*) FROM \#{quoted_table}\n SQL\nend\n".squish).to_i |