Parent directory

psql.go

601 bytes
 1package db
 2
 3import (
 4	"context"
 5	"log/slog"
 6	"time"
 7
 8	"github.com/jackc/pgx/v5/pgxpool"
 9)
10
11type postgresDB struct {
12	l  *slog.Logger
13	db *pgxpool.Pool
14}
15
16var _ DB = (*postgresDB)(nil)
17
18func NewPostgresDB(log *slog.Logger, dbURI string) (*postgresDB, error) {
19	db, err := pgxpool.New(context.Background(), dbURI)
20	if err != nil {
21		return nil, err
22	}
23
24	ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
25	defer cancel()
26	err = db.Ping(ctx)
27	if err != nil {
28		return nil, err
29	}
30
31	return &postgresDB{
32		l:  log,
33		db: db,
34	}, nil
35}
36
37func (db *postgresDB) Close() {
38	db.db.Close()
39}