package session

// Store 会话存储接口（内存实现 / Redis 实现均实现此接口）
type Store interface {
	// Get 按会话 ID 获取会话，不存在或已过期返回 nil
	Get(id string) (*Session, error)

	// Set 写入/更新会话
	Set(s *Session) error

	// Delete 删除单个会话
	Delete(id string) error

	// DeleteByUID 删除某用户的所有会话（改密/注销/强制下线时调用）
	DeleteByUID(uid uint) error

	// DeleteByUIDExclude 删除某用户的所有会话，但保留指定的会话 ID
	DeleteByUIDExclude(uid uint, excludeSID string) error

	// ListByUID 列出某用户的所有活跃会话
	ListByUID(uid uint) ([]*Session, error)

	// Cleanup 清理过期会话，返回清理数量（由后台 goroutine 定期调用）
	Cleanup() int
}
