Add basic Session impl

This commit is contained in:
2026-10-02 21:15:39 +02:00
parent 6729bfc952
commit 465fa2f4d8
3 changed files with 69 additions and 1 deletions
+63
View File
@@ -0,0 +1,63 @@
package session
import (
"net/http"
"github.com/google/uuid"
log "gitlab.com/gdulai/simpleloglvl"
)
var sessions map[uuid.UUID]*Session
func OpenSession() *Session {
newSessId, err := uuid.NewRandom()
if err != nil {
log.LogError("Failed to create new session id: %s", err)
return nil
}
return &Session{sessionID: newSessId}
}
func GetSession(r *http.Request) *Session {
sessionIdCookie, err := r.Cookie("session_id")
if err != nil {
return nil
}
sessId, err := uuid.Parse(sessionIdCookie.Value)
if err == nil {
return nil
}
return sessions[sessId]
}
type Session struct {
sessionID uuid.UUID
components map[uuid.UUID]any
}
func (sess *Session) Close() {
delete(sessions, sess.sessionID)
}
func (sess *Session) MangeComponent(component any) (uuid.UUID, error) {
newComponentId, err := uuid.NewRandom()
if err != nil {
return newComponentId, err
}
sess.components[newComponentId] = component
return newComponentId, nil
}
func (sess *Session) RemoveComponent(componentId uuid.UUID) {
delete(sess.components, componentId)
}
func (sess *Session) ID() uuid.UUID {
return sess.sessionID
}
type RequestContext struct {
SessionID uuid.UUID
RequiestID uuid.UUID
Logger *log.GenericLogger
}