package database import ( "context" "fmt" "github.com/jackc/pgx/v5/pgxpool" "github.com/rs/zerolog/log" ) type MonitorState string const ( Monitored MonitorState = "monitored" Unmonitored MonitorState = "unmonitored" Excluded MonitorState = "excluded" ) type DB struct { Pool *pgxpool.Pool } func New(ctx context.Context, databaseURL string) (*DB, error) { pool, err := pgxpool.New(ctx, databaseURL) if err != nil { return nil, fmt.Errorf("connecting to database: %w", err) } if err := pool.Ping(ctx); err != nil { return nil, fmt.Errorf("pinging database: %w", err) } log.Info().Str("url", databaseURL).Msg("database connected") return &DB{Pool: pool}, nil } func (db *DB) Close() { db.Pool.Close() }