Refactor structs with some getters/setters - Peers part
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
103
servercard.go
103
servercard.go
@ -1,5 +1,10 @@
|
||||
package meowlib
|
||||
|
||||
import (
|
||||
"github.com/dgraph-io/badger"
|
||||
"google.golang.org/protobuf/proto"
|
||||
)
|
||||
|
||||
func (sc *ServerCard) GetUid() string {
|
||||
return sc.Login + ":" + sc.Password + "@" + sc.Url
|
||||
}
|
||||
@ -7,3 +12,101 @@ func (sc *ServerCard) GetUid() string {
|
||||
func (sc *ServerCard) IsSame(sc1 *ServerCard) bool {
|
||||
return sc.GetUid() == sc1.GetUid()
|
||||
}
|
||||
|
||||
//
|
||||
// Storage
|
||||
//
|
||||
|
||||
// Open a badger database
|
||||
func OpenBadgerDb(path string) (*badger.DB, error) {
|
||||
opts := badger.DefaultOptions(path)
|
||||
opts.Logger = nil
|
||||
return badger.Open(opts)
|
||||
}
|
||||
|
||||
// Store function stores a ServerCard in a badger database with servercard.GetUid() as key
|
||||
func (sc *ServerCard) Store(db *badger.DB) error {
|
||||
// first marchal the ServerCard to bytes with protobuf
|
||||
b, err := proto.Marshal(sc)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
// then store it in the database
|
||||
return db.Update(func(txn *badger.Txn) error {
|
||||
return txn.Set([]byte(sc.GetUid()), b)
|
||||
})
|
||||
}
|
||||
|
||||
// LoadServerCard function loads a ServerCard from a badger database with servercard.GetUid() as key
|
||||
func LoadServerCard(db *badger.DB, uid string) (*ServerCard, error) {
|
||||
var sc ServerCard
|
||||
err := db.View(func(txn *badger.Txn) error {
|
||||
item, err := txn.Get([]byte(uid))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return item.Value(func(val []byte) error {
|
||||
return proto.Unmarshal(val, &sc)
|
||||
})
|
||||
})
|
||||
return &sc, err
|
||||
}
|
||||
|
||||
// DeleteServerCard function deletes a ServerCard from a badger database with servercard.GetUid() as key
|
||||
func DeleteServerCard(db *badger.DB, uid string) error {
|
||||
return db.Update(func(txn *badger.Txn) error {
|
||||
return txn.Delete([]byte(uid))
|
||||
})
|
||||
}
|
||||
|
||||
// LoadAllServerCards function loads all ServerCards from a badger database
|
||||
func LoadAllServerCards(db *badger.DB) ([]*ServerCard, error) {
|
||||
var scs []*ServerCard
|
||||
err := db.View(func(txn *badger.Txn) error {
|
||||
opts := badger.DefaultIteratorOptions
|
||||
opts.PrefetchSize = 10
|
||||
it := txn.NewIterator(opts)
|
||||
defer it.Close()
|
||||
for it.Rewind(); it.Valid(); it.Next() {
|
||||
item := it.Item()
|
||||
var sc ServerCard
|
||||
err := item.Value(func(val []byte) error {
|
||||
return proto.Unmarshal(val, &sc)
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
scs = append(scs, &sc)
|
||||
}
|
||||
return nil
|
||||
})
|
||||
return scs, err
|
||||
}
|
||||
|
||||
// LoadServerCardsFromUids function loads ServerCards with id in []Uid parameter from a badger database
|
||||
func LoadServerCardsFromUids(db *badger.DB, uids []string) ([]*ServerCard, error) {
|
||||
var scs []*ServerCard
|
||||
err := db.View(func(txn *badger.Txn) error {
|
||||
for _, uid := range uids {
|
||||
item, err := txn.Get([]byte(uid))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
var sc ServerCard
|
||||
err = item.Value(func(val []byte) error {
|
||||
return proto.Unmarshal(val, &sc)
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
scs = append(scs, &sc)
|
||||
}
|
||||
return nil
|
||||
})
|
||||
return scs, err
|
||||
}
|
||||
|
||||
// close a badger database
|
||||
func CloseBadgerDb(db *badger.DB) {
|
||||
db.Close()
|
||||
}
|
||||
|
Reference in New Issue
Block a user