Documentation
¶
Index ¶
- Variables
- type Config
- type Database
- type DatabaseConnectionConfig
- type Manager
- func (m *Manager) Close(id string) error
- func (m *Manager) CloseAll() error
- func (m *Manager) Connect() error
- func (m *Manager) GetConnectedDatabases() []string
- func (m *Manager) GetDatabase(id string) (Database, error)
- func (m *Manager) GetDatabaseConfig(id string) (DatabaseConnectionConfig, error)
- func (m *Manager) GetDatabaseType(id string) (string, error)
- func (m *Manager) ListDatabases() []string
- func (m *Manager) LoadConfig(configJSON []byte) error
- type MultiDBConfig
- type PostgresSSLMode
Constants ¶
This section is empty.
Variables ¶
var ( ErrNotFound = errors.New("record not found") ErrAlreadyExists = errors.New("record already exists") ErrInvalidInput = errors.New("invalid input") ErrNotImplemented = errors.New("not implemented") ErrNoDatabase = errors.New("no database connection") )
Common database errors
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct { Type string Host string Port int User string Password string Name string // Additional PostgreSQL specific options SSLMode PostgresSSLMode SSLCert string SSLKey string SSLRootCert string ApplicationName string ConnectTimeout int // in seconds QueryTimeout int // in seconds, default is 30 seconds TargetSessionAttrs string // for PostgreSQL 10+ Options map[string]string // Extra connection options // Connection pool settings MaxOpenConns int MaxIdleConns int ConnMaxLifetime time.Duration ConnMaxIdleTime time.Duration }
Config represents database connection configuration
func (*Config) SetDefaults ¶
func (c *Config) SetDefaults()
SetDefaults sets default values for the configuration if they are not set
type Database ¶
type Database interface { // Core database operations Query(ctx context.Context, query string, args ...interface{}) (*sql.Rows, error) QueryRow(ctx context.Context, query string, args ...interface{}) *sql.Row Exec(ctx context.Context, query string, args ...interface{}) (sql.Result, error) // Transaction support BeginTx(ctx context.Context, opts *sql.TxOptions) (*sql.Tx, error) // Connection management Connect() error Close() error Ping(ctx context.Context) error // Metadata DriverName() string ConnectionString() string QueryTimeout() int // DB object access (for specific DB operations) DB() *sql.DB }
Database represents a generic database interface
func NewDatabase ¶
NewDatabase creates a new database connection based on the provided configuration
type DatabaseConnectionConfig ¶ added in v1.3.0
type DatabaseConnectionConfig struct { ID string `json:"id"` // Unique identifier for this connection Type string `json:"type"` // mysql or postgres Host string `json:"host"` Port int `json:"port"` User string `json:"user"` Password string `json:"password"` Name string `json:"name"` // PostgreSQL specific options SSLMode string `json:"ssl_mode,omitempty"` SSLCert string `json:"ssl_cert,omitempty"` SSLKey string `json:"ssl_key,omitempty"` SSLRootCert string `json:"ssl_root_cert,omitempty"` ApplicationName string `json:"application_name,omitempty"` ConnectTimeout int `json:"connect_timeout,omitempty"` QueryTimeout int `json:"query_timeout,omitempty"` // in seconds TargetSessionAttrs string `json:"target_session_attrs,omitempty"` Options map[string]string `json:"options,omitempty"` // Connection pool settings MaxOpenConns int `json:"max_open_conns,omitempty"` MaxIdleConns int `json:"max_idle_conns,omitempty"` ConnMaxLifetime int `json:"conn_max_lifetime_seconds,omitempty"` // in seconds ConnMaxIdleTime int `json:"conn_max_idle_time_seconds,omitempty"` // in seconds }
DatabaseConnectionConfig represents a single database connection configuration
type Manager ¶ added in v1.3.0
type Manager struct {
// contains filtered or unexported fields
}
Manager manages multiple database connections
func NewDBManager ¶ added in v1.3.0
func NewDBManager() *Manager
NewDBManager creates a new database manager
func (*Manager) Connect ¶ added in v1.3.0
Connect establishes connections to all configured databases
func (*Manager) GetConnectedDatabases ¶ added in v1.6.2
GetConnectedDatabases returns a list of all connected databases
func (*Manager) GetDatabase ¶ added in v1.6.2
GetDatabase retrieves a database connection by ID
func (*Manager) GetDatabaseConfig ¶ added in v1.6.2
func (m *Manager) GetDatabaseConfig(id string) (DatabaseConnectionConfig, error)
GetDatabaseConfig returns the configuration for a specific database
func (*Manager) GetDatabaseType ¶ added in v1.6.2
GetDatabaseType returns the type of a database by its ID
func (*Manager) ListDatabases ¶ added in v1.3.0
ListDatabases returns a list of all configured databases
func (*Manager) LoadConfig ¶ added in v1.3.0
LoadConfig loads database configurations from JSON
type MultiDBConfig ¶ added in v1.3.0
type MultiDBConfig struct {
Connections []DatabaseConnectionConfig `json:"connections"`
}
MultiDBConfig represents the configuration for multiple database connections
type PostgresSSLMode ¶ added in v1.6.2
type PostgresSSLMode string
PostgresSSLMode defines the SSL mode for PostgreSQL connections
const ( SSLDisable PostgresSSLMode = "disable" SSLRequire PostgresSSLMode = "require" SSLVerifyCA PostgresSSLMode = "verify-ca" SSLVerifyFull PostgresSSLMode = "verify-full" SSLPrefer PostgresSSLMode = "prefer" )
SSLMode constants for PostgreSQL