koprogo_api/application/ports/
contract_evaluation_repository.rs1use crate::domain::entities::contract_evaluation::ContractEvaluation;
2use async_trait::async_trait;
3use uuid::Uuid;
4
5#[async_trait]
6pub trait ContractEvaluationRepository: Send + Sync {
7 async fn create(&self, evaluation: &ContractEvaluation) -> Result<ContractEvaluation, String>;
8 async fn find_by_id(&self, id: Uuid) -> Result<Option<ContractEvaluation>, String>;
9 async fn find_by_service_provider(
10 &self,
11 provider_id: Uuid,
12 page: i64,
13 per_page: i64,
14 ) -> Result<Vec<ContractEvaluation>, String>;
15 async fn find_by_quote(&self, quote_id: Uuid) -> Result<Vec<ContractEvaluation>, String>;
16 async fn find_by_ticket(&self, ticket_id: Uuid) -> Result<Vec<ContractEvaluation>, String>;
17 async fn find_by_building(
18 &self,
19 building_id: Uuid,
20 page: i64,
21 per_page: i64,
22 ) -> Result<Vec<ContractEvaluation>, String>;
23 async fn find_legal_evaluations(
24 &self,
25 building_id: Uuid,
26 page: i64,
27 per_page: i64,
28 ) -> Result<Vec<ContractEvaluation>, String>;
29 async fn update(&self, evaluation: &ContractEvaluation) -> Result<ContractEvaluation, String>;
30 async fn delete(&self, id: Uuid) -> Result<(), String>;
31 async fn count_by_service_provider(&self, provider_id: Uuid) -> Result<i64, String>;
32 async fn average_score_by_provider(&self, provider_id: Uuid) -> Result<Option<f64>, String>;
33}