40 lines
588 B
Go
40 lines
588 B
Go
package db
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"os"
|
|
"time"
|
|
|
|
"github.com/jackc/pgx/v5/pgxpool"
|
|
)
|
|
|
|
var Pool *pgxpool.Pool
|
|
|
|
func Connect() error {
|
|
dsn := fmt.Sprintf(
|
|
"postgres://%s:%s@%s:%s/%s?sslmode=disable",
|
|
os.Getenv("DB_USER"),
|
|
os.Getenv("DB_PASSWORD"),
|
|
os.Getenv("DB_HOST"),
|
|
os.Getenv("DB_PORT"),
|
|
os.Getenv("DB_NAME"),
|
|
)
|
|
|
|
c, cancel := context.WithTimeout(context.Background(), 5*time.Second)
|
|
defer cancel()
|
|
|
|
pool, err := pgxpool.New(c, dsn)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if err := pool.Ping(c); err != nil {
|
|
pool.Close()
|
|
return err
|
|
}
|
|
|
|
Pool = pool
|
|
return nil
|
|
}
|