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) }