systemprompt_analytics/models/cli/
session.rs1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3use sqlx::FromRow;
4use systemprompt_identifiers::{SessionId, UserId};
5
6#[derive(Debug, Clone, Copy, Serialize, Deserialize, FromRow)]
7pub struct SessionStatsRow {
8 pub total_sessions: i64,
9 pub unique_users: i64,
10 pub avg_duration: Option<f64>,
11 pub avg_requests: Option<f64>,
12 pub conversions: i64,
13}
14
15#[derive(Debug, Clone, Copy, Serialize, Deserialize, FromRow)]
16pub struct ActiveSessionCountRow {
17 pub count: i64,
18}
19
20#[derive(Debug, Clone, Serialize, Deserialize, FromRow)]
21pub struct LiveSessionRow {
22 pub session_id: SessionId,
23 pub user_type: Option<String>,
24 pub started_at: DateTime<Utc>,
25 pub duration_seconds: Option<i32>,
26 pub request_count: Option<i32>,
27 pub last_activity_at: DateTime<Utc>,
28}
29
30#[derive(Debug, Clone, Serialize, Deserialize, FromRow)]
31pub struct SessionTrendRow {
32 pub started_at: DateTime<Utc>,
33 pub user_id: Option<UserId>,
34 pub duration_seconds: Option<i32>,
35}