Documentation
¶
Overview ¶
Package database provides cross-database query building utilities
Package database provides performance tracking for database operations
Index ¶
- Constants
- func GetSupportedDatabaseTypes() []string
- func NewTrackedConnection(conn database.Interface, log logger.Logger) database.Interface
- func ValidateDatabaseType(dbType string) error
- type BasicStatement
- func (s *BasicStatement) Close() error
- func (s *BasicStatement) Exec(ctx context.Context, args ...interface{}) (sql.Result, error)
- func (s *BasicStatement) Query(ctx context.Context, args ...interface{}) (*sql.Rows, error)
- func (s *BasicStatement) QueryRow(ctx context.Context, args ...interface{}) *sql.Row
- type Interface
- type QueryBuilder
- func (qb *QueryBuilder) BuildBooleanValue(value bool) interface{}
- func (qb *QueryBuilder) BuildCaseInsensitiveLike(column, value string) squirrel.Sqlizer
- func (qb *QueryBuilder) BuildCurrentTimestamp() string
- func (qb *QueryBuilder) BuildLimitOffset(query squirrel.SelectBuilder, limit, offset int) squirrel.SelectBuilder
- func (qb *QueryBuilder) BuildUUIDGeneration() string
- func (qb *QueryBuilder) BuildUpsert(table string, conflictColumns []string, ...) (query string, args []interface{}, err error)
- func (qb *QueryBuilder) Delete(table string) squirrel.DeleteBuilder
- func (qb *QueryBuilder) EscapeIdentifier(identifier string) string
- func (qb *QueryBuilder) Insert(table string) squirrel.InsertBuilder
- func (qb *QueryBuilder) InsertWithColumns(table string, columns ...string) squirrel.InsertBuilder
- func (qb *QueryBuilder) Select(columns ...string) squirrel.SelectBuilder
- func (qb *QueryBuilder) Update(table string) squirrel.UpdateBuilder
- func (qb *QueryBuilder) Vendor() string
- type TrackedConnection
- func (tc *TrackedConnection) Begin(ctx context.Context) (database.Tx, error)
- func (tc *TrackedConnection) BeginTx(ctx context.Context, opts *sql.TxOptions) (database.Tx, error)
- func (tc *TrackedConnection) Close() error
- func (tc *TrackedConnection) CreateMigrationTable(ctx context.Context) error
- func (tc *TrackedConnection) DatabaseType() string
- func (tc *TrackedConnection) Exec(ctx context.Context, query string, args ...interface{}) (sql.Result, error)
- func (tc *TrackedConnection) GetMigrationTable() string
- func (tc *TrackedConnection) Health(ctx context.Context) error
- func (tc *TrackedConnection) Prepare(ctx context.Context, query string) (database.Statement, error)
- func (tc *TrackedConnection) Query(ctx context.Context, query string, args ...interface{}) (*sql.Rows, error)
- func (tc *TrackedConnection) QueryRow(ctx context.Context, query string, args ...interface{}) *sql.Row
- func (tc *TrackedConnection) Stats() (map[string]interface{}, error)
- type TrackedDB
- func (db *TrackedDB) ExecContext(ctx context.Context, query string, args ...interface{}) (sql.Result, error)
- func (db *TrackedDB) PrepareContext(ctx context.Context, query string) (database.Statement, error)
- func (db *TrackedDB) QueryContext(ctx context.Context, query string, args ...interface{}) (*sql.Rows, error)
- func (db *TrackedDB) QueryRowContext(ctx context.Context, query string, args ...interface{}) *sql.Row
- type TrackedStatement
- func (ts *TrackedStatement) Close() error
- func (ts *TrackedStatement) Exec(ctx context.Context, args ...interface{}) (sql.Result, error)
- func (ts *TrackedStatement) Query(ctx context.Context, args ...interface{}) (*sql.Rows, error)
- func (ts *TrackedStatement) QueryRow(ctx context.Context, args ...interface{}) *sql.Row
- type TrackedStmt
- type TrackedTransaction
- func (tt *TrackedTransaction) Commit() error
- func (tt *TrackedTransaction) Exec(ctx context.Context, query string, args ...interface{}) (sql.Result, error)
- func (tt *TrackedTransaction) Prepare(ctx context.Context, query string) (database.Statement, error)
- func (tt *TrackedTransaction) Query(ctx context.Context, query string, args ...interface{}) (*sql.Rows, error)
- func (tt *TrackedTransaction) QueryRow(ctx context.Context, query string, args ...interface{}) *sql.Row
- func (tt *TrackedTransaction) Rollback() error
- type TrackedTx
- func (tx *TrackedTx) ExecContext(ctx context.Context, query string, args ...interface{}) (sql.Result, error)
- func (tx *TrackedTx) QueryContext(ctx context.Context, query string, args ...interface{}) (*sql.Rows, error)
- func (tx *TrackedTx) QueryRowContext(ctx context.Context, query string, args ...interface{}) *sql.Row
Constants ¶
const ( PostgreSQL = "postgresql" Oracle = "oracle" )
Database type constants
const ( // SlowQueryThreshold defines the duration above which queries are considered slow SlowQueryThreshold = 200 * time.Millisecond // MaxQueryLength defines the maximum length of query strings in logs to prevent unbounded payloads MaxQueryLength = 1000 )
Variables ¶
This section is empty.
Functions ¶
func GetSupportedDatabaseTypes ¶
func GetSupportedDatabaseTypes() []string
GetSupportedDatabaseTypes returns a list of supported database types
func NewTrackedConnection ¶ added in v0.2.0
NewTrackedConnection creates a new tracked database connection that wraps any Interface implementation
func ValidateDatabaseType ¶
ValidateDatabaseType checks if the database type is supported
Types ¶
type BasicStatement ¶ added in v0.2.0
BasicStatement wraps sql.Stmt to implement database.Statement
func (*BasicStatement) Close ¶ added in v0.2.0
func (s *BasicStatement) Close() error
type Interface ¶
Interface defines the common database operations supported by the framework
func NewConnection ¶
NewConnection creates a new database connection based on the configuration
type QueryBuilder ¶
type QueryBuilder struct {
// contains filtered or unexported fields
}
QueryBuilder provides vendor-specific SQL query building
func NewQueryBuilder ¶
func NewQueryBuilder(vendor string) *QueryBuilder
NewQueryBuilder creates a new query builder for the specified database vendor
func (*QueryBuilder) BuildBooleanValue ¶
func (qb *QueryBuilder) BuildBooleanValue(value bool) interface{}
BuildBooleanValue converts Go boolean to vendor-specific boolean representation
func (*QueryBuilder) BuildCaseInsensitiveLike ¶
func (qb *QueryBuilder) BuildCaseInsensitiveLike(column, value string) squirrel.Sqlizer
BuildCaseInsensitiveLike creates a case-insensitive LIKE condition based on vendor
func (*QueryBuilder) BuildCurrentTimestamp ¶
func (qb *QueryBuilder) BuildCurrentTimestamp() string
BuildCurrentTimestamp returns the current timestamp function for the vendor
func (*QueryBuilder) BuildLimitOffset ¶
func (qb *QueryBuilder) BuildLimitOffset(query squirrel.SelectBuilder, limit, offset int) squirrel.SelectBuilder
BuildLimitOffset creates LIMIT/OFFSET clause based on vendor
func (*QueryBuilder) BuildUUIDGeneration ¶
func (qb *QueryBuilder) BuildUUIDGeneration() string
BuildUUIDGeneration returns the UUID generation function for the vendor
func (*QueryBuilder) BuildUpsert ¶
func (qb *QueryBuilder) BuildUpsert(table string, conflictColumns []string, insertColumns, updateColumns map[string]interface{}) (query string, args []interface{}, err error)
BuildUpsert creates an UPSERT/MERGE query based on vendor
func (*QueryBuilder) Delete ¶
func (qb *QueryBuilder) Delete(table string) squirrel.DeleteBuilder
Delete creates a new DELETE query builder
func (*QueryBuilder) EscapeIdentifier ¶
func (qb *QueryBuilder) EscapeIdentifier(identifier string) string
EscapeIdentifier escapes database identifiers (table names, column names) for the vendor
func (*QueryBuilder) Insert ¶
func (qb *QueryBuilder) Insert(table string) squirrel.InsertBuilder
Insert creates a new INSERT query builder
func (*QueryBuilder) InsertWithColumns ¶ added in v0.3.0
func (qb *QueryBuilder) InsertWithColumns(table string, columns ...string) squirrel.InsertBuilder
InsertWithColumns creates an INSERT builder and applies vendor-specific quoting to the provided column list (e.g., quotes reserved words on Oracle).
func (*QueryBuilder) Select ¶
func (qb *QueryBuilder) Select(columns ...string) squirrel.SelectBuilder
Select creates a new SELECT query builder
func (*QueryBuilder) Update ¶
func (qb *QueryBuilder) Update(table string) squirrel.UpdateBuilder
Update creates a new UPDATE query builder
func (*QueryBuilder) Vendor ¶
func (qb *QueryBuilder) Vendor() string
Vendor returns the database vendor
type TrackedConnection ¶ added in v0.2.0
type TrackedConnection struct {
// contains filtered or unexported fields
}
TrackedConnection wraps database.Interface to provide performance tracking
func (*TrackedConnection) BeginTx ¶ added in v0.2.0
BeginTx starts a transaction with options and tracking wrapper
func (*TrackedConnection) Close ¶ added in v0.2.0
func (tc *TrackedConnection) Close() error
Close closes the database connection (no tracking needed)
func (*TrackedConnection) CreateMigrationTable ¶ added in v0.2.0
func (tc *TrackedConnection) CreateMigrationTable(ctx context.Context) error
CreateMigrationTable creates the migration table if it doesn't exist with tracking
func (*TrackedConnection) DatabaseType ¶ added in v0.2.0
func (tc *TrackedConnection) DatabaseType() string
DatabaseType returns the database type (no tracking needed)
func (*TrackedConnection) Exec ¶ added in v0.2.0
func (tc *TrackedConnection) Exec(ctx context.Context, query string, args ...interface{}) (sql.Result, error)
Exec executes a query without returning any rows with tracking
func (*TrackedConnection) GetMigrationTable ¶ added in v0.2.0
func (tc *TrackedConnection) GetMigrationTable() string
GetMigrationTable returns the migration table name (no tracking needed)
func (*TrackedConnection) Health ¶ added in v0.2.0
func (tc *TrackedConnection) Health(ctx context.Context) error
Health checks database connectivity (no tracking needed)
func (*TrackedConnection) Prepare ¶ added in v0.2.0
Prepare creates a prepared statement with tracking
func (*TrackedConnection) Query ¶ added in v0.2.0
func (tc *TrackedConnection) Query(ctx context.Context, query string, args ...interface{}) (*sql.Rows, error)
Query executes a query that returns rows with tracking
func (*TrackedConnection) QueryRow ¶ added in v0.2.0
func (tc *TrackedConnection) QueryRow(ctx context.Context, query string, args ...interface{}) *sql.Row
QueryRow executes a query that returns at most one row with tracking
func (*TrackedConnection) Stats ¶ added in v0.2.0
func (tc *TrackedConnection) Stats() (map[string]interface{}, error)
Stats returns database connection statistics (no tracking needed)
type TrackedDB ¶
TrackedDB wraps sql.DB to provide request-scoped performance tracking
func NewTrackedDB ¶
NewTrackedDB creates a new tracked database connection
func (*TrackedDB) ExecContext ¶
func (db *TrackedDB) ExecContext(ctx context.Context, query string, args ...interface{}) (sql.Result, error)
ExecContext executes a query without returning rows and tracks performance
func (*TrackedDB) PrepareContext ¶
PrepareContext prepares a statement with context and tracks performance
type TrackedStatement ¶ added in v0.2.0
type TrackedStatement struct {
// contains filtered or unexported fields
}
TrackedStatement wraps database.Statement to provide performance tracking
func (*TrackedStatement) Close ¶ added in v0.2.0
func (ts *TrackedStatement) Close() error
Close closes the prepared statement (no tracking needed)
type TrackedStmt ¶
TrackedStmt wraps database.Statement to provide performance tracking for prepared statements
func (*TrackedStmt) Exec ¶ added in v0.2.0
Exec executes a prepared statement with context and tracks performance
type TrackedTransaction ¶ added in v0.2.0
type TrackedTransaction struct {
// contains filtered or unexported fields
}
TrackedTransaction wraps database.Tx to provide performance tracking
func (*TrackedTransaction) Commit ¶ added in v0.2.0
func (tt *TrackedTransaction) Commit() error
Commit commits the transaction (no tracking needed)
func (*TrackedTransaction) Exec ¶ added in v0.2.0
func (tt *TrackedTransaction) Exec(ctx context.Context, query string, args ...interface{}) (sql.Result, error)
Exec executes a query without returning rows within the transaction with tracking
func (*TrackedTransaction) Prepare ¶ added in v0.2.0
func (tt *TrackedTransaction) Prepare(ctx context.Context, query string) (database.Statement, error)
Prepare creates a prepared statement within the transaction with tracking
func (*TrackedTransaction) Query ¶ added in v0.2.0
func (tt *TrackedTransaction) Query(ctx context.Context, query string, args ...interface{}) (*sql.Rows, error)
Query executes a query within the transaction with tracking
func (*TrackedTransaction) QueryRow ¶ added in v0.2.0
func (tt *TrackedTransaction) QueryRow(ctx context.Context, query string, args ...interface{}) *sql.Row
QueryRow executes a query that returns a single row within the transaction with tracking
func (*TrackedTransaction) Rollback ¶ added in v0.2.0
func (tt *TrackedTransaction) Rollback() error
Rollback rolls back the transaction (no tracking needed)
type TrackedTx ¶
TrackedTx wraps sql.Tx to provide performance tracking for transactions
func (*TrackedTx) ExecContext ¶
func (tx *TrackedTx) ExecContext(ctx context.Context, query string, args ...interface{}) (sql.Result, error)
ExecContext executes a query within a transaction and tracks performance