haste_repository/
admin.rs1use crate::types::user::{LoginMethod, LoginResult};
3use haste_fhir_operation_error::OperationOutcomeError;
4use haste_jwt::{ProjectId, TenantId};
5
6pub trait Login {
7 fn login(
8 &self,
9 tenant: &TenantId,
10 method: &LoginMethod,
11 ) -> impl Future<Output = Result<LoginResult, OperationOutcomeError>> + Send;
12}
13
14pub trait Migrate {
15 fn migrate(&self) -> impl Future<Output = Result<(), OperationOutcomeError>> + Send;
16}
17
18pub trait TenantAuthAdmin<CreatedModel, ReadModel, SearchClauses, UpdateModel, Key> {
19 fn create(
20 &self,
21 tenant: &TenantId,
22 model: CreatedModel,
23 ) -> impl Future<Output = Result<ReadModel, OperationOutcomeError>> + Send;
24 fn read(
25 &self,
26 tenant: &TenantId,
27 id: &Key,
28 ) -> impl Future<Output = Result<Option<ReadModel>, OperationOutcomeError>> + Send;
29 fn update(
30 &self,
31 tenant: &TenantId,
32 model: UpdateModel,
33 ) -> impl Future<Output = Result<ReadModel, OperationOutcomeError>> + Send;
34 fn delete(
35 &self,
36 tenant: &TenantId,
37 id: &Key,
38 ) -> impl Future<Output = Result<(), OperationOutcomeError>> + Send;
39 fn search(
40 &self,
41 tenant: &TenantId,
42 clauses: &SearchClauses,
43 ) -> impl Future<Output = Result<Vec<ReadModel>, OperationOutcomeError>> + Send;
44}
45
46pub trait ProjectAuthAdmin<CreatedModel, ReadModel, SearchClauses, UpdateModel, Key> {
47 fn create(
48 &self,
49 tenant: &TenantId,
50 project: &ProjectId,
51 model: CreatedModel,
52 ) -> impl Future<Output = Result<ReadModel, OperationOutcomeError>> + Send;
53 fn read(
54 &self,
55 tenant: &TenantId,
56 project: &ProjectId,
57 id: &Key,
58 ) -> impl Future<Output = Result<Option<ReadModel>, OperationOutcomeError>> + Send;
59 fn update(
60 &self,
61 tenant: &TenantId,
62 project: &ProjectId,
63 model: UpdateModel,
64 ) -> impl Future<Output = Result<ReadModel, OperationOutcomeError>> + Send;
65 fn delete(
66 &self,
67 tenant: &TenantId,
68 project: &ProjectId,
69 id: &Key,
70 ) -> impl Future<Output = Result<(), OperationOutcomeError>> + Send;
71 fn search(
72 &self,
73 tenant: &TenantId,
74 project: &ProjectId,
75 clauses: &SearchClauses,
76 ) -> impl Future<Output = Result<Vec<ReadModel>, OperationOutcomeError>> + Send;
77}