systemprompt_analytics/models/cli/
request.rs1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3use sqlx::FromRow;
4use systemprompt_identifiers::AiRequestId;
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: String,
49}
50
51#[derive(Debug, Clone, Copy, Serialize, Deserialize, FromRow)]
52#[allow(clippy::struct_field_names)]
53pub struct CostSummaryRow {
54 pub total_requests: i64,
55 pub total_cost: Option<i64>,
56 pub total_tokens: Option<i64>,
57}
58
59#[derive(Debug, Clone, Copy, Serialize, Deserialize, FromRow)]
60pub struct PreviousCostRow {
61 pub cost: Option<i64>,
62}
63
64#[derive(Debug, Clone, Serialize, Deserialize, FromRow)]
65pub struct CostBreakdownRow {
66 pub name: String,
67 pub cost: i64,
68 pub requests: i64,
69 pub tokens: i64,
70}
71
72#[derive(Debug, Clone, Copy, Serialize, Deserialize, FromRow)]
73pub struct CostTrendRow {
74 pub created_at: DateTime<Utc>,
75 pub cost_microdollars: Option<i64>,
76 pub tokens_used: Option<i32>,
77}