koprogo_api/application/ports/
security_incident_repository.rs1use crate::domain::entities::SecurityIncident;
2use async_trait::async_trait;
3use uuid::Uuid;
4
5pub struct SecurityIncidentFilters {
7 pub severity: Option<String>,
8 pub status: Option<String>,
9 pub page: i64,
10 pub per_page: i64,
11}
12
13#[async_trait]
15pub trait SecurityIncidentRepository: Send + Sync {
16 async fn create(&self, incident: &SecurityIncident) -> Result<SecurityIncident, String>;
17
18 async fn find_by_id(
19 &self,
20 id: Uuid,
21 organization_id: Option<Uuid>,
22 ) -> Result<Option<SecurityIncident>, String>;
23
24 async fn find_all(
25 &self,
26 organization_id: Option<Uuid>,
27 filters: SecurityIncidentFilters,
28 ) -> Result<(Vec<SecurityIncident>, i64), String>;
29
30 async fn report_to_apd(
31 &self,
32 id: Uuid,
33 organization_id: Option<Uuid>,
34 apd_reference_number: String,
35 investigation_notes: Option<String>,
36 ) -> Result<Option<SecurityIncident>, String>;
37
38 async fn find_overdue(
39 &self,
40 organization_id: Option<Uuid>,
41 ) -> Result<Vec<SecurityIncident>, String>;
42}