package api import ( "sync" "time" ) type SessionStore struct { sessions map[string]*Session mu sync.RWMutex } func NewSessionStore() *SessionStore { return &SessionStore{ sessions: make(map[string]*Session), } } func (store *SessionStore) Set(sessionID string, session *Session) { store.mu.Lock() defer store.mu.Unlock() store.sessions[sessionID] = session } func (store *SessionStore) Get(sessionID string) (*Session, bool) { store.mu.RLock() defer store.mu.RUnlock() session, ok := store.sessions[sessionID] return session, ok } func (store *SessionStore) Delete(sessionID string) { store.mu.Lock() defer store.mu.Unlock() delete(store.sessions, sessionID) } func (store *SessionStore) CleanupSessions() { store.mu.Lock() defer store.mu.Unlock() for id, session := range store.sessions { if time.Since(session.LastAccessed) > 24*time.Hour { delete(store.sessions, id) } } }