mirror of
https://codeberg.org/scip/anydb.git
synced 2025-12-17 04:20:59 +01:00
add custom bucket support
This commit is contained in:
committed by
T.v.Dein
parent
be79886e89
commit
3de65aa1c3
17
app/db.go
17
app/db.go
@@ -34,6 +34,7 @@ const MaxValueWidth int = 60
|
||||
type DB struct {
|
||||
Debug bool
|
||||
Dbfile string
|
||||
Bucket string
|
||||
DB *bolt.DB
|
||||
}
|
||||
|
||||
@@ -75,8 +76,8 @@ type DbTag struct {
|
||||
|
||||
const BucketData string = "data"
|
||||
|
||||
func New(file string, debug bool) (*DB, error) {
|
||||
return &DB{Debug: debug, Dbfile: file}, nil
|
||||
func New(file string, bucket string, debug bool) (*DB, error) {
|
||||
return &DB{Debug: debug, Dbfile: file, Bucket: bucket}, nil
|
||||
}
|
||||
|
||||
func (db *DB) Open() error {
|
||||
@@ -114,7 +115,7 @@ func (db *DB) List(attr *DbAttr) (DbEntries, error) {
|
||||
|
||||
err := db.DB.View(func(tx *bolt.Tx) error {
|
||||
|
||||
bucket := tx.Bucket([]byte(BucketData))
|
||||
bucket := tx.Bucket([]byte(db.Bucket))
|
||||
if bucket == nil {
|
||||
return nil
|
||||
}
|
||||
@@ -182,7 +183,7 @@ func (db *DB) Set(attr *DbAttr) error {
|
||||
// any tags. if so, we initialize our update struct with these
|
||||
// tags unless it has new tags configured.
|
||||
err := db.DB.View(func(tx *bolt.Tx) error {
|
||||
bucket := tx.Bucket([]byte(BucketData))
|
||||
bucket := tx.Bucket([]byte(db.Bucket))
|
||||
if bucket == nil {
|
||||
return nil
|
||||
}
|
||||
@@ -211,7 +212,7 @@ func (db *DB) Set(attr *DbAttr) error {
|
||||
|
||||
err = db.DB.Update(func(tx *bolt.Tx) error {
|
||||
// insert data
|
||||
bucket, err := tx.CreateBucketIfNotExists([]byte(BucketData))
|
||||
bucket, err := tx.CreateBucketIfNotExists([]byte(db.Bucket))
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to create DB bucket: %w", err)
|
||||
}
|
||||
@@ -245,7 +246,7 @@ func (db *DB) Get(attr *DbAttr) (*DbEntry, error) {
|
||||
entry := DbEntry{}
|
||||
|
||||
err := db.DB.View(func(tx *bolt.Tx) error {
|
||||
bucket := tx.Bucket([]byte(BucketData))
|
||||
bucket := tx.Bucket([]byte(db.Bucket))
|
||||
if bucket == nil {
|
||||
return nil
|
||||
}
|
||||
@@ -277,7 +278,7 @@ func (db *DB) Del(attr *DbAttr) error {
|
||||
defer db.Close()
|
||||
|
||||
err := db.DB.Update(func(tx *bolt.Tx) error {
|
||||
bucket := tx.Bucket([]byte(BucketData))
|
||||
bucket := tx.Bucket([]byte(db.Bucket))
|
||||
|
||||
if bucket == nil {
|
||||
return nil
|
||||
@@ -324,7 +325,7 @@ func (db *DB) Import(attr *DbAttr) (string, error) {
|
||||
|
||||
err := db.DB.Update(func(tx *bolt.Tx) error {
|
||||
// insert data
|
||||
bucket, err := tx.CreateBucketIfNotExists([]byte(BucketData))
|
||||
bucket, err := tx.CreateBucketIfNotExists([]byte(db.Bucket))
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to create bucket: %w", err)
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ var Version string = "v0.0.4"
|
||||
type Config struct {
|
||||
Debug bool
|
||||
Dbfile string
|
||||
Dbbucket string
|
||||
Template string
|
||||
Mode string // wide, table, yaml, json
|
||||
NoHeaders bool
|
||||
|
||||
@@ -54,7 +54,7 @@ func Execute() {
|
||||
Short: "anydb",
|
||||
Long: `A personal key value store`,
|
||||
PersistentPreRunE: func(cmd *cobra.Command, args []string) error {
|
||||
db, err := app.New(conf.Dbfile, conf.Debug)
|
||||
db, err := app.New(conf.Dbfile, conf.Dbbucket, conf.Debug)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -92,6 +92,8 @@ func Execute() {
|
||||
rootCmd.PersistentFlags().BoolVarP(&conf.Debug, "debug", "d", false, "Enable debugging")
|
||||
rootCmd.PersistentFlags().StringVarP(&conf.Dbfile, "dbfile", "f",
|
||||
filepath.Join(home, ".config", "anydb", "default.db"), "DB file to use")
|
||||
rootCmd.PersistentFlags().StringVarP(&conf.Dbbucket, "bucket", "b",
|
||||
app.BucketData, "use other bucket (default: " + app.BucketData +")")
|
||||
|
||||
rootCmd.AddCommand(Set(&conf))
|
||||
rootCmd.AddCommand(List(&conf))
|
||||
|
||||
Reference in New Issue
Block a user