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