package session

import (
	"sync"

	"github.com/google/uuid"
)

type ActiveProjects struct {
	mu        sync.RWMutex
	bySession map[string]uuid.UUID
}

func NewActiveProjects() *ActiveProjects {
	return &ActiveProjects{
		bySession: map[string]uuid.UUID{},
	}
}

func (a *ActiveProjects) Set(sessionID string, projectID uuid.UUID) {
	a.mu.Lock()
	defer a.mu.Unlock()
	a.bySession[sessionID] = projectID
}

func (a *ActiveProjects) Get(sessionID string) (uuid.UUID, bool) {
	a.mu.RLock()
	defer a.mu.RUnlock()
	projectID, ok := a.bySession[sessionID]
	return projectID, ok
}

func (a *ActiveProjects) Clear(sessionID string) {
	a.mu.Lock()
	defer a.mu.Unlock()
	delete(a.bySession, sessionID)
}
