use std::collections::HashMap;
use std::sync::{Mutex, MutexGuard};
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
pub(crate) struct VisionDescriptionKey {
pub vision_model: String,
pub image_url: String,
pub detail: Option<String>,
pub focus: Option<String>,
}
#[derive(Debug, Default)]
pub(crate) struct VisionDescriptionReuse {
entries: Mutex<HashMap<VisionDescriptionKey, String>>,
}
impl VisionDescriptionReuse {
fn entries(&self) -> MutexGuard<'_, HashMap<VisionDescriptionKey, String>> {
self.entries
.lock()
.unwrap_or_else(|error| error.into_inner())
}
pub(crate) fn clear(&self) {
self.entries().clear();
}
pub(crate) fn get(&self, key: &VisionDescriptionKey) -> Option<String> {
self.entries().get(key).cloned()
}
pub(crate) fn insert(&self, key: VisionDescriptionKey, description: String) {
self.entries().insert(key, description);
}
}