gemini_rust/file_search/
store_builder.rs1use std::sync::Arc;
2use tracing::instrument;
3
4use crate::client::{Error, GeminiClient};
5use crate::file_search::model::CreateFileSearchStoreRequest;
6use crate::file_search::FileSearchStoreHandle;
7
8pub struct FileSearchStoreBuilder {
26 pub(crate) client: Arc<GeminiClient>,
27 pub(crate) display_name: Option<String>,
28}
29
30impl FileSearchStoreBuilder {
31 pub fn with_display_name(mut self, name: impl Into<String>) -> Self {
32 self.display_name = Some(name.into());
33 self
34 }
35
36 #[instrument(skip_all, fields(
37 display_name = self.display_name.as_deref(),
38 ))]
39 pub async fn execute(self) -> Result<FileSearchStoreHandle, Error> {
40 let request = CreateFileSearchStoreRequest {
41 display_name: self.display_name,
42 };
43
44 let store = self.client.create_file_search_store(request).await?;
45
46 Ok(FileSearchStoreHandle::new(self.client, store))
47 }
48}