56 lines
1.2 KiB
Go
56 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.INFO
|
|
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
|
|
}
|