use crate::{
error::OpenAIError,
types::{
CreateThreadAndRunRequest, CreateThreadRequest, DeleteThreadResponse, ModifyThreadRequest,
RunObject, ThreadObject,
},
Client, Messages, Runs,
};
pub struct Threads<'c> {
client: &'c Client,
}
impl<'c> Threads<'c> {
pub fn new(client: &'c Client) -> Self {
Self { client }
}
pub fn messages(&self, thread_id: &str) -> Messages {
Messages::new(self.client, thread_id)
}
pub fn runs(&self, thread_id: &str) -> Runs {
Runs::new(self.client, thread_id)
}
pub async fn create_and_run(
&self,
request: CreateThreadAndRunRequest,
) -> Result<RunObject, OpenAIError> {
self.client.post("/threads/runs", request).await
}
pub async fn create(&self, request: CreateThreadRequest) -> Result<ThreadObject, OpenAIError> {
self.client.post("/threads", request).await
}
pub async fn retrieve(&self, thread_id: &str) -> Result<ThreadObject, OpenAIError> {
self.client.get(&format!("/threads/{thread_id}")).await
}
pub async fn update(
&self,
thread_id: &str,
request: ModifyThreadRequest,
) -> Result<ThreadObject, OpenAIError> {
self.client
.post(&format!("/threads/{thread_id}"), request)
.await
}
pub async fn delete(&self, thread_id: &str) -> Result<DeleteThreadResponse, OpenAIError> {
self.client.delete(&format!("/threads/{thread_id}")).await
}
}