From 82a057f131a364472f0a3c11fc73ba4f4a92de17 Mon Sep 17 00:00:00 2001 From: GnomeZworc Date: Sun, 31 Mar 2024 00:05:22 +0100 Subject: [PATCH] v1.2.0: back: add DropUnusedColumns Signed-off-by: GnomeZworc --- internal/databases.go | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/internal/databases.go b/internal/databases.go index 38f69f7..0e17ebd 100644 --- a/internal/databases.go +++ b/internal/databases.go @@ -11,6 +11,28 @@ type Users struct { Password string `gorm:""` } +func DropUnusedColumns(DB *gorm.DB, values ...interface{}) { + + for _, dst := range values { + stmt := &gorm.Statement{DB: DB} + stmt.Parse(dst) + fields := stmt.Schema.Fields + columns, _ := DB.Debug().Migrator().ColumnTypes(dst) + + for i := range columns { + found := false + for j := range fields { + if columns[i].Name() == fields[j].DBName { + found = true + break + } + } + if !found { + DB.Migrator().DropColumn(dst, columns[i].Name()) + } + } + } +} func Init_database() { dsn := "postgres://acc:totor@postgres:5432/accounts?sslmode=disable" @@ -18,4 +40,5 @@ func Init_database() { if err != nil { } db.AutoMigrate(&Users{}) + DropUnusedColumns(db, &Users{}) }