use std::sync::Arc;
use bytes::Bytes;
use super::user::DbUserRepository;
use crate::cache::image::manager::{Error, ImageCacheService};
use crate::models::user::UserId;
pub struct Service {
image_cache_service: Arc<ImageCacheService>,
user_repository: Arc<DbUserRepository>,
}
impl Service {
#[must_use]
pub fn new(image_cache_service: Arc<ImageCacheService>, user_repository: Arc<DbUserRepository>) -> Self {
Self {
image_cache_service,
user_repository,
}
}
pub async fn get_image_by_url(&self, url: &str, user_id: &UserId) -> Result<Bytes, Error> {
let user = self.user_repository.get_compact(user_id).await.ok();
self.image_cache_service.get_image_by_url(url, user).await
}
}