dsn.go 737 B

12345678910111213141516171819202122232425262728293031323334
  1. package orm
  2. import "fmt"
  3. type Config struct {
  4. Driver string `json:"driver"`
  5. Host string `json:"host"`
  6. Port int `json:"port"`
  7. Name string `json:"name"`
  8. User string `json:"user"`
  9. Password string `json:"password"`
  10. Path string `json:"path"`
  11. }
  12. func ParseDSN(cfg *Config) string {
  13. if cfg.Driver == "sqlite3" {
  14. return cfg.Path
  15. } else if cfg.Driver == "mysql" {
  16. return fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8&parseTime=True&loc=Local",
  17. cfg.User,
  18. cfg.Password,
  19. cfg.Host,
  20. cfg.Port,
  21. cfg.Name)
  22. } else if cfg.Driver == "postgres" {
  23. return fmt.Sprintf("host=%s port=%d user=%s dbname=%s password=%s",
  24. cfg.Host,
  25. cfg.Port,
  26. cfg.User,
  27. cfg.Name,
  28. cfg.Password)
  29. }
  30. return ""
  31. }