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;
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}