koprogo_api/application/ports/
building_repository.rs1use crate::application::dto::{BuildingFilters, PageRequest};
2use crate::domain::entities::Building;
3use async_trait::async_trait;
4use uuid::Uuid;
5
6#[async_trait]
8pub trait BuildingRepository: Send + Sync {
9 async fn create(&self, building: &Building) -> Result<Building, String>;
10 async fn find_by_id(&self, id: Uuid) -> Result<Option<Building>, String>;
11 async fn find_all(&self) -> Result<Vec<Building>, String>;
12
13 async fn find_all_paginated(
16 &self,
17 page_request: &PageRequest,
18 filters: &BuildingFilters,
19 ) -> Result<(Vec<Building>, i64), String>;
20
21 async fn update(&self, building: &Building) -> Result<Building, String>;
22 async fn delete(&self, id: Uuid) -> Result<bool, String>;
23}