Can get possible couple states through API

This commit is contained in:
Pierre HUBERT 2023-08-07 17:01:56 +02:00
parent 29c503a6b0
commit ff8e3cce9d
3 changed files with 37 additions and 2 deletions

View File

@ -70,8 +70,8 @@ CREATE TABLE members (
CREATE TABLE couples ( CREATE TABLE couples (
id SERIAL PRIMARY KEY, id SERIAL PRIMARY KEY,
family_id integer NOT NULL REFERENCES families, family_id integer NOT NULL REFERENCES families,
wife integer NULL REFERENCES members, wife integer NULL REFERENCES members ON DELETE SET NULL,
husband integer NULL REFERENCES members, husband integer NULL REFERENCES members ON DELETE SET NULL,
state varchar(1) NULL, state varchar(1) NULL,
photo_id INTEGER NULL REFERENCES photos ON DELETE SET NULL, photo_id INTEGER NULL REFERENCES photos ON DELETE SET NULL,
time_create BIGINT NOT NULL, time_create BIGINT NOT NULL,

View File

@ -1,5 +1,6 @@
use crate::app_config::{AppConfig, OIDCProvider}; use crate::app_config::{AppConfig, OIDCProvider};
use crate::constants::StaticConstraints; use crate::constants::StaticConstraints;
use crate::models::{CoupleState, CoupleStateDesc};
use crate::utils::countries_utils; use crate::utils::countries_utils;
use crate::utils::countries_utils::CountryCode; use crate::utils::countries_utils::CountryCode;
use actix_web::{HttpResponse, Responder}; use actix_web::{HttpResponse, Responder};
@ -15,6 +16,7 @@ struct ServerConfig<'a> {
mail: &'static str, mail: &'static str,
oidc_providers: Vec<OIDCProvider<'a>>, oidc_providers: Vec<OIDCProvider<'a>>,
countries: Vec<CountryCode>, countries: Vec<CountryCode>,
couples_states: Vec<CoupleStateDesc>,
} }
impl Default for ServerConfig<'_> { impl Default for ServerConfig<'_> {
@ -24,6 +26,7 @@ impl Default for ServerConfig<'_> {
constraints: StaticConstraints::default(), constraints: StaticConstraints::default(),
oidc_providers: AppConfig::get().openid_providers(), oidc_providers: AppConfig::get().openid_providers(),
countries: countries_utils::get_list(), countries: countries_utils::get_list(),
couples_states: CoupleState::states_list(),
} }
} }
} }

View File

@ -314,6 +314,13 @@ pub enum CoupleState {
Divorced, Divorced,
} }
#[derive(Debug, Clone, serde::Serialize)]
pub struct CoupleStateDesc {
code: &'static str,
fr: &'static str,
en: &'static str,
}
impl CoupleState { impl CoupleState {
pub fn as_str(&self) -> &str { pub fn as_str(&self) -> &str {
match self { match self {
@ -327,6 +334,31 @@ impl CoupleState {
pub fn parse_str(s: &str) -> Option<Self> { pub fn parse_str(s: &str) -> Option<Self> {
serde_json::from_str(s).ok() serde_json::from_str(s).ok()
} }
pub fn states_list() -> Vec<CoupleStateDesc> {
vec![
CoupleStateDesc {
code: "N",
fr: "Aucun",
en: "None",
},
CoupleStateDesc {
code: "E",
fr: "Fiancés",
en: "Engaged",
},
CoupleStateDesc {
code: "M",
fr: "Mariés",
en: "Married",
},
CoupleStateDesc {
code: "D",
fr: "Divorcés",
en: "Divorced",
},
]
}
} }
#[derive(Queryable, Debug, serde::Serialize)] #[derive(Queryable, Debug, serde::Serialize)]