use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use utoipa::{IntoParams, ToSchema};
use uuid::Uuid;
use super::pagination::Pagination;
#[derive(Debug, Default, Deserialize, IntoParams, ToSchema)]
pub struct ListBatchRequestsQuery {
#[serde(flatten)]
#[param(inline)]
pub pagination: Pagination,
pub completion_window: Option<String>,
pub status: Option<String>,
pub model: Option<String>,
pub member_id: Option<uuid::Uuid>,
pub created_after: Option<DateTime<Utc>>,
pub created_before: Option<DateTime<Utc>>,
pub active_first: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
pub struct BatchRequestSummary {
pub id: Uuid,
pub batch_id: Uuid,
pub model: String,
pub status: String,
pub created_at: DateTime<Utc>,
pub completed_at: Option<DateTime<Utc>>,
pub failed_at: Option<DateTime<Utc>>,
pub duration_ms: Option<f64>,
pub response_status: Option<i16>,
pub prompt_tokens: Option<i64>,
pub completion_tokens: Option<i64>,
pub reasoning_tokens: Option<i64>,
pub total_tokens: Option<i64>,
pub total_cost: Option<f64>,
pub created_by_email: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
pub struct BatchRequestDetail {
pub id: Uuid,
pub batch_id: Uuid,
pub model: String,
pub status: String,
pub created_at: DateTime<Utc>,
pub completed_at: Option<DateTime<Utc>>,
pub failed_at: Option<DateTime<Utc>>,
pub duration_ms: Option<f64>,
pub response_status: Option<i16>,
pub prompt_tokens: Option<i64>,
pub completion_tokens: Option<i64>,
pub reasoning_tokens: Option<i64>,
pub total_tokens: Option<i64>,
pub total_cost: Option<f64>,
pub body: String,
pub response_body: Option<String>,
pub error: Option<String>,
pub completion_window: String,
pub batch_created_by: String,
pub created_by_email: Option<String>,
}