package database import ( "os" "sync" "github.com/dgraph-io/badger" "github.com/dgraph-io/badger/options" ) var instance *badger.DB var openLock sync.Mutex func GetBadgerInstance() (result *badger.DB, err error) { openLock.Lock() if instance == nil { directory := *DIRECTORY.Value if _, osErr := os.Stat(directory); os.IsNotExist(osErr) { if osErr := os.Mkdir(directory, 0700); osErr != nil { err = osErr return } } else if osErr != nil { err = osErr return } opts := badger.DefaultOptions(directory) opts.Logger = &logger{} opts.Truncate = true opts.TableLoadingMode = options.MemoryMap db, badgerErr := badger.Open(opts) if badgerErr != nil { err = badgerErr return } instance = db } openLock.Unlock() result = instance return }