1
0
mirror of https://github.com/mainflux/mainflux.git synced 2025-05-01 13:48:56 +08:00
Dejan Mijic c966a7802d
Integrate manager service
Setup top-level glide dependencies file. Migrated all of the manager
service code into this repository. Fixed docker build procedure.
Extracted executable to the top-level.

Signed-off-by: Dejan Mijic <dejan@mainflux.com>
2017-09-23 01:03:27 +02:00

87 lines
1.6 KiB
Go

package mocks
import (
"fmt"
"log"
"strconv"
"strings"
"sync"
"github.com/mainflux/mainflux/manager"
)
var _ manager.ClientRepository = (*clientRepositoryMock)(nil)
type clientRepositoryMock struct {
mu sync.Mutex
counter int
clients map[string]manager.Client
}
// NewClientRepository creates in-memory client repository.
func NewClientRepository() manager.ClientRepository {
return &clientRepositoryMock{
clients: make(map[string]manager.Client),
}
}
func (repo *clientRepositoryMock) Id() string {
repo.mu.Lock()
defer repo.mu.Unlock()
repo.counter += 1
return strconv.Itoa(repo.counter)
}
func (repo *clientRepositoryMock) Save(client manager.Client) error {
repo.mu.Lock()
defer repo.mu.Unlock()
repo.clients[key(client.Owner, client.ID)] = client
return nil
}
func (repo *clientRepositoryMock) Update(client manager.Client) error {
repo.mu.Lock()
defer repo.mu.Unlock()
dbKey := key(client.Owner, client.ID)
if _, ok := repo.clients[dbKey]; !ok {
return manager.ErrNotFound
}
log.Print("c")
repo.clients[dbKey] = client
return nil
}
func (repo *clientRepositoryMock) One(owner, id string) (manager.Client, error) {
if c, ok := repo.clients[key(owner, id)]; ok {
return c, nil
}
return manager.Client{}, manager.ErrNotFound
}
func (repo *clientRepositoryMock) All(owner string) []manager.Client {
prefix := fmt.Sprintf("%s-", owner)
clients := make([]manager.Client, 0)
for k, v := range repo.clients {
if strings.HasPrefix(k, prefix) {
clients = append(clients, v)
}
}
return clients
}
func (repo *clientRepositoryMock) Remove(owner, id string) error {
delete(repo.clients, key(owner, id))
return nil
}