users/internal/databases.go
GnomeZworc 3de726658f
Some checks failed
Test Pipeline / lint (pull_request) Failing after 40s
Test Pipeline / ci-test (pull_request) Successful in 4m32s
1.3.0: go: add return check
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2025-09-26 02:37:24 +02:00

50 lines
960 B
Go

package logins
import (
"gorm.io/driver/postgres"
"gorm.io/gorm"
)
type Users struct {
Username string `gorm:"primaryKey"`
Email string `gorm:"unique:users_email_key"`
Password string `gorm:""`
}
func DropUnusedColumns(DB *gorm.DB, values ...interface{}) {
for _, dst := range values {
stmt := &gorm.Statement{DB: DB}
if stmt.Parse(dst) != nil {
return
}
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 {
if DB.Migrator().DropColumn(dst, columns[i].Name()) != nil {
return
}
}
}
}
}
func Init_database(dsn string) (*gorm.DB, error) {
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
if err != nil {
return db, err
}
db.AutoMigrate(&Users{})
DropUnusedColumns(db, &Users{})
return db, nil
}