use std::sync::Arc;
use anyhow::Result;
use async_trait::async_trait;
use uuid::Uuid;
use super::types::*;
#[async_trait]
pub trait BucketQueryService: Send + Sync {
async fn get_access_log(&self, id: AccessLogId) -> Result<Option<AccessLogDto>>;
async fn get_access_log_summary(&self, id: AccessLogId) -> Result<Option<AccessLogSummary>>;
async fn access_log_exists(&self, id: AccessLogId) -> Result<bool>;
async fn get_bucket(&self, id: BucketId) -> Result<Option<BucketDto>>;
async fn get_bucket_summary(&self, id: BucketId) -> Result<Option<BucketSummary>>;
async fn bucket_exists(&self, id: BucketId) -> Result<bool>;
async fn get_content_hash(&self, id: ContentHashId) -> Result<Option<ContentHashDto>>;
async fn get_content_hash_summary(&self, id: ContentHashId) -> Result<Option<ContentHashSummary>>;
async fn content_hash_exists(&self, id: ContentHashId) -> Result<bool>;
async fn get_conversion_job(&self, id: ConversionJobId) -> Result<Option<ConversionJobDto>>;
async fn get_conversion_job_summary(&self, id: ConversionJobId) -> Result<Option<ConversionJobSummary>>;
async fn conversion_job_exists(&self, id: ConversionJobId) -> Result<bool>;
async fn get_file_comment(&self, id: FileCommentId) -> Result<Option<FileCommentDto>>;
async fn get_file_comment_summary(&self, id: FileCommentId) -> Result<Option<FileCommentSummary>>;
async fn file_comment_exists(&self, id: FileCommentId) -> Result<bool>;
async fn get_file_lock(&self, id: FileLockId) -> Result<Option<FileLockDto>>;
async fn get_file_lock_summary(&self, id: FileLockId) -> Result<Option<FileLockSummary>>;
async fn file_lock_exists(&self, id: FileLockId) -> Result<bool>;
async fn get_file_share(&self, id: FileShareId) -> Result<Option<FileShareDto>>;
async fn get_file_share_summary(&self, id: FileShareId) -> Result<Option<FileShareSummary>>;
async fn file_share_exists(&self, id: FileShareId) -> Result<bool>;
async fn get_file_version(&self, id: FileVersionId) -> Result<Option<FileVersionDto>>;
async fn get_file_version_summary(&self, id: FileVersionId) -> Result<Option<FileVersionSummary>>;
async fn file_version_exists(&self, id: FileVersionId) -> Result<bool>;
async fn get_processing_job(&self, id: ProcessingJobId) -> Result<Option<ProcessingJobDto>>;
async fn get_processing_job_summary(&self, id: ProcessingJobId) -> Result<Option<ProcessingJobSummary>>;
async fn processing_job_exists(&self, id: ProcessingJobId) -> Result<bool>;
async fn get_stored_file(&self, id: StoredFileId) -> Result<Option<StoredFileDto>>;
async fn get_stored_file_summary(&self, id: StoredFileId) -> Result<Option<StoredFileSummary>>;
async fn stored_file_exists(&self, id: StoredFileId) -> Result<bool>;
async fn get_thumbnail(&self, id: ThumbnailId) -> Result<Option<ThumbnailDto>>;
async fn get_thumbnail_summary(&self, id: ThumbnailId) -> Result<Option<ThumbnailSummary>>;
async fn thumbnail_exists(&self, id: ThumbnailId) -> Result<bool>;
async fn get_upload_session(&self, id: UploadSessionId) -> Result<Option<UploadSessionDto>>;
async fn get_upload_session_summary(&self, id: UploadSessionId) -> Result<Option<UploadSessionSummary>>;
async fn upload_session_exists(&self, id: UploadSessionId) -> Result<bool>;
async fn get_user_quota(&self, id: UserQuotaId) -> Result<Option<UserQuotaDto>>;
async fn get_user_quota_summary(&self, id: UserQuotaId) -> Result<Option<UserQuotaSummary>>;
async fn user_quota_exists(&self, id: UserQuotaId) -> Result<bool>;
}
pub struct BucketQueryServiceImpl<R> {
#[allow(dead_code)]
repository: Arc<R>,
}
impl<R> BucketQueryServiceImpl<R> {
pub fn new(repository: Arc<R>) -> Self {
Self { repository }
}
}