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