dynamo_async_openai/
vector_store_files.rs1use serde::Serialize;
12
13use crate::{
14 Client,
15 config::Config,
16 error::OpenAIError,
17 types::{
18 CreateVectorStoreFileRequest, DeleteVectorStoreFileResponse, ListVectorStoreFilesResponse,
19 VectorStoreFileContentResponse, VectorStoreFileObject,
20 },
21};
22
23pub struct VectorStoreFiles<'c, C: Config> {
27 client: &'c Client<C>,
28 pub vector_store_id: String,
29}
30
31impl<'c, C: Config> VectorStoreFiles<'c, C> {
32 pub fn new(client: &'c Client<C>, vector_store_id: &str) -> Self {
33 Self {
34 client,
35 vector_store_id: vector_store_id.into(),
36 }
37 }
38
39 #[crate::byot(T0 = serde::Serialize, R = serde::de::DeserializeOwned)]
41 pub async fn create(
42 &self,
43 request: CreateVectorStoreFileRequest,
44 ) -> Result<VectorStoreFileObject, OpenAIError> {
45 self.client
46 .post(
47 &format!("/vector_stores/{}/files", &self.vector_store_id),
48 request,
49 )
50 .await
51 }
52
53 #[crate::byot(T0 = std::fmt::Display, R = serde::de::DeserializeOwned)]
55 pub async fn retrieve(&self, file_id: &str) -> Result<VectorStoreFileObject, OpenAIError> {
56 self.client
57 .get(&format!(
58 "/vector_stores/{}/files/{file_id}",
59 &self.vector_store_id
60 ))
61 .await
62 }
63
64 #[crate::byot(T0 = std::fmt::Display, R = serde::de::DeserializeOwned)]
66 pub async fn delete(
67 &self,
68 file_id: &str,
69 ) -> Result<DeleteVectorStoreFileResponse, OpenAIError> {
70 self.client
71 .delete(&format!(
72 "/vector_stores/{}/files/{file_id}",
73 &self.vector_store_id
74 ))
75 .await
76 }
77
78 #[crate::byot(T0 = serde::Serialize, R = serde::de::DeserializeOwned)]
80 pub async fn list<Q>(&self, query: &Q) -> Result<ListVectorStoreFilesResponse, OpenAIError>
81 where
82 Q: Serialize + ?Sized,
83 {
84 self.client
85 .get_with_query(
86 &format!("/vector_stores/{}/files", &self.vector_store_id),
87 &query,
88 )
89 .await
90 }
91
92 #[crate::byot(T0 = std::fmt::Display, R = serde::de::DeserializeOwned)]
94 pub async fn retrieve_file_content(
95 &self,
96 file_id: &str,
97 ) -> Result<VectorStoreFileContentResponse, OpenAIError> {
98 self.client
99 .get(&format!(
100 "/vector_stores/{}/files/{file_id}/content",
101 &self.vector_store_id
102 ))
103 .await
104 }
105}