auth/internal/token/repository/memory/memory_token.go

42 lines
859 B
Go

package memory
import (
"context"
"sync"
"source.toby3d.me/toby3d/auth/internal/domain"
"source.toby3d.me/toby3d/auth/internal/token"
)
type memoryTokenRepository struct {
mutex *sync.RWMutex
tokens map[string]domain.Token
}
func NewMemoryTokenRepository() token.Repository {
return &memoryTokenRepository{
mutex: new(sync.RWMutex),
tokens: make(map[string]domain.Token),
}
}
func (repo *memoryTokenRepository) Create(ctx context.Context, accessToken domain.Token) error {
repo.mutex.Lock()
defer repo.mutex.Unlock()
repo.tokens[accessToken.AccessToken] = accessToken
return nil
}
func (repo *memoryTokenRepository) Get(ctx context.Context, accessToken string) (*domain.Token, error) {
repo.mutex.RLock()
defer repo.mutex.RUnlock()
if t, ok := repo.tokens[accessToken]; ok {
return &t, nil
}
return nil, token.ErrNotExist
}