teldrive/internal/tgc/bolt.go

36 lines
696 B
Go

package tgc
import (
"os"
"path/filepath"
"time"
"github.com/mitchellh/go-homedir"
"github.com/tgdrive/teldrive/internal/utils"
"go.etcd.io/bbolt"
)
func NewBoltDB(sessionFile string) (*bbolt.DB, error) {
if sessionFile == "" {
dir, err := homedir.Dir()
if err != nil {
dir = utils.ExecutableDir()
} else {
dir = filepath.Join(dir, ".teldrive")
err := os.Mkdir(dir, 0755)
if err != nil && !os.IsExist(err) {
dir = utils.ExecutableDir()
}
}
sessionFile = filepath.Join(dir, "session.db")
}
db, err := bbolt.Open(sessionFile, 0666, &bbolt.Options{
Timeout: time.Second,
NoGrowSync: false,
})
if err != nil {
return nil, err
}
return db, nil
}