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