MCPcopy
hub / github.com/mxpv/podsync / NewBadger

Function NewBadger

pkg/db/badger.go:37–77  ·  view source on GitHub ↗
(config *Config)

Source from the content-addressed store, hash-verified

35var _ Storage = (*Badger)(nil)
36
37func NewBadger(config *Config) (*Badger, error) {
38 var (
39 dir = config.Dir
40 )
41
42 log.Infof("opening database %q", dir)
43
44 // Make sure database directory exists
45 if err := os.MkdirAll(dir, 0755); err != nil {
46 return nil, errors.Wrap(err, "could not mkdir database dir")
47 }
48
49 opts := badger.DefaultOptions(dir).
50 WithLogger(log.StandardLogger()).
51 WithTruncate(true)
52
53 if config.Badger != nil {
54 opts.Truncate = config.Badger.Truncate
55 if config.Badger.FileIO {
56 opts.ValueLogLoadingMode = options.FileIO
57 }
58 }
59
60 db, err := badger.Open(opts)
61 if err != nil {
62 return nil, errors.Wrap(err, "failed to open database")
63 }
64
65 storage := &Badger{db: db}
66
67 if err := db.Update(func(txn *badger.Txn) error {
68 if err := storage.setObj(txn, []byte(versionPath), CurrentVersion, false); err != nil && err != model.ErrAlreadyExists {
69 return err
70 }
71 return nil
72 }); err != nil {
73 return nil, errors.Wrap(err, "failed to read database version")
74 }
75
76 return &Badger{db: db}, nil
77}
78
79func (b *Badger) Close() error {
80 log.Debug("closing database")

Callers 9

mainFunction · 0.92
TestNewBadgerFunction · 0.85
TestBadger_VersionFunction · 0.85
TestBadger_AddFeedFunction · 0.85
TestBadger_GetFeedFunction · 0.85
TestBadger_WalkFeedsFunction · 0.85
TestBadger_DeleteFeedFunction · 0.85
TestBadger_UpdateEpisodeFunction · 0.85
TestBadger_WalkEpisodesFunction · 0.85

Calls 3

setObjMethod · 0.95
OpenMethod · 0.45
UpdateMethod · 0.45

Tested by 8

TestNewBadgerFunction · 0.68
TestBadger_VersionFunction · 0.68
TestBadger_AddFeedFunction · 0.68
TestBadger_GetFeedFunction · 0.68
TestBadger_WalkFeedsFunction · 0.68
TestBadger_DeleteFeedFunction · 0.68
TestBadger_UpdateEpisodeFunction · 0.68
TestBadger_WalkEpisodesFunction · 0.68