42 lines
859 B
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
|
|
}
|