From 4bdadc6e394c58e2419dac48740eadc4c0bd0ab3 Mon Sep 17 00:00:00 2001 From: Paul Procopiou <1726774+pauldps@users.noreply.github.com> Date: Thu, 11 Apr 2024 19:34:55 -0400 Subject: [PATCH 1/2] Add skip_migration support --- src/avram/migrator/migration.cr | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/avram/migrator/migration.cr b/src/avram/migrator/migration.cr index 925576ee2..619f9e4a9 100644 --- a/src/avram/migrator/migration.cr +++ b/src/avram/migrator/migration.cr @@ -18,6 +18,9 @@ abstract class Avram::Migrator::Migration::V1 end end + def initialize(@skip_transaction = false) + end + abstract def migrate abstract def version : Int64 @@ -74,6 +77,10 @@ abstract class Avram::Migrator::Migration::V1 end end + def skip_transaction (value : Bool) + @skip_transaction = value + end + private def track_migration(db : Avram::Database.class) db.exec "INSERT INTO migrations(version) VALUES ($1)", version end @@ -99,9 +106,14 @@ abstract class Avram::Migrator::Migration::V1 # ``` private def execute_in_transaction(statements : Array(String), &) database = Avram.settings.database_to_migrate - database.transaction do + if @skip_transaction statements.each { |s| database.exec s } yield database + else + database.transaction do + statements.each { |s| database.exec s } + yield database + end end rescue e : PQ::PQError raise FailedMigration.new(migration: self.class.name, statements: statements, cause: e) From d41639c99421a3ccc2e269dedf63323cdde07984 Mon Sep 17 00:00:00 2001 From: pauldps <1726774+pauldps@users.noreply.github.com> Date: Fri, 12 Apr 2024 22:38:48 -0400 Subject: [PATCH 2/2] Fix style --- src/avram/migrator/migration.cr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/avram/migrator/migration.cr b/src/avram/migrator/migration.cr index 619f9e4a9..b8d9ca349 100644 --- a/src/avram/migrator/migration.cr +++ b/src/avram/migrator/migration.cr @@ -77,7 +77,7 @@ abstract class Avram::Migrator::Migration::V1 end end - def skip_transaction (value : Bool) + def skip_transaction(value : Bool) @skip_transaction = value end