systemprompt_analytics/models/cli/
request.rs1use 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}