Add list to binarystore
This commit is contained in:
parent
4d719daf39
commit
75735c0e43
@ -4,6 +4,7 @@ import (
|
||||
"crypto/ecdsa"
|
||||
"crypto/x509"
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"gitea.benny.dog/torjus/ezshare/pb"
|
||||
"github.com/google/uuid"
|
||||
@ -303,7 +304,11 @@ func (s *BoltStore) GetUserByUsername(username string) (*pb.User, error) {
|
||||
return nil, ErrNoSuchItem
|
||||
}
|
||||
|
||||
// BinaryStore
|
||||
/////////////////
|
||||
// BinaryStore //
|
||||
/////////////////
|
||||
|
||||
var _ BinaryStore = &BoltStore{}
|
||||
|
||||
func binaryKey(version string, os string, arch string) []byte {
|
||||
return []byte(fmt.Sprintf("%s,%s,%s", version, os, arch))
|
||||
@ -334,3 +339,21 @@ func (s *BoltStore) GetBinary(version string, os string, arch string) (*pb.Binar
|
||||
|
||||
return binary, nil
|
||||
}
|
||||
|
||||
func (s *BoltStore) List() ([]string, error) {
|
||||
var releases []string
|
||||
err := s.db.View(func(tx *bolt.Tx) error {
|
||||
bkt := tx.Bucket(bktKeyBinary)
|
||||
|
||||
return bkt.ForEach(func(k, _ []byte) error {
|
||||
key := strings.Split(string(k), ",")
|
||||
releases = append(releases, fmt.Sprintf("ezshare-%s-%s-%s", key[0][1:], key[1], key[2]))
|
||||
return nil
|
||||
})
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return releases, nil
|
||||
}
|
||||
|
@ -223,7 +223,12 @@ func (s *MemoryStore) GetUserByUsername(username string) (*pb.User, error) {
|
||||
return nil, ErrNoSuchItem
|
||||
}
|
||||
|
||||
// Binary store
|
||||
//////////////////
|
||||
// Binary store //
|
||||
//////////////////
|
||||
|
||||
var _ BinaryStore = &MemoryStore{}
|
||||
|
||||
func (s *MemoryStore) StoreBinary(release *pb.Binary) error {
|
||||
s.binaryLock.Lock()
|
||||
defer s.binaryLock.Unlock()
|
||||
@ -255,3 +260,10 @@ func (s *MemoryStore) GetBinary(version string, os string, arch string) (*pb.Bin
|
||||
|
||||
return nil, ErrNoSuchItem
|
||||
}
|
||||
func (s *MemoryStore) List() ([]string, error) {
|
||||
var releases []string
|
||||
for _, release := range s.binaries {
|
||||
releases = append(releases, fmt.Sprintf("ezshare-%s-%s-%s", release.Version[1:], release.Os, release.Arch))
|
||||
}
|
||||
return releases, nil
|
||||
}
|
||||
|
@ -37,4 +37,5 @@ type UserStore interface {
|
||||
type BinaryStore interface {
|
||||
StoreBinary(release *pb.Binary) error
|
||||
GetBinary(version, os, arch string) (*pb.Binary, error)
|
||||
List() ([]string, error)
|
||||
}
|
||||
|
@ -248,4 +248,27 @@ func doBinaryStoreTests(s store.BinaryStore, t *testing.T) {
|
||||
if string(windows.Data) != string(winBinary.Data) {
|
||||
t.Fatalf("Data is not the same in linux-binary")
|
||||
}
|
||||
|
||||
// List
|
||||
list, err := s.List()
|
||||
if err != nil {
|
||||
t.Fatalf("List returned error: %s", err)
|
||||
}
|
||||
|
||||
var lFound, wFound bool
|
||||
for _, item := range list {
|
||||
if item == "ezshare-1.0.0-linux-arm" {
|
||||
lFound = true
|
||||
}
|
||||
if item == "ezshare-1.0.0-windows-amd64" {
|
||||
wFound = true
|
||||
}
|
||||
}
|
||||
|
||||
if !lFound {
|
||||
t.Fatalf("Linux binary not in list. %+v", list)
|
||||
}
|
||||
if !wFound {
|
||||
t.Fatalf("Windows binary not in list. %+v", list)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user