setup.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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(db *gorm.DB) {
  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. panicHelper(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 m {
  44. db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
  45. panicHelper(err)
  46. migrate(db)
  47. sqlDB, err := db.DB()
  48. panicHelper(err)
  49. panicHelper(sqlDB.Close())
  50. }
  51. if common.LoggerConfig.LogLevel == "debug" {
  52. DB, err = gorm.Open(postgres.Open(dsn), &gorm.Config{
  53. Logger: logger.NewGormLogger(logger.WithGroup("gorm")),
  54. })
  55. } else {
  56. DB, err = gorm.Open(postgres.Open(dsn), &gorm.Config{})
  57. }
  58. panicHelper(err)
  59. slog.Info("setup gorm ok")
  60. }