|
ORE Studio 0.0.4
|
Repository for session persistence and querying. More...
#include <session_repository.hpp>

Public Types | |
| using | context = ores::database::context |
Public Member Functions | |
| session_repository (context ctx) | |
| std::string | sql () |
| Returns the SQL created by sqlgen to construct the table. | |
| void | create (const domain::session &session) |
| Creates a new session record. | |
| void | update (const domain::session &session) |
| Updates an existing session record. | |
| void | update_bytes (const boost::uuids::uuid &session_id, const std::chrono::system_clock::time_point &start_time, std::uint64_t bytes_sent, std::uint64_t bytes_received) |
| Updates byte counts for an active session. | |
| void | end_session (const boost::uuids::uuid &session_id, const std::chrono::system_clock::time_point &start_time, const std::chrono::system_clock::time_point &end_time, std::uint64_t bytes_sent, std::uint64_t bytes_received) |
| Ends a session by setting the end_time. | |
| std::optional< domain::session > | read (const boost::uuids::uuid &session_id) |
| Reads a session by ID. | |
| std::vector< domain::session > | read_by_account (const boost::uuids::uuid &account_id, std::uint32_t limit=0, std::uint32_t offset=0) |
| Reads all sessions for an account. | |
| std::vector< domain::session > | read_active_by_account (const boost::uuids::uuid &account_id) |
| Reads active (non-ended) sessions for an account. | |
| std::uint32_t | count_active_by_account (const boost::uuids::uuid &account_id) |
| Counts active sessions for an account. | |
| std::uint32_t | count_by_account (const boost::uuids::uuid &account_id) |
| Counts all sessions (active and inactive) for an account. | |
| std::vector< domain::session > | read_by_time_range (const std::chrono::system_clock::time_point &start, const std::chrono::system_clock::time_point &end, std::uint32_t limit=1000) |
| Reads sessions within a time range. | |
| std::vector< domain::session > | read_all_active () |
| Reads all active sessions across all accounts. | |
| std::uint32_t | count_all_active () |
| Counts all active sessions. | |
| std::vector< domain::session_statistics > | read_daily_statistics (const boost::uuids::uuid &account_id, const std::chrono::system_clock::time_point &start, const std::chrono::system_clock::time_point &end) |
| Reads daily session statistics for an account. | |
| std::vector< domain::session_statistics > | read_aggregate_daily_statistics (const std::chrono::system_clock::time_point &start, const std::chrono::system_clock::time_point &end) |
| Reads aggregate daily statistics across all accounts. | |
| void | remove_by_account (const boost::uuids::uuid &account_id) |
| Removes all sessions for an account. | |
Repository for session persistence and querying.
Handles CRUD operations for session records stored in a TimescaleDB hypertable. Supports time-range queries and statistics aggregation.
| void update | ( | const domain::session & | session | ) |
Updates an existing session record.
Typically used to set end_time and final byte counts.
| void update_bytes | ( | const boost::uuids::uuid & | session_id, |
| const std::chrono::system_clock::time_point & | start_time, | ||
| std::uint64_t | bytes_sent, | ||
| std::uint64_t | bytes_received | ||
| ) |
Updates byte counts for an active session.
| session_id | The session UUID |
| start_time | The session start time (required for hypertable lookup) |
| bytes_sent | New total bytes sent |
| bytes_received | New total bytes received |
| void end_session | ( | const boost::uuids::uuid & | session_id, |
| const std::chrono::system_clock::time_point & | start_time, | ||
| const std::chrono::system_clock::time_point & | end_time, | ||
| std::uint64_t | bytes_sent, | ||
| std::uint64_t | bytes_received | ||
| ) |
Ends a session by setting the end_time.
| session_id | The session UUID |
| start_time | The session start time (required for hypertable lookup) |
| end_time | The session end time |
| bytes_sent | Final bytes sent count |
| bytes_received | Final bytes received count |
| std::vector< domain::session > read_by_account | ( | const boost::uuids::uuid & | account_id, |
| std::uint32_t | limit = 0, |
||
| std::uint32_t | offset = 0 |
||
| ) |
Reads all sessions for an account.
| account_id | The account UUID |
| limit | Maximum number of sessions to return (0 = no limit) |
| offset | Number of sessions to skip |
| std::uint32_t count_by_account | ( | const boost::uuids::uuid & | account_id | ) |
Counts all sessions (active and inactive) for an account.
Used for pagination when listing session history.
| std::vector< domain::session > read_by_time_range | ( | const std::chrono::system_clock::time_point & | start, |
| const std::chrono::system_clock::time_point & | end, | ||
| std::uint32_t | limit = 1000 |
||
| ) |
Reads sessions within a time range.
| start | Start of time range |
| end | End of time range |
| limit | Maximum number of sessions to return |
| std::vector< domain::session_statistics > read_daily_statistics | ( | const boost::uuids::uuid & | account_id, |
| const std::chrono::system_clock::time_point & | start, | ||
| const std::chrono::system_clock::time_point & | end | ||
| ) |
Reads daily session statistics for an account.
Uses the pre-computed continuous aggregate for fast queries.
| account_id | The account UUID |
| start | Start of time range |
| end | End of time range |
| void remove_by_account | ( | const boost::uuids::uuid & | account_id | ) |
Removes all sessions for an account.
Used when deleting an account.