ORE Studio 0.0.4
Loading...
Searching...
No Matches
Public Types | Public Member Functions | List of all members
session_repository Class Reference

Repository for session persistence and querying. More...

#include <session_repository.hpp>

Collaboration diagram for session_repository:
Collaboration graph

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::sessionread (const boost::uuids::uuid &session_id)
 Reads a session by ID.
 
std::vector< domain::sessionread_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::sessionread_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::sessionread_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::sessionread_all_active ()
 Reads all active sessions across all accounts.
 
std::uint32_t count_all_active ()
 Counts all active sessions.
 
std::vector< domain::session_statisticsread_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_statisticsread_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.
 

Detailed Description

Repository for session persistence and querying.

Handles CRUD operations for session records stored in a TimescaleDB hypertable. Supports time-range queries and statistics aggregation.

Member Function Documentation

◆ update()

void update ( const domain::session session)

Updates an existing session record.

Typically used to set end_time and final byte counts.

◆ update_bytes()

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.

Parameters
session_idThe session UUID
start_timeThe session start time (required for hypertable lookup)
bytes_sentNew total bytes sent
bytes_receivedNew total bytes received

◆ end_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.

Parameters
session_idThe session UUID
start_timeThe session start time (required for hypertable lookup)
end_timeThe session end time
bytes_sentFinal bytes sent count
bytes_receivedFinal bytes received count

◆ read_by_account()

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.

Parameters
account_idThe account UUID
limitMaximum number of sessions to return (0 = no limit)
offsetNumber of sessions to skip
Returns
Sessions ordered by start_time descending (newest first)

◆ count_by_account()

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.

◆ read_by_time_range()

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.

Parameters
startStart of time range
endEnd of time range
limitMaximum number of sessions to return

◆ read_daily_statistics()

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.

Parameters
account_idThe account UUID
startStart of time range
endEnd of time range

◆ remove_by_account()

void remove_by_account ( const boost::uuids::uuid &  account_id)

Removes all sessions for an account.

Used when deleting an account.