@@ -0,0 +1,56 @@
|
||||
package sub
|
||||
|
||||
import (
|
||||
"sync"
|
||||
|
||||
"github.com/google/uuid"
|
||||
"github.com/omnex/control-plane/api/internal/auth"
|
||||
)
|
||||
|
||||
// MemCodeStore : implémentation en mémoire de CodeStore (dev/tests).
|
||||
type MemCodeStore struct {
|
||||
mu sync.RWMutex
|
||||
items map[string]CodeBuySub
|
||||
byCode map[string]CodeBuySub
|
||||
}
|
||||
|
||||
func NewMemCodeStore() *MemCodeStore {
|
||||
return &MemCodeStore{
|
||||
items: make(map[string]CodeBuySub),
|
||||
byCode: make(map[string]CodeBuySub),
|
||||
}
|
||||
}
|
||||
|
||||
func (m *MemCodeStore) CreateCodeForSub(username, code string) (CodeBuySub, error) {
|
||||
m.mu.Lock()
|
||||
defer m.mu.Unlock()
|
||||
c := CodeBuySub{
|
||||
ID: uuid.NewString(),
|
||||
Username: username,
|
||||
CodeBuy: code,
|
||||
}
|
||||
m.items[c.ID] = c
|
||||
m.byCode[code] = c
|
||||
return c, nil
|
||||
}
|
||||
|
||||
func (m *MemCodeStore) GetCodeForSub(username, code string) (auth.User, CodeBuySub, error) {
|
||||
m.mu.RLock()
|
||||
defer m.mu.RUnlock()
|
||||
c, ok := m.byCode[code]
|
||||
if !ok {
|
||||
return auth.User{}, CodeBuySub{}, nil
|
||||
}
|
||||
// In a real implementation, we'd fetch the user too
|
||||
return auth.User{}, c, nil
|
||||
}
|
||||
|
||||
func (m *MemCodeStore) ListCodes() ([]CodeBuySub, error) {
|
||||
m.mu.RLock()
|
||||
defer m.mu.RUnlock()
|
||||
out := make([]CodeBuySub, 0, len(m.items))
|
||||
for _, c := range m.items {
|
||||
out = append(out, c)
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
Reference in New Issue
Block a user