use serde::{ Deserialize, Serialize };
use std::time::SystemTime;
#[ derive( Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize ) ]
#[ serde( rename_all = "SCREAMING_SNAKE_CASE" ) ]
pub enum BatchJobState
{
Pending,
Running,
Succeeded,
Failed,
Cancelled,
PartiallyCompleted,
}
#[ derive( Debug, Clone, Serialize, Deserialize ) ]
#[ serde( rename_all = "camelCase" ) ]
pub struct BatchJob
{
pub job_id : String,
pub state : BatchJobState,
pub model : String,
pub request_count : usize,
#[ serde( skip_serializing_if = "Option::is_none" ) ]
pub create_time : Option< SystemTime >,
#[ serde( skip_serializing_if = "Option::is_none" ) ]
pub expiration_time : Option< SystemTime >,
#[ serde( skip_serializing_if = "Option::is_none" ) ]
pub error : Option< String >,
}
#[ derive( Debug, Clone, Serialize, Deserialize ) ]
#[ serde( rename_all = "camelCase" ) ]
pub struct BatchJobStatus
{
pub job_id : String,
pub state : BatchJobState,
#[ serde( default ) ]
pub completed_count : usize,
#[ serde( default ) ]
pub failed_count : usize,
#[ serde( skip_serializing_if = "Option::is_none" ) ]
pub update_time : Option< SystemTime >,
#[ serde( skip_serializing_if = "Option::is_none" ) ]
pub error : Option< String >,
}
#[ derive( Debug, Clone, Serialize, Deserialize ) ]
#[ serde( rename_all = "camelCase" ) ]
pub struct BatchBillingMetadata
{
pub discount_percentage : u32,
pub standard_cost : f64,
pub discounted_cost : f64,
#[ serde( default ) ]
pub total_tokens : i32,
}
#[ derive( Debug, Clone, Serialize, Deserialize ) ]
#[ serde( rename_all = "camelCase" ) ]
pub struct BatchJobResults
{
pub job_id : String,
pub state : BatchJobState,
pub responses : Vec< super::GenerateContentResponse >,
#[ serde( skip_serializing_if = "Option::is_none" ) ]
pub billing_metadata : Option< BatchBillingMetadata >,
#[ serde( skip_serializing_if = "Option::is_none" ) ]
pub retrieve_time : Option< SystemTime >,
}
#[ derive( Debug, Clone, Serialize, Deserialize ) ]
#[ serde( rename_all = "camelCase" ) ]
pub struct BatchEmbeddingResults
{
pub job_id : String,
pub state : BatchJobState,
pub embeddings : Vec< super::ContentEmbedding >,
#[ serde( skip_serializing_if = "Option::is_none" ) ]
pub billing_metadata : Option< BatchBillingMetadata >,
}
#[ derive( Debug, Clone, Serialize, Deserialize ) ]
#[ serde( rename_all = "camelCase" ) ]
pub struct BatchJobList
{
pub jobs : Vec< BatchJob >,
#[ serde( skip_serializing_if = "Option::is_none" ) ]
pub next_page_token : Option< String >,
}
#[ derive( Debug, Clone, Serialize, Deserialize ) ]
#[ serde( rename_all = "camelCase" ) ]
pub struct CreateBatchJobRequest
{
pub model : String,
pub requests : Vec< super::GenerateContentRequest >,
}
#[ derive( Debug, Clone, Serialize, Deserialize ) ]
#[ serde( rename_all = "camelCase" ) ]
pub struct CreateBatchEmbeddingRequest
{
pub model : String,
pub texts : Vec< String >,
}