package db import ( "context" "database/sql" "fmt" _ "github.com/lib/pq" "gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/pkg/pls" ) type Connection struct { db *sql.DB } func NewConnection(databaseURL string) (*Connection, error) { db, err := sql.Open("postgres", databaseURL) if err != nil { return nil, fmt.Errorf("failed to open database connection: %w", err) } return &Connection{ db: db, }, nil } func (c *Connection) Ping(ctx context.Context) error { if c.db == nil { return fmt.Errorf("database connection not available") } return c.db.PingContext(ctx) } func (c *Connection) IsHealthy(ctx context.Context) bool { if c.db == nil { return false } err := c.Ping(ctx) if err != nil { pls.LogError(ctx, err) return false } return true } func (c *Connection) Close() error { if c.db == nil { return nil } return c.db.Close() }