rig_core/client/
cached_content.rs1use crate::driver::{Model, Transport};
6use crate::error::ProviderError;
7use crate::providers::gemini::cached_content::{
8 CacheExpiry, CachedContent, CachedContentRequest, CachedContents, NewCachedContent, on_handle,
9};
10
11impl<T> Model<CachedContents, T>
14where
15 T: Transport<CachedContents>,
16{
17 pub async fn create(&self, request: NewCachedContent) -> Result<CachedContent, ProviderError> {
19 self.call(CachedContentRequest::Create(request))
20 .await?
21 .resource()
22 }
23
24 pub async fn get(&self, name: &str) -> Result<CachedContent, ProviderError> {
26 self.call(CachedContentRequest::Get(name.to_owned()))
27 .await
28 .map_err(|error| on_handle(error, name))?
29 .resource()
30 }
31
32 pub async fn list(&self) -> Result<Vec<CachedContent>, ProviderError> {
35 let pages =
36 crate::driver::follow_cursors(self.name(), "cached_content", |page_token| async move {
37 let reply = self.call(CachedContentRequest::List { page_token }).await?;
38 let next = reply.next_page_token();
39 Ok((reply.entries()?, next))
40 })
41 .await?;
42 Ok(pages.into_iter().flatten().collect())
43 }
44
45 pub async fn update_expiry(
48 &self,
49 name: &str,
50 expiry: CacheExpiry,
51 ) -> Result<CachedContent, ProviderError> {
52 let request = CachedContentRequest::UpdateExpiry {
53 name: name.to_owned(),
54 expiry,
55 };
56 self.call(request)
57 .await
58 .map_err(|error| on_handle(error, name))?
59 .resource()
60 }
61
62 pub async fn delete(&self, name: &str) -> Result<(), ProviderError> {
67 self.call(CachedContentRequest::Delete(name.to_owned()))
68 .await
69 .map_err(|error| on_handle(error, name))?;
70 Ok(())
71 }
72}