main.go 905 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package database
  2. import (
  3. "fmt"
  4. "log"
  5. "os"
  6. "path/filepath"
  7. migrate "github.com/golang-migrate/migrate/v4"
  8. _ "github.com/golang-migrate/migrate/v4/database/postgres"
  9. _ "github.com/golang-migrate/migrate/v4/source/file"
  10. config "github.com/felamaslen/gmus-backend/pkg/config"
  11. _ "github.com/jackc/pgx/stdlib"
  12. "github.com/jmoiron/sqlx"
  13. )
  14. var db *sqlx.DB
  15. func GetConnection() *sqlx.DB {
  16. if db != nil {
  17. return db
  18. }
  19. db = sqlx.MustConnect("pgx", config.GetConfig().DatabaseUrl)
  20. return db
  21. }
  22. func EndPool() {
  23. if db == nil {
  24. return
  25. }
  26. db.Close()
  27. }
  28. func MigrateDatabase() {
  29. cwd, err := os.Getwd()
  30. if err != nil {
  31. log.Fatal("Error getting directory:", err)
  32. return
  33. }
  34. directoryUrl := fmt.Sprintf("file://%s", filepath.Join(cwd, "migrations"))
  35. m, err := migrate.New(directoryUrl, config.GetConfig().DatabaseUrl)
  36. if err != nil {
  37. log.Fatal("Error setting up: ", err)
  38. }
  39. m.Up()
  40. }