auth/internal/client/repository/memory/memory_client.go

42 lines
864 B
Go

package memory
import (
"context"
"sync"
"source.toby3d.me/toby3d/auth/internal/client"
"source.toby3d.me/toby3d/auth/internal/domain"
)
type memoryClientRepository struct {
mutex *sync.RWMutex
clients map[string]domain.Client
}
func NewMemoryClientRepository() client.Repository {
return &memoryClientRepository{
mutex: new(sync.RWMutex),
clients: make(map[string]domain.Client),
}
}
func (repo memoryClientRepository) Create(ctx context.Context, client domain.Client) error {
repo.mutex.RLock()
defer repo.mutex.RUnlock()
repo.clients[client.ID.String()] = client
return nil
}
func (repo memoryClientRepository) Get(ctx context.Context, cid domain.ClientID) (*domain.Client, error) {
repo.mutex.RLock()
defer repo.mutex.RUnlock()
if c, ok := repo.clients[cid.String()]; ok {
return &c, nil
}
return nil, client.ErrNotExist
}