add badger
This commit is contained in:
55
internal/storage/badger/db.go
Normal file
55
internal/storage/badger/db.go
Normal file
@ -0,0 +1,55 @@
|
||||
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, log zerolog.Logger) (*badger.DB, error) {
|
||||
bl := zerologAdapter{
|
||||
log: log.With().Str("db", "badger").Logger(),
|
||||
}
|
||||
opts := badger.DefaultOptions(path).
|
||||
WithLogger(bl).
|
||||
WithLoggingLevel(badger.INFO).
|
||||
WithValueLogFileSize(4 << 20).
|
||||
WithDir(path).
|
||||
WithValueDir(path)
|
||||
// WithMaxLevels(4).
|
||||
// WithMemTableSize(8 << 20).
|
||||
// WithMetricsEnabled(true).
|
||||
// WithCompactL0OnClose(true).
|
||||
// WithBlockCacheSize(8 << 20)
|
||||
|
||||
db, err := badger.Open(opts)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("opening badger: %w", err)
|
||||
}
|
||||
|
||||
return db, nil
|
||||
}
|
||||
Reference in New Issue
Block a user