database

package
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 7, 2026 License: MIT Imports: 9 Imported by: 0

Documentation

Overview

Package database provides a database-backed data enrichment adapter with connection pooling and query building.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ConfigureConnectionPool

func ConfigureConnectionPool(db *sql.DB, config Config)

ConfigureConnectionPool sets up the connection pool for a database Configures max connections, idle connections, and timeouts

func GetConnectionStats

func GetConnectionStats(db *sql.DB) sql.DBStats

GetConnectionStats returns current connection pool statistics

func HealthCheck

func HealthCheck(db *sql.DB, timeout time.Duration) error

HealthCheck performs a health check on the database connection Returns error if connection cannot be established or timed out

func NewDatabaseEnricher

func NewDatabaseEnricher(db *sql.DB, config Config) port.EnrichmentPort

NewDatabaseEnricher creates a new database enricher instance with error handling

Types

type Config

type Config struct {
	QueryTimeout       time.Duration
	DefaultQuery       string
	MaxConnections     int
	MaxIdleConnections int
	ConnectTimeout     time.Duration
}

func DefaultConfig

func DefaultConfig() Config

type DatabaseEnricher

type DatabaseEnricher struct {
	// contains filtered or unexported fields
}

DatabaseEnricher implements port.EnrichmentPort using a database backend It supports both single and batch enrichment with configurable queries and error handling

func (*DatabaseEnricher) BatchEnrich

func (de *DatabaseEnricher) BatchEnrich(ctx context.Context, keys []string, data []map[string]any) ([]map[string]any, error)

BatchEnrich retrieves enrichment data for multiple keys from the database Implements efficient batch querying using IN clause with error handling

func (*DatabaseEnricher) Enrich

func (de *DatabaseEnricher) Enrich(ctx context.Context, key string, data map[string]any) (map[string]any, error)

Enrich retrieves enrichment data for a single key from the database Uses coordinator for automatic retry, circuit breaking, and error handling

func (*DatabaseEnricher) IsAvailable

func (de *DatabaseEnricher) IsAvailable(ctx context.Context) bool

IsAvailable checks if the database is reachable and healthy

type QueryBuilder

type QueryBuilder struct {
	// contains filtered or unexported fields
}

QueryBuilder helps construct safe SQL queries for enrichment operations

func NewQueryBuilder

func NewQueryBuilder(table string, columns ...string) *QueryBuilder

NewQueryBuilder creates a new query builder for a specific table

func (*QueryBuilder) BuildBatchSelect

func (qb *QueryBuilder) BuildBatchSelect(keyColumn string, keyCount int) string

BuildBatchSelect constructs a batch SELECT query with IN clause Takes key column name and number of placeholders to generate

func (*QueryBuilder) BuildSelect

func (qb *QueryBuilder) BuildSelect(whereClause string) string

BuildSelect constructs a SELECT query with the given WHERE clause Allows flexible query construction while maintaining safety

func (*QueryBuilder) SetColumns

func (qb *QueryBuilder) SetColumns(columns ...string) *QueryBuilder

SetColumns updates the columns to select

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL