haste_repository/types/
mod.rs1use haste_fhir_client::request::FHIRRequest;
2use serde::Serialize;
3use std::fmt::{Debug, Display};
4
5pub mod authorization_code;
6pub mod membership;
7pub mod project;
8pub mod scope;
9pub mod tenant;
10pub mod user;
11
12#[derive(Clone, Debug, PartialEq, PartialOrd, sqlx::Type, serde::Deserialize, Serialize)]
13#[sqlx(type_name = "fhir_version", rename_all = "lowercase")] #[serde(rename_all = "lowercase")]
15pub enum SupportedFHIRVersions {
16 R4,
17}
18
19impl Display for SupportedFHIRVersions {
20 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
21 match self {
22 SupportedFHIRVersions::R4 => write!(f, "r4"),
23 }
24 }
25}
26
27#[derive(sqlx::Type, Debug, Clone)]
28#[sqlx(type_name = "fhir_method", rename_all = "lowercase")]
29pub enum FHIRMethod {
30 Create,
31 Read,
32 Update,
33 Delete,
34}
35
36impl TryFrom<&FHIRRequest> for FHIRMethod {
37 type Error = String;
38
39 fn try_from(request: &FHIRRequest) -> Result<Self, Self::Error> {
40 match request {
41 FHIRRequest::Create(_) => Ok(FHIRMethod::Create),
42 FHIRRequest::Read(_) => Ok(FHIRMethod::Read),
43 FHIRRequest::Update(_) => Ok(FHIRMethod::Update),
44 FHIRRequest::Delete(_) => Ok(FHIRMethod::Delete),
45 _ => Err("Unsupported FHIR request".to_string()),
46 }
47 }
48}