pub struct RiSession {
pub id: String,
pub user_id: String,
pub created_at: u64,
pub last_accessed: u64,
pub expires_at: u64,
pub data: HashMap<String, String>,
pub ip_address: Option<String>,
pub user_agent: Option<String>,
}Expand description
Session structure for tracking user sessions.
This struct represents a user session with metadata, expiration tracking, and custom data storage. Sessions are uniquely identified by UUIDs.
Fields§
§id: StringUnique session identifier generated using UUID v4
user_id: StringUser ID associated with this session
created_at: u64Session creation time as Unix timestamp
last_accessed: u64Last access time as Unix timestamp (updated on each access)
expires_at: u64Session expiration time as Unix timestamp
data: HashMap<String, String>Custom key-value data associated with the session
ip_address: Option<String>Client IP address from which the session was created
user_agent: Option<String>Client user agent string from which the session was created
Implementations§
Source§impl RiSession
impl RiSession
Sourcepub fn new(
user_id: String,
timeout_secs: u64,
ip_address: Option<String>,
user_agent: Option<String>,
) -> Self
pub fn new( user_id: String, timeout_secs: u64, ip_address: Option<String>, user_agent: Option<String>, ) -> Self
Sourcepub fn is_expired(&self) -> bool
pub fn is_expired(&self) -> bool
Sourcepub fn touch(&mut self)
pub fn touch(&mut self)
Updates the last accessed time of the session.
This method is called when a session is accessed to update its last accessed timestamp, which can be used for session activity tracking.
Sourcepub fn extend(&mut self, timeout_secs: u64)
pub fn extend(&mut self, timeout_secs: u64)
Extends the session expiration time.
§Parameters
timeout_secs: New timeout in seconds from the current time
Trait Implementations§
Source§impl<'de> Deserialize<'de> for RiSession
impl<'de> Deserialize<'de> for RiSession
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl<'py> IntoPyObject<'py> for RiSession
impl<'py> IntoPyObject<'py> for RiSession
Source§impl PyClassImpl for RiSession
impl PyClassImpl for RiSession
Source§const IS_BASETYPE: bool = false
const IS_BASETYPE: bool = false
Source§const IS_SUBCLASS: bool = false
const IS_SUBCLASS: bool = false
Source§const IS_MAPPING: bool = false
const IS_MAPPING: bool = false
Source§const IS_SEQUENCE: bool = false
const IS_SEQUENCE: bool = false
Source§const IS_IMMUTABLE_TYPE: bool = false
const IS_IMMUTABLE_TYPE: bool = false
Source§const RAW_DOC: &'static CStr = c"Session structure for tracking user sessions.\n\nThis struct represents a user session with metadata, expiration tracking,\nand custom data storage. Sessions are uniquely identified by UUIDs.\x00"
const RAW_DOC: &'static CStr = c"Session structure for tracking user sessions.\n\nThis struct represents a user session with metadata, expiration tracking,\nand custom data storage. Sessions are uniquely identified by UUIDs.\x00"
Source§const DOC: &'static CStr
const DOC: &'static CStr
text_signature if a constructor is defined. Read moreSource§type ThreadChecker = SendablePyClass<RiSession>
type ThreadChecker = SendablePyClass<RiSession>
Source§type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild
type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild
Source§type BaseNativeType = PyAny
type BaseNativeType = PyAny
PyAny by default, and when you declare
#[pyclass(extends=PyDict)], it’s PyDict.fn items_iter() -> PyClassItemsIter
fn lazy_type_object() -> &'static LazyTypeObject<Self>
fn dict_offset() -> Option<isize>
fn weaklist_offset() -> Option<isize>
Source§impl PyClassNewTextSignature for RiSession
impl PyClassNewTextSignature for RiSession
const TEXT_SIGNATURE: &'static str = "(id, user_id, created_at, last_accessed, expires_at, data, ip_address, user_agent)"
Source§impl PyMethods<RiSession> for PyClassImplCollector<RiSession>
impl PyMethods<RiSession> for PyClassImplCollector<RiSession>
fn py_methods(self) -> &'static PyClassItems
Source§impl PyTypeInfo for RiSession
impl PyTypeInfo for RiSession
Source§fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
§fn type_object(py: Python<'_>) -> Bound<'_, PyType>
fn type_object(py: Python<'_>) -> Bound<'_, PyType>
§fn is_type_of(object: &Bound<'_, PyAny>) -> bool
fn is_type_of(object: &Bound<'_, PyAny>) -> bool
object is an instance of this type or a subclass of this type.§fn is_exact_type_of(object: &Bound<'_, PyAny>) -> bool
fn is_exact_type_of(object: &Bound<'_, PyAny>) -> bool
object is an instance of this type.impl DerefToPyAny for RiSession
impl ExtractPyClassWithClone for RiSession
Auto Trait Implementations§
impl Freeze for RiSession
impl RefUnwindSafe for RiSession
impl Send for RiSession
impl Sync for RiSession
impl Unpin for RiSession
impl UnsafeUnpin for RiSession
impl UnwindSafe for RiSession
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<'py, T> IntoPyObjectExt<'py> for Twhere
T: IntoPyObject<'py>,
impl<'py, T> IntoPyObjectExt<'py> for Twhere
T: IntoPyObject<'py>,
§fn into_bound_py_any(self, py: Python<'py>) -> Result<Bound<'py, PyAny>, PyErr>
fn into_bound_py_any(self, py: Python<'py>) -> Result<Bound<'py, PyAny>, PyErr>
self into an owned Python object, dropping type information.§fn into_py_any(self, py: Python<'py>) -> Result<Py<PyAny>, PyErr>
fn into_py_any(self, py: Python<'py>) -> Result<Py<PyAny>, PyErr>
self into an owned Python object, dropping type information and unbinding it
from the 'py lifetime.§fn into_pyobject_or_pyerr(self, py: Python<'py>) -> Result<Self::Output, PyErr>
fn into_pyobject_or_pyerr(self, py: Python<'py>) -> Result<Self::Output, PyErr>
self into a Python object. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::RequestSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PyErrArguments for T
impl<T> PyErrArguments for T
§impl<T> PyTypeCheck for Twhere
T: PyTypeInfo,
impl<T> PyTypeCheck for Twhere
T: PyTypeInfo,
§const NAME: &'static str = T::NAME
const NAME: &'static str = T::NAME
§fn type_check(object: &Bound<'_, PyAny>) -> bool
fn type_check(object: &Bound<'_, PyAny>) -> bool
§fn classinfo_object(py: Python<'_>) -> Bound<'_, PyAny>
fn classinfo_object(py: Python<'_>) -> Bound<'_, PyAny>
isinstance and issubclass function. Read more