pgsql_driver.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package database
  2. import (
  3. "database/sql"
  4. "log"
  5. "os"
  6. "time"
  7. "gorm.io/driver/postgres"
  8. "gorm.io/gorm"
  9. "gorm.io/gorm/logger"
  10. "gorm.io/gorm/schema"
  11. "device-manage/common/config"
  12. "device-manage/common/global"
  13. "device-manage/tools"
  14. toolsConfig "device-manage/tools/config"
  15. )
  16. type PgSql struct {
  17. }
  18. func (e *PgSql) Setup() {
  19. var err error
  20. global.Source = e.GetConnect()
  21. log.Println(global.Source)
  22. db, err := sql.Open("postgresql", global.Source)
  23. if err != nil {
  24. global.Logger.Fatal(tools.Red(e.GetDriver()+" connect error :"), err)
  25. }
  26. global.Cfg.SetDb(&config.DBConfig{
  27. Driver: "mysql",
  28. DB: db,
  29. })
  30. global.Eloquent, err = e.Open(db, &gorm.Config{
  31. NamingStrategy: schema.NamingStrategy{
  32. SingularTable: true,
  33. },
  34. })
  35. if err != nil {
  36. log.Fatalf("%s connect error %v", e.GetDriver(), err)
  37. } else {
  38. log.Printf("%s connect success!", e.GetDriver())
  39. }
  40. if global.Eloquent.Error != nil {
  41. log.Fatalf("database error %v", global.Eloquent.Error)
  42. }
  43. if toolsConfig.LoggerConfig.EnabledDB {
  44. global.Eloquent.Logger = logger.New(log.New(os.Stdout, "\r\n", log.LstdFlags), logger.Config{
  45. SlowThreshold: time.Second,
  46. Colorful: true,
  47. LogLevel: logger.Info,
  48. })
  49. }
  50. }
  51. // 打开数据库连接
  52. func (e *PgSql) Open(db *sql.DB, cfg *gorm.Config) (*gorm.DB, error) {
  53. return gorm.Open(postgres.New(postgres.Config{Conn: db}), cfg)
  54. }
  55. func (e *PgSql) GetConnect() string {
  56. return toolsConfig.DatabaseConfig.Source
  57. }
  58. func (e *PgSql) GetDriver() string {
  59. return toolsConfig.DatabaseConfig.Driver
  60. }