Documentation
¶
Overview ¶
Package database provides a database-backed data enrichment adapter with connection pooling and query building.
Index ¶
- func ConfigureConnectionPool(db *sql.DB, config Config)
- func GetConnectionStats(db *sql.DB) sql.DBStats
- func HealthCheck(db *sql.DB, timeout time.Duration) error
- func NewDatabaseEnricher(db *sql.DB, config Config) port.EnrichmentPort
- type Config
- type DatabaseEnricher
- func (de *DatabaseEnricher) BatchEnrich(ctx context.Context, keys []string, data []map[string]any) ([]map[string]any, error)
- func (de *DatabaseEnricher) Enrich(ctx context.Context, key string, data map[string]any) (map[string]any, error)
- func (de *DatabaseEnricher) IsAvailable(ctx context.Context) bool
- type QueryBuilder
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ConfigureConnectionPool ¶
ConfigureConnectionPool sets up the connection pool for a database Configures max connections, idle connections, and timeouts
func GetConnectionStats ¶
GetConnectionStats returns current connection pool statistics
func HealthCheck ¶
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