/internal/pkg/models/base.go

https://github.com/it234/goapp · Go · 45 lines · 40 code · 5 blank · 0 comment · 6 complexity · 7ba3e9933a7aad3f44e11e4ecfb790c9 MD5 · raw file

  1. package models
  2. import (
  3. "fmt"
  4. "log"
  5. "os"
  6. "time"
  7. "github.com/it234/goapp/internal/pkg/config"
  8. "github.com/it234/goapp/internal/pkg/models/sys"
  9. "github.com/it234/goapp/internal/pkg/models/db"
  10. "github.com/jinzhu/gorm"
  11. )
  12. func InitDB(config *config.Config) {
  13. var gdb *gorm.DB
  14. var err error
  15. if config.Gorm.DBType=="mysql"{
  16. config.Gorm.DSN=config.MySQL.DSN()
  17. } else if config.Gorm.DBType=="sqlite3"{
  18. config.Gorm.DSN=config.Sqlite3.DSN()
  19. }
  20. gdb, err = gorm.Open(config.Gorm.DBType, config.Gorm.DSN)
  21. if err != nil {
  22. panic(err)
  23. }
  24. gdb.SingularTable(true)
  25. if config.Gorm.Debug {
  26. gdb.LogMode(true)
  27. gdb.SetLogger(log.New(os.Stdout, "\r\n", 0))
  28. }
  29. gdb.DB().SetMaxIdleConns(config.Gorm.MaxIdleConns)
  30. gdb.DB().SetMaxOpenConns(config.Gorm.MaxOpenConns)
  31. gdb.DB().SetConnMaxLifetime(time.Duration(config.Gorm.MaxLifetime) * time.Second)
  32. db.DB=gdb
  33. }
  34. func Migration() {
  35. fmt.Println(db.DB.AutoMigrate(new(sys.Menu)).Error)
  36. fmt.Println(db.DB.AutoMigrate(new(sys.Admins)).Error)
  37. fmt.Println(db.DB.AutoMigrate(new(sys.RoleMenu)).Error)
  38. fmt.Println(db.DB.AutoMigrate(new(sys.Role)).Error)
  39. fmt.Println(db.DB.AutoMigrate(new(sys.AdminsRole)).Error)
  40. }