Module: Aidp::Database::Migrations
- Defined in:
- lib/aidp/database/migrations.rb
Overview
Migration runner for SQLite database Applies pending schema migrations in order
Class Method Summary collapse
-
.pending?(project_dir = Dir.pwd) ⇒ Boolean
Check if database needs migrations.
-
.pending_versions(project_dir = Dir.pwd) ⇒ Array<Integer>
Get list of pending migration versions.
-
.run!(project_dir = Dir.pwd) ⇒ Array<Integer>
Run all pending migrations.
Class Method Details
.pending?(project_dir = Dir.pwd) ⇒ Boolean
Check if database needs migrations
44 45 46 47 48 |
# File 'lib/aidp/database/migrations.rb', line 44 def pending?(project_dir = Dir.pwd) db = Database.connection(project_dir) current = current_schema_version(db) current < Schema.latest_version end |
.pending_versions(project_dir = Dir.pwd) ⇒ Array<Integer>
Get list of pending migration versions
54 55 56 57 |
# File 'lib/aidp/database/migrations.rb', line 54 def pending_versions(project_dir = Dir.pwd) db = Database.connection(project_dir) pending_migrations(current_schema_version(db)) end |
.run!(project_dir = Dir.pwd) ⇒ Array<Integer>
Run all pending migrations
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/aidp/database/migrations.rb', line 15 def run!(project_dir = Dir.pwd) db = Database.connection(project_dir) applied = [] current_version = current_schema_version(db) pending = pending_migrations(current_version) return applied if pending.empty? Aidp.log_debug("migrations", "running_migrations", current: current_version, pending_count: pending.size) pending.each do |version| apply_migration!(db, version) applied << version end Aidp.log_debug("migrations", "migrations_complete", applied_count: applied.size, new_version: Schema.latest_version) applied end |