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 SystemAdmin<S, SearchClauses> {
19 fn search(
20 &self,
21 clauses: &SearchClauses,
22 ) -> impl Future<Output = Result<Vec<S>, OperationOutcomeError>> + Send;
23}
24
25pub trait TenantAuthAdmin<CreatedModel, ReadModel, SearchClauses, UpdateModel, Key> {
26 fn create(
27 &self,
28 tenant: &TenantId,
29 model: CreatedModel,
30 ) -> impl Future<Output = Result<ReadModel, OperationOutcomeError>> + Send;
31 fn read(
32 &self,
33 tenant: &TenantId,
34 id: &Key,
35 ) -> impl Future<Output = Result<Option<ReadModel>, OperationOutcomeError>> + Send;
36 fn update(
37 &self,
38 tenant: &TenantId,
39 model: UpdateModel,
40 ) -> impl Future<Output = Result<ReadModel, OperationOutcomeError>> + Send;
41 fn delete(
42 &self,
43 tenant: &TenantId,
44 id: &Key,
45 ) -> impl Future<Output = Result<(), OperationOutcomeError>> + Send;
46 fn search(
47 &self,
48 tenant: &TenantId,
49 clauses: &SearchClauses,
50 ) -> impl Future<Output = Result<Vec<ReadModel>, OperationOutcomeError>> + Send;
51}
52
53pub trait ProjectAuthAdmin<CreatedModel, ReadModel, SearchClauses, UpdateModel, Key> {
54 fn create(
55 &self,
56 tenant: &TenantId,
57 project: &ProjectId,
58 model: CreatedModel,
59 ) -> impl Future<Output = Result<ReadModel, OperationOutcomeError>> + Send;
60 fn read(
61 &self,
62 tenant: &TenantId,
63 project: &ProjectId,
64 id: &Key,
65 ) -> impl Future<Output = Result<Option<ReadModel>, OperationOutcomeError>> + Send;
66 fn update(
67 &self,
68 tenant: &TenantId,
69 project: &ProjectId,
70 model: UpdateModel,
71 ) -> impl Future<Output = Result<ReadModel, OperationOutcomeError>> + Send;
72 fn delete(
73 &self,
74 tenant: &TenantId,
75 project: &ProjectId,
76 id: &Key,
77 ) -> impl Future<Output = Result<(), OperationOutcomeError>> + Send;
78 fn search(
79 &self,
80 tenant: &TenantId,
81 project: &ProjectId,
82 clauses: &SearchClauses,
83 ) -> impl Future<Output = Result<Vec<ReadModel>, OperationOutcomeError>> + Send;
84}