setup.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package models
  2. import (
  3. "errors"
  4. "fmt"
  5. "log/slog"
  6. )
  7. import (
  8. "gorm.io/driver/postgres"
  9. "gorm.io/gorm"
  10. )
  11. import (
  12. "auth-server/common"
  13. "auth-server/logger"
  14. )
  15. var (
  16. DB *gorm.DB
  17. err error
  18. )
  19. func panicHelper(err error) {
  20. if err != nil {
  21. panic(err)
  22. }
  23. }
  24. func migrate() {
  25. panicHelper(DB.AutoMigrate(&User{}))
  26. var user User
  27. err := DB.First(&user).Error
  28. if errors.Is(err, gorm.ErrRecordNotFound) {
  29. newAdmin := User{Name: "admin"}
  30. newAdmin.GenerateFromPassword([]byte("123456"))
  31. DB.Create(&newAdmin)
  32. }
  33. }
  34. func SetupGorm(m bool) {
  35. slog.Info("setup gorm")
  36. dsn := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%d sslmode=disable TimeZone=Asia/Shanghai",
  37. common.PostgresConfig.Ip,
  38. common.PostgresConfig.Username,
  39. common.PostgresConfig.Password,
  40. common.PostgresConfig.Name,
  41. common.PostgresConfig.Port,
  42. )
  43. if common.LoggerConfig.LogLevel == "debug" {
  44. DB, err = gorm.Open(postgres.Open(dsn), &gorm.Config{
  45. Logger: logger.NewGormLogger(logger.WithGroup("gorm")),
  46. })
  47. } else {
  48. DB, err = gorm.Open(postgres.Open(dsn), &gorm.Config{})
  49. }
  50. if err != nil {
  51. panic(err)
  52. }
  53. if m {
  54. migrate()
  55. }
  56. slog.Info("setup gorm ok")
  57. }