* Add tools for creating, retrieving, updating, and deleting thoughts. * Implement project management tools for creating and listing projects. * Introduce linking functionality between thoughts. * Add search and recall capabilities for thoughts based on semantic queries. * Implement statistics and summarization tools for thought analysis. * Create database migrations for thoughts, projects, and links. * Add helper functions for UUID parsing and project resolution.
38 lines
694 B
Go
38 lines
694 B
Go
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)
|
|
}
|