use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct AnalyticsOperation {
#[serde(rename = "operation")]
pub operation: OperationTrue,
#[serde(rename = "column")]
pub column: ColumnTrue,
#[serde(rename = "alias", skip_serializing_if = "Option::is_none")]
pub alias: Option<String>,
}
impl AnalyticsOperation {
pub fn new(operation: OperationTrue, column: ColumnTrue) -> AnalyticsOperation {
AnalyticsOperation {
operation,
column,
alias: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum OperationTrue {
#[serde(rename = "sum")]
Sum,
#[serde(rename = "avg")]
Avg,
#[serde(rename = "count")]
Count,
#[serde(rename = "min")]
Min,
#[serde(rename = "max")]
Max,
#[serde(rename = "history")]
History,
}
impl Default for OperationTrue {
fn default() -> OperationTrue {
Self::Sum
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum ColumnTrue {
#[serde(rename = "id")]
Id,
#[serde(rename = "cost")]
Cost,
#[serde(rename = "costBreakdown.llm")]
CostBreakdownPeriodLlm,
#[serde(rename = "costBreakdown.stt")]
CostBreakdownPeriodStt,
#[serde(rename = "costBreakdown.tts")]
CostBreakdownPeriodTts,
#[serde(rename = "costBreakdown.vapi")]
CostBreakdownPeriodVapi,
#[serde(rename = "costBreakdown.ttsCharacters")]
CostBreakdownPeriodTtsCharacters,
#[serde(rename = "costBreakdown.llmPromptTokens")]
CostBreakdownPeriodLlmPromptTokens,
#[serde(rename = "costBreakdown.llmCompletionTokens")]
CostBreakdownPeriodLlmCompletionTokens,
#[serde(rename = "duration")]
Duration,
#[serde(rename = "concurrency")]
Concurrency,
#[serde(rename = "minutesUsed")]
MinutesUsed,
}
impl Default for ColumnTrue {
fn default() -> ColumnTrue {
Self::Id
}
}