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_cents: Option<i32>,
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_cents: Option<i32>,
43    pub latency_ms: Option<i32>,
44    pub cache_hit: Option<bool>,
45    pub created_at: DateTime<Utc>,
46}
47
48#[derive(Debug, Clone, Copy, Serialize, Deserialize, FromRow)]
49#[allow(clippy::struct_field_names)]
50pub struct CostSummaryRow {
51    pub total_requests: i64,
52    pub total_cost: Option<i64>,
53    pub total_tokens: Option<i64>,
54}
55
56#[derive(Debug, Clone, Copy, Serialize, Deserialize, FromRow)]
57pub struct PreviousCostRow {
58    pub cost: Option<i64>,
59}
60
61#[derive(Debug, Clone, Serialize, Deserialize, FromRow)]
62pub struct CostBreakdownRow {
63    pub name: String,
64    pub cost: i64,
65    pub requests: i64,
66    pub tokens: i64,
67}
68
69#[derive(Debug, Clone, Copy, Serialize, Deserialize, FromRow)]
70pub struct CostTrendRow {
71    pub created_at: DateTime<Utc>,
72    pub cost_cents: Option<i32>,
73    pub tokens_used: Option<i32>,
74}