code.pfad.fr/gohmekit@v0.2.1/storage/memory.go (about) 1 package storage 2 3 import ( 4 "errors" 5 6 "code.pfad.fr/gohmekit/pairing" 7 ) 8 9 // NewMemDatabase is an in-memory database for testing (not thread-safe!) 10 func NewMemDatabase() pairing.Database { 11 return memDatabase{} 12 } 13 14 type memDatabase map[string][]byte 15 16 func (m memDatabase) IsPaired() bool { 17 return len(m) > 0 18 } 19 func (m memDatabase) GetLongTermPublicKey(id []byte) ([]byte, error) { 20 if key, ok := m[string(id)]; ok { 21 return key, nil 22 } 23 return nil, errors.New("unknown key") 24 } 25 func (m memDatabase) AddLongTermPublicKey(c pairing.Controller) error { 26 m[string(c.PairingID)] = c.LongTermPublicKey 27 return nil 28 } 29 func (m memDatabase) RemoveLongTermPublicKey(id []byte) error { 30 delete(m, string(id)) 31 return nil 32 } 33 func (m memDatabase) ListLongTermPublicKey() ([]pairing.Controller, error) { 34 c := make([]pairing.Controller, 0, len(m)) 35 for id, key := range m { 36 c = append(c, pairing.Controller{ 37 PairingID: []byte(id), 38 LongTermPublicKey: key, 39 }) 40 } 41 return c, nil 42 }