github.com/gogf/gf@v1.16.9/os/gsession/gsession_storage.go (about) 1 // Copyright GoFrame Author(https://goframe.org). All Rights Reserved. 2 // 3 // This Source Code Form is subject to the terms of the MIT License. 4 // If a copy of the MIT was not distributed with this file, 5 // You can obtain one at https://github.com/gogf/gf. 6 7 package gsession 8 9 import ( 10 "context" 11 "github.com/gogf/gf/container/gmap" 12 "time" 13 ) 14 15 // Storage is the interface definition for session storage. 16 type Storage interface { 17 // New creates a custom session id. 18 // This function can be used for custom session creation. 19 New(ctx context.Context, ttl time.Duration) (id string, err error) 20 21 // Get retrieves and returns session value with given key. 22 // It returns nil if the key does not exist in the session. 23 Get(ctx context.Context, id string, key string) (value interface{}, err error) 24 25 // GetMap retrieves all key-value pairs as map from storage. 26 GetMap(ctx context.Context, id string) (data map[string]interface{}, err error) 27 28 // GetSize retrieves and returns the size of key-value pairs from storage. 29 GetSize(ctx context.Context, id string) (size int, err error) 30 31 // Set sets one key-value session pair to the storage. 32 // The parameter `ttl` specifies the TTL for the session id. 33 Set(ctx context.Context, id string, key string, value interface{}, ttl time.Duration) error 34 35 // SetMap batch sets key-value session pairs as map to the storage. 36 // The parameter `ttl` specifies the TTL for the session id. 37 SetMap(ctx context.Context, id string, data map[string]interface{}, ttl time.Duration) error 38 39 // Remove deletes key with its value from storage. 40 Remove(ctx context.Context, id string, key string) error 41 42 // RemoveAll deletes all key-value pairs from storage. 43 RemoveAll(ctx context.Context, id string) error 44 45 // GetSession returns the session data as `*gmap.StrAnyMap` for given session id from storage. 46 // 47 // The parameter `ttl` specifies the TTL for this session. 48 // The parameter `data` is the current old session data stored in memory, 49 // and for some storage it might be nil if memory storage is disabled. 50 // 51 // This function is called ever when session starts. It returns nil if the TTL is exceeded. 52 GetSession(ctx context.Context, id string, ttl time.Duration, data *gmap.StrAnyMap) (*gmap.StrAnyMap, error) 53 54 // SetSession updates the data for specified session id. 55 // This function is called ever after session, which is changed dirty, is closed. 56 // This copy all session data map from memory to storage. 57 SetSession(ctx context.Context, id string, data *gmap.StrAnyMap, ttl time.Duration) error 58 59 // UpdateTTL updates the TTL for specified session id. 60 // This function is called ever after session, which is not dirty, is closed. 61 UpdateTTL(ctx context.Context, id string, ttl time.Duration) error 62 }