package lib import ( "database/sql" "sync" ) type Session_Store struct { mu sync.RWMutex carts map[string]string } func New_Session_Store() *Session_Store { return &Session_Store{ carts: make(map[string]string), } } func (s *Session_Store) Get_Cart(session_id string) string { s.mu.RLock() defer s.mu.RUnlock() return s.carts[session_id] } func (s *Session_Store) Set_Cart(session_id, cart_json string) { s.mu.Lock() defer s.mu.Unlock() s.carts[session_id] = cart_json } type App_Context struct { DB *sql.DB Session_Store *Session_Store } func New_App_Context(db *sql.DB) *App_Context { return &App_Context{ DB: db, Session_Store: New_Session_Store(), } }