Files
eway/internal/storage/badger/db.go
2024-02-07 12:24:02 +03:00

57 lines
1.2 KiB
Go

package badger
import (
"context"
"fmt"
"strings"
badger "github.com/dgraph-io/badger/v4"
"github.com/rs/zerolog"
)
type zerologAdapter struct {
log zerolog.Logger
}
func (za zerologAdapter) Debugf(format string, args ...any) {
za.fmt(za.log.Debug(), format, args...)
}
func (za zerologAdapter) Infof(format string, args ...any) {
za.fmt(za.log.Info(), format, args...)
}
func (za zerologAdapter) Warningf(format string, args ...any) {
za.fmt(za.log.Warn(), format, args...)
}
func (za zerologAdapter) Errorf(format string, args ...any) {
za.fmt(za.log.Error(), format, args...)
}
func (za zerologAdapter) fmt(event *zerolog.Event, format string, args ...any) {
event.Msgf(strings.TrimSuffix(format, "\n"), args...)
}
func Open(ctx context.Context, path string, debug bool, log zerolog.Logger) (*badger.DB, error) {
bl := zerologAdapter{
log: log.With().Str("db", "badger").Logger(),
}
level := badger.WARNING
if debug {
level = badger.DEBUG
}
opts := badger.DefaultOptions(path).
WithLogger(bl).
WithLoggingLevel(level).
WithValueLogFileSize(4 << 20).
WithDir(path).
WithValueDir(path)
db, err := badger.Open(opts)
if err != nil {
return nil, fmt.Errorf("opening badger: %w", err)
}
return db, nil
}