database

package
v0.11.2 Latest Latest
Warning

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

Go to latest
Published: Nov 14, 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
)

Variables

View Source
var (
	ErrUnsupportedDBType = errors.New("unsupported database type")
)
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)

Types

type ConnectionPoolConfig

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

func NewDefaultConnectionPoolConfig

func NewDefaultConnectionPoolConfig() *ConnectionPoolConfig

func (*ConnectionPoolConfig) ApplyToDB

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

type DatabaseError

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

func (*DatabaseError) Error

func (e *DatabaseError) Error() string

func (*DatabaseError) Unwrap

func (e *DatabaseError) Unwrap() error

type DatabaseProvider

type DatabaseProvider interface {
	Connect(config *config.DatasourceConfig) (*sql.DB, schema.Dialect, error)
	Type() constants.DbType
	ValidateConfig(config *config.DatasourceConfig) error
	QueryVersion(db *bun.DB) (string, error)
}

type Option

type Option func(*databaseOptions)

func DisableQueryHook added in v0.5.4

func DisableQueryHook() Option

DisableQueryHook disables query logging which is enabled by default.

func WithBunOptions

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

func WithConnectionPool

func WithConnectionPool(poolConfig *ConnectionPoolConfig) Option

func WithLogger

func WithLogger(logger log.Logger) Option

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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