auth/internal/profile/repository/memory/memory_profile.go

42 lines
867 B
Go

package memory
import (
"context"
"sync"
"source.toby3d.me/toby3d/auth/internal/domain"
"source.toby3d.me/toby3d/auth/internal/profile"
)
type memoryProfileRepository struct {
mutex *sync.RWMutex
profiles map[string]domain.Profile
}
func NewMemoryProfileRepository() profile.Repository {
return &memoryProfileRepository{
mutex: new(sync.RWMutex),
profiles: make(map[string]domain.Profile),
}
}
func (repo *memoryProfileRepository) Create(_ context.Context, me domain.Me, p domain.Profile) error {
repo.mutex.Lock()
defer repo.mutex.Unlock()
repo.profiles[me.String()] = p
return nil
}
func (repo *memoryProfileRepository) Get(_ context.Context, me domain.Me) (*domain.Profile, error) {
repo.mutex.RLock()
defer repo.mutex.RUnlock()
if p, ok := repo.profiles[me.String()]; ok {
return &p, nil
}
return nil, profile.ErrNotExist
}