package main import ( "arbeitszeitmessung/helper" "arbeitszeitmessung/models" "database/sql" "fmt" "log/slog" "github.com/golang-migrate/migrate/v4" _ "github.com/golang-migrate/migrate/v4/database/postgres" _ "github.com/golang-migrate/migrate/v4/source/file" _ "github.com/lib/pq" ) func OpenDatabase() (models.IDatabase, error) { dbHost := helper.GetEnv("POSTGRES_HOST", "localhost") dbName := helper.GetEnv("POSTGRES_DB", "arbeitszeitmessung") dbUser := helper.GetEnv("POSTGRES_API_USER", "api_nutzer") dbPassword := helper.GetEnv("POSTGRES_API_PASS", "password") dbTz := helper.GetEnv("TZ", "Europe/Berlin") connStr := fmt.Sprintf("postgres://%s:%s@%s:5432/%s?sslmode=disable&TimeZone=%s", dbUser, dbPassword, dbHost, dbName, dbTz) return sql.Open("postgres", connStr) } func Migrate() error { return nil dbHost := helper.GetEnv("POSTGRES_HOST", "localhost") dbName := helper.GetEnv("POSTGRES_DB", "arbeitszeitmessung") // dbUser := helper.GetEnv("POSTGRES_USER", "api_nutzer") dbPassword := helper.GetEnv("POSTGRES_PASSWORD", "password") dbTz := helper.GetEnv("TZ", "Europe/Berlin") migrations := helper.GetEnv("MIGRATIONS_PATH", "../migrations") connStr := fmt.Sprintf("postgres://%s:%s@%s:5432/%s?sslmode=disable&TimeZone=%s", "migrate", dbPassword, dbHost, dbName, dbTz) m, err := migrate.New(fmt.Sprintf("file://%s", migrations), connStr) if err != nil { return err } slog.Info("Connected to database. Running migrations now.") // Migrate all the way up ... if err := m.Up(); err != nil && err != migrate.ErrNoChange { return err } slog.Info("Finished migrations starting webserver.") return nil }