async_openai_wasm/
vector_stores.rs1use serde::Serialize;
2
3use crate::{
4 Client, VectorStoreFiles,
5 config::Config,
6 error::OpenAIError,
7 types::{
8 CreateVectorStoreRequest, DeleteVectorStoreResponse, ListVectorStoresResponse,
9 UpdateVectorStoreRequest, VectorStoreObject, VectorStoreSearchRequest,
10 VectorStoreSearchResultsPage,
11 },
12 vector_store_file_batches::VectorStoreFileBatches,
13};
14
15pub struct VectorStores<'c, C: Config> {
16 client: &'c Client<C>,
17}
18
19impl<'c, C: Config> VectorStores<'c, C> {
20 pub fn new(client: &'c Client<C>) -> Self {
21 Self { client }
22 }
23
24 pub fn files(&self, vector_store_id: &str) -> VectorStoreFiles<C> {
26 VectorStoreFiles::new(self.client, vector_store_id)
27 }
28
29 pub fn file_batches(&self, vector_store_id: &str) -> VectorStoreFileBatches<C> {
31 VectorStoreFileBatches::new(self.client, vector_store_id)
32 }
33
34 #[crate::byot(T0 = serde::Serialize, R = serde::de::DeserializeOwned)]
36 pub async fn create(
37 &self,
38 request: CreateVectorStoreRequest,
39 ) -> Result<VectorStoreObject, OpenAIError> {
40 self.client.post("/vector_stores", request).await
41 }
42
43 #[crate::byot(T0 = std::fmt::Display, R = serde::de::DeserializeOwned)]
45 pub async fn retrieve(&self, vector_store_id: &str) -> Result<VectorStoreObject, OpenAIError> {
46 self.client
47 .get(&format!("/vector_stores/{vector_store_id}"))
48 .await
49 }
50
51 #[crate::byot(T0 = serde::Serialize, R = serde::de::DeserializeOwned)]
53 pub async fn list<Q>(&self, query: &Q) -> Result<ListVectorStoresResponse, OpenAIError>
54 where
55 Q: Serialize + ?Sized,
56 {
57 self.client.get_with_query("/vector_stores", &query).await
58 }
59
60 #[crate::byot(T0 = std::fmt::Display, R = serde::de::DeserializeOwned)]
62 pub async fn delete(
63 &self,
64 vector_store_id: &str,
65 ) -> Result<DeleteVectorStoreResponse, OpenAIError> {
66 self.client
67 .delete(&format!("/vector_stores/{vector_store_id}"))
68 .await
69 }
70
71 #[crate::byot(T0 = std::fmt::Display, T1 = serde::Serialize, R = serde::de::DeserializeOwned)]
73 pub async fn update(
74 &self,
75 vector_store_id: &str,
76 request: UpdateVectorStoreRequest,
77 ) -> Result<VectorStoreObject, OpenAIError> {
78 self.client
79 .post(&format!("/vector_stores/{vector_store_id}"), request)
80 .await
81 }
82
83 #[crate::byot(T0 = std::fmt::Display, T1 = serde::Serialize, R = serde::de::DeserializeOwned)]
85 pub async fn search(
86 &self,
87 vector_store_id: &str,
88 request: VectorStoreSearchRequest,
89 ) -> Result<VectorStoreSearchResultsPage, OpenAIError> {
90 self.client
91 .post(&format!("/vector_stores/{vector_store_id}/search"), request)
92 .await
93 }
94}