1
Fork 0

Attempt to fix clear db for mysql

This commit is contained in:
viktorstrate 2021-04-24 19:28:20 +02:00
parent ed02e90338
commit 3073cfb953
No known key found for this signature in database
GPG Key ID: 3F855605109C1E8A
2 changed files with 15 additions and 3 deletions

View File

@ -191,22 +191,28 @@ func MigrateDatabase(db *gorm.DB) error {
func ClearDatabase(db *gorm.DB) error {
err := db.Transaction(func(tx *gorm.DB) error {
db_driver := drivers.DatabaseDriver()
if db_driver == drivers.DatabaseDriverMysql {
if err := tx.Exec("SET FOREIGN_KEY_CHECKS = 0;").Error; err != nil {
return err
}
}
dry_run := tx.Session(&gorm.Session{DryRun: true})
for _, model := range database_models {
// get table name of model structure
table := dry_run.Find(model).Statement.Table
switch drivers.DatabaseDriver() {
switch db_driver {
case drivers.DatabaseDriverPostgres:
if err := tx.Exec(fmt.Sprintf("TRUNCATE TABLE %s CASCADE", table)).Error; err != nil {
return err
}
break
case drivers.DatabaseDriverMysql:
if err := tx.Exec(fmt.Sprintf("TRUNCATE TABLE %s", table)).Error; err != nil {
return err
}
break
case drivers.DatabaseDriverSqlite:
if err := tx.Exec(fmt.Sprintf("DELETE FROM %s", table)).Error; err != nil {
return err
@ -215,6 +221,12 @@ func ClearDatabase(db *gorm.DB) error {
}
if db_driver == drivers.DatabaseDriverMysql {
if err := tx.Exec("SET FOREIGN_KEY_CHECKS = 1;").Error; err != nil {
return err
}
}
return nil
})

Binary file not shown.