Skip to main content

haste_repository/
lib.rs

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