package session import ( "errors" "lishwist/http/internal/id" "github.com/gorilla/securecookie" "github.com/gorilla/sessions" ) var inMemStore = make(map[string]string) var errNotFound = errors.New("not found") func NewInMemoryStore(keyPairs ...[]byte) *Store { return &Store{ callbacks: Callbacks{ Delete: func(key string) error { delete(inMemStore, key) return nil }, Insert: func(encodedValues string) (string, error) { key := id.Generate() inMemStore[key] = encodedValues return key, nil }, Select: func(key string) (string, error) { encodedValues, ok := inMemStore[key] if !ok { return "", errNotFound } return encodedValues, nil }, Update: func(key string, encodedValues string) error { inMemStore[key] = encodedValues return nil }, }, Codecs: securecookie.CodecsFromPairs(keyPairs...), Options: &sessions.Options{}, } }