use anyhow::Result;
use async_trait::async_trait;
use super::types::*;
#[async_trait]
pub trait MaintenanceQueryService: Send + Sync {
async fn get_maintenance_schedule(&self, id: MaintenanceScheduleId) -> Result<Option<MaintenanceScheduleDto>>;
async fn get_maintenance_schedule_summary(&self, id: MaintenanceScheduleId) -> Result<Option<MaintenanceScheduleSummary>>;
async fn maintenance_schedule_exists(&self, id: MaintenanceScheduleId) -> Result<bool>;
async fn get_maintenance_visit(&self, id: MaintenanceVisitId) -> Result<Option<MaintenanceVisitDto>>;
async fn get_maintenance_visit_summary(&self, id: MaintenanceVisitId) -> Result<Option<MaintenanceVisitSummary>>;
async fn maintenance_visit_exists(&self, id: MaintenanceVisitId) -> Result<bool>;
async fn get_maintenance_visit_part(&self, id: MaintenanceVisitPartId) -> Result<Option<MaintenanceVisitPartDto>>;
async fn get_maintenance_visit_part_summary(&self, id: MaintenanceVisitPartId) -> Result<Option<MaintenanceVisitPartSummary>>;
async fn maintenance_visit_part_exists(&self, id: MaintenanceVisitPartId) -> Result<bool>;
}