database

package
v0.16.2 Latest Latest
Warning

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

Go to latest
Published: Dec 31, 2025 License: Apache-2.0 Imports: 20 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()),
			),
			func(db *bun.DB) *sql.DB {
				return db.DB
			},
		),
	)
)

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 DisableSqlGuard added in v0.16.0

func DisableSqlGuard() Option

DisableSqlGuard disables the sql guard.

func WithBunOptions

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

func WithConnectionPool

func WithConnectionPool(poolConfig *ConnectionPoolConfig) Option

func WithLogger

func WithLogger(logger log.Logger) Option

func WithSqlGuardConfig added in v0.16.0

func WithSqlGuardConfig(config *sqlguard.Config) Option

WithSqlGuardConfig sets a custom sql guard configuration.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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