downloader/api/internal/app/persistence/database.go

30 lines
784 B
Go
Raw Permalink Normal View History

2021-12-22 20:21:24 +01:00
package persistence
import (
"context"
"database/sql"
"downloader/internal/app/persistence/migrations"
"github.com/uptrace/bun"
"github.com/uptrace/bun/dialect/pgdialect"
"github.com/uptrace/bun/driver/pgdriver"
"github.com/uptrace/bun/extra/bundebug"
"github.com/uptrace/bun/migrate"
)
func NewPostgresDB() *bun.DB {
dsn := "postgres://downloader:downloadersecret@localhost:5432/downloader?sslmode=disable"
sqldb := sql.OpenDB(pgdriver.NewConnector(pgdriver.WithDSN(dsn)))
db := bun.NewDB(sqldb, pgdialect.New())
db.AddQueryHook(bundebug.NewQueryHook(
bundebug.WithVerbose(true),
bundebug.FromEnv("BUNDEBUG")))
migrator := migrate.NewMigrator(db, migrations.Migrations)
bgCtx := context.Background()
migrator.Init(bgCtx)
migrator.Migrate(bgCtx)
return db
}