database

package
v0.8.2 Latest Latest
Warning

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

Go to latest
Published: Nov 2, 2025 License: Apache-2.0 Imports: 18 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DefaultMaxIdleConnsMultiplier = 4
	DefaultMaxOpenConnsMultiplier = 16
	DefaultMinIdleConns           = 25
	DefaultMinOpenConns           = 100
	DefaultConnMaxIdleTime        = 5 * time.Minute
	DefaultConnMaxLifetime        = 30 * time.Minute
)

Default connection pool constants.

Variables

View Source
var (
	ErrUnsupportedDBType = errors.New("unsupported database type")
)

Database error types.

View Source
var (
	Module = fx.Module(
		"vef:database",
		fx.Provide(
			fx.Annotate(
				func(lc fx.Lifecycle, config *config.DatasourceConfig) (db *bun.DB, err error) {
					if db, err = New(config); err != nil {
						return db, err
					}

					provider, exists := registry.provider(config.Type)
					if !exists {
						return nil, newUnsupportedDbTypeError(config.Type)
					}

					lc.Append(
						fx.StartStopHook(
							func(ctx context.Context) error {

								if err := db.PingContext(ctx); err != nil {
									return wrapPingError(provider.Type(), err)
								}

								if err := logDbVersion(provider, db, logger); err != nil {
									return err
								}

								logger.Infof("Database client started successfully: %s", provider.Type())

								return nil
							},
							func() error {
								logger.Info("Closing database connection...")

								return db.Close()
							},
						),
					)

					return db, err
				},
				fx.As(new(bun.IDB)),
				fx.As(fx.Self()),
			),
		),
	)
)

Functions

func New added in v0.5.4

func New(config *config.DatasourceConfig, options ...Option) (*bun.DB, error)

New creates a new *bun.DB instance with custom options.

Types

type ConnectionPoolConfig

type ConnectionPoolConfig struct {
	MaxIdleConns    int
	MaxOpenConns    int
	ConnMaxIdleTime time.Duration
	ConnMaxLifetime time.Duration
}

ConnectionPoolConfig defines the connection pool configuration.

func NewDefaultConnectionPoolConfig

func NewDefaultConnectionPoolConfig() *ConnectionPoolConfig

NewDefaultConnectionPoolConfig creates a default connection pool configuration.

func (*ConnectionPoolConfig) ApplyToDB

func (c *ConnectionPoolConfig) ApplyToDB(db interface {
	SetMaxIdleConns(int)
	SetMaxOpenConns(int)
	SetConnMaxIdleTime(time.Duration)
	SetConnMaxLifetime(time.Duration)
},
)

ApplyToDB applies the connection pool configuration to a database connection.

type DatabaseError

type DatabaseError struct {
	Type    constants.DbType
	Op      string
	Err     error
	Context map[string]any
}

DatabaseError represents a database-specific error with additional context.

func (*DatabaseError) Error

func (e *DatabaseError) Error() string

func (*DatabaseError) Unwrap

func (e *DatabaseError) Unwrap() error

type DatabaseProvider

type DatabaseProvider interface {
	// Connect establishes a connection to the database
	Connect(config *config.DatasourceConfig) (*sql.DB, schema.Dialect, error)

	// Type returns the database type identifier
	Type() constants.DbType

	// ValidateConfig validates the datasource configuration for this provider
	ValidateConfig(config *config.DatasourceConfig) error

	// QueryVersion queries the database version
	QueryVersion(db *bun.DB) (string, error)
}

DatabaseProvider defines the interface for database providers.

type Option

type Option func(*databaseOptions)

Option defines a function type for configuring databaseOptions.

func DisableQueryHook added in v0.5.4

func DisableQueryHook() Option

DisableQueryHook disables the query hook. By default, query hook is enabled for logging SQL queries.

func WithBunOptions

func WithBunOptions(bunOpts ...bun.DBOption) Option

WithBunOptions adds additional bun options.

func WithConnectionPool

func WithConnectionPool(poolConfig *ConnectionPoolConfig) Option

func WithLogger

func WithLogger(logger logPkg.Logger) Option

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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