44 lines
912 B
Go
44 lines
912 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}
|
|
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"
|
|
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
|
|
if err != nil {
|
|
}
|
|
db.AutoMigrate(&Users{})
|
|
DropUnusedColumns(db, &Users{})
|
|
}
|