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(<<~SQL.squish) INSERT INTO #{quoted_table} (#{quoted_column("version")}, #{quoted_column("name")}, #{quoted_column("database")}, #{quoted_column("schema")}, #{quoted_column("branch")}, #{quoted_column("manual_mode")}, #{quoted_column("created_at")}) VALUES (#{connection.quote(payload[:version].to_s)}, #{connection.quote(payload[:name].to_s)}, #{connection.quote(payload[:database].to_s)}, #{connection.quote((payload[:schema] || "default").to_s)}, #{connection.quote(payload[:branch].to_s)}, #{connection.quote(!!payload[:manual_mode])}, #{connection.quote(Time.current)}) SQL end |
.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(<<~SQL.squish).to_i SELECT COUNT(*) FROM #{quoted_table} SQL end |