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  }