From aad1dd29822f54cff7b0bf3f300af290d0ac4bbb Mon Sep 17 00:00:00 2001 From: Alexandre KHORSI Date: Mon, 20 Sep 2021 16:34:01 +0200 Subject: [PATCH] Add disable option to avoid creating migration table on getting db map --- migrate.go | 11 +++++++++++ migrate_test.go | 17 +++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/migrate.go b/migrate.go index 8973ee98..8797f8d5 100644 --- a/migrate.go +++ b/migrate.go @@ -37,6 +37,8 @@ type MigrationSet struct { // // This should be used sparingly as it is removing a safety check. IgnoreUnknown bool + // DisableCreateTable disable the creation of the migration table + DisableCreateTable bool } var migSet = MigrationSet{} @@ -106,6 +108,11 @@ func SetSchema(name string) { } } +// SetDisableCreateTable sets the boolean to disable the creation of the migration table +func SetDisableCreateTable(disable bool) { + migSet.DisableCreateTable = disable +} + // SetIgnoreUnknown sets the flag that skips database check to see if there is a // migration in the database that is not in migration source. // @@ -752,6 +759,10 @@ Check https://github.com/go-sql-driver/mysql#parsetime for more info.`) table.ColMap("Id").SetMaxSize(4000) } + if migSet.DisableCreateTable { + return dbMap, nil + } + err := dbMap.CreateTablesIfNotExists() if err != nil { // Oracle database does not support `if not exists`, so use `ORA-00955:` error code diff --git a/migrate_test.go b/migrate_test.go index d0163787..0d6a0875 100644 --- a/migrate_test.go +++ b/migrate_test.go @@ -648,3 +648,20 @@ func (s *SqliteMigrateSuite) TestRunMigrationObjOtherTable(c *C) { c.Assert(err, IsNil) c.Assert(n, Equals, 0) } + +func (s *SqliteMigrateSuite) TestSetDisableCreateTable(c *C) { + c.Assert(migSet.DisableCreateTable, Equals, false) + + SetDisableCreateTable(true) + c.Assert(migSet.DisableCreateTable, Equals, true) + + SetDisableCreateTable(false) + c.Assert(migSet.DisableCreateTable, Equals, false) +} + +func (s *SqliteMigrateSuite) TestGetMigrationDbMapWithDisableCreateTable(c *C) { + SetDisableCreateTable(false) + + _, err := migSet.getMigrationDbMap(s.Db, "postgres") + c.Assert(err, IsNil) +}