Skip to main content

haste_repository/
lib.rs

1use crate::{
2    admin::{Login, Migrate, ProjectAuthAdmin, SystemAdmin, TenantAuthAdmin},
3    fhir::FHIRRepository,
4    types::{
5        authorization_code::{
6            AuthorizationCode, AuthorizationCodeSearchClaims, CreateAuthorizationCode,
7        },
8        membership::{CreateMembership, Membership, MembershipSearchClaims},
9        project::{CreateProject, Project, ProjectSearchClaims},
10        scope::{CreateScope, Scope, ScopeKey, ScopeSearchClaims, UpdateScope},
11        tenant::{CreateTenant, Tenant, TenantSearchClaims},
12        user::{CreateUser, UpdateUser, User, UserSearchClauses},
13    },
14};
15
16pub mod admin;
17pub mod fhir;
18pub mod pg;
19pub mod types;
20pub mod utilities;
21
22/// Repository trait which encompasses all repository operations.
23pub trait Repository:
24    FHIRRepository
25    + SystemAdmin<User, UserSearchClauses>
26    + TenantAuthAdmin<
27        CreateAuthorizationCode,
28        AuthorizationCode,
29        AuthorizationCodeSearchClaims,
30        AuthorizationCode,
31        String,
32    > + TenantAuthAdmin<CreateTenant, Tenant, TenantSearchClaims, Tenant, String>
33    + TenantAuthAdmin<CreateUser, User, UserSearchClauses, UpdateUser, String>
34    + TenantAuthAdmin<CreateProject, Project, ProjectSearchClaims, Project, String>
35    + ProjectAuthAdmin<
36        CreateAuthorizationCode,
37        AuthorizationCode,
38        AuthorizationCodeSearchClaims,
39        AuthorizationCode,
40        String,
41    > + ProjectAuthAdmin<CreateMembership, Membership, MembershipSearchClaims, Membership, String>
42    + ProjectAuthAdmin<CreateScope, Scope, ScopeSearchClaims, UpdateScope, ScopeKey>
43    + Login
44    + Migrate
45{
46}