koprogo_api/application/ports/
meeting_repository.rs1use crate::application::dto::PageRequest;
2use crate::domain::entities::Meeting;
3use async_trait::async_trait;
4use uuid::Uuid;
5
6#[async_trait]
7pub trait MeetingRepository: Send + Sync {
8 async fn create(&self, meeting: &Meeting) -> Result<Meeting, String>;
9 async fn find_by_id(&self, id: Uuid) -> Result<Option<Meeting>, String>;
10 async fn find_by_building(&self, building_id: Uuid) -> Result<Vec<Meeting>, String>;
11 async fn update(&self, meeting: &Meeting) -> Result<Meeting, String>;
12 async fn delete(&self, id: Uuid) -> Result<bool, String>;
13
14 async fn find_all_paginated(
16 &self,
17 page_request: &PageRequest,
18 organization_id: Option<Uuid>,
19 ) -> Result<(Vec<Meeting>, i64), String>;
20}