Skip to main content

systemprompt_analytics/models/cli/
request.rs

1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3use sqlx::FromRow;
4use systemprompt_identifiers::{AiRequestId, UserId};
5
6#[derive(Debug, Clone, Copy, Serialize, Deserialize, FromRow)]
7pub struct RequestStatsRow {
8    pub total: i64,
9    pub total_tokens: Option<i64>,
10    pub input_tokens: Option<i64>,
11    pub output_tokens: Option<i64>,
12    pub cost: Option<i64>,
13    pub avg_latency: Option<f64>,
14    pub cache_hits: i64,
15}
16
17#[derive(Debug, Clone, Serialize, Deserialize, FromRow)]
18pub struct ModelUsageRow {
19    pub provider: String,
20    pub model: String,
21    pub request_count: i64,
22    pub total_tokens: Option<i64>,
23    pub total_cost: Option<i64>,
24    pub avg_latency: Option<f64>,
25}
26
27#[derive(Debug, Clone, Copy, Serialize, Deserialize, FromRow)]
28pub struct RequestTrendRow {
29    pub created_at: DateTime<Utc>,
30    pub tokens_used: Option<i32>,
31    pub cost_microdollars: Option<i64>,
32    pub latency_ms: Option<i32>,
33}
34
35#[derive(Debug, Clone, Serialize, Deserialize, FromRow)]
36pub struct RequestListRow {
37    pub id: AiRequestId,
38    pub provider: String,
39    pub model: String,
40    pub input_tokens: Option<i32>,
41    pub output_tokens: Option<i32>,
42    pub cost_microdollars: Option<i64>,
43    pub latency_ms: Option<i32>,
44    pub cache_hit: Option<bool>,
45    pub created_at: DateTime<Utc>,
46    pub status: String,
47    pub error_message: Option<String>,
48    pub user_id: UserId,
49}
50
51#[derive(Debug, Clone, Copy, Serialize, Deserialize, FromRow)]
52pub struct CostSummaryRow {
53    pub requests: i64,
54    pub cost: Option<i64>,
55    pub tokens: Option<i64>,
56}
57
58#[derive(Debug, Clone, Copy, Serialize, Deserialize, FromRow)]
59pub struct PreviousCostRow {
60    pub cost: Option<i64>,
61}
62
63#[derive(Debug, Clone, Serialize, Deserialize, FromRow)]
64pub struct CostBreakdownRow {
65    pub name: String,
66    pub cost: i64,
67    pub requests: i64,
68    pub tokens: i64,
69}
70
71#[derive(Debug, Clone, Copy, Serialize, Deserialize, FromRow)]
72pub struct ContextSummaryRow {
73    pub conversations: i64,
74    pub ai_requests: i64,
75}
76
77#[derive(Debug, Clone, Serialize, Deserialize, FromRow)]
78pub struct ContextGroupRow {
79    pub name: String,
80    pub conversations: i64,
81    pub ai_requests: i64,
82}
83
84#[derive(Debug, Clone, Serialize, Deserialize, FromRow)]
85pub struct RecentContextRow {
86    pub context_id: String,
87    pub last_activity: DateTime<Utc>,
88    pub ai_requests: i64,
89    pub model: Option<String>,
90    pub agent_name: Option<String>,
91}
92
93#[derive(Debug, Clone, Copy, Serialize, Deserialize, FromRow)]
94pub struct CostTrendRow {
95    pub created_at: DateTime<Utc>,
96    pub cost_microdollars: Option<i64>,
97    pub tokens_used: Option<i32>,
98}