Commit 3e30dd7c authored by Emmanuel Raviart's avatar Emmanuel Raviart

Improve GraphQL of `AuteurLeg`.

parent 1ce10153
Pipeline #99967 passed with stage
in 2 minutes and 15 seconds
......@@ -218,14 +218,14 @@ impl Mandat {
}
}
// pub fn uid(&self) -> &str {
// match *self {
// Mandat::MandatAvecSuppleant(MandatAvecSuppleant { ref uid, .. })
// | Mandat::MandatMission(MandatMission { ref uid, .. })
// | Mandat::MandatParlementaire(MandatParlementaire { ref uid, .. })
// | Mandat::MandatSimple(MandatSimple { ref uid, .. }) => &uid,
// }
// }
pub fn uid(&self) -> &str {
match *self {
Mandat::MandatAvecSuppleant(MandatAvecSuppleant { ref uid, .. })
| Mandat::MandatMission(MandatMission { ref uid, .. })
| Mandat::MandatParlementaire(MandatParlementaire { ref uid, .. })
| Mandat::MandatSimple(MandatSimple { ref uid, .. }) => &uid,
}
}
}
// Using graphql_union because instance_resolvers of graphql_interface does not work with Juniper 0.9.2.
......
use acteurs::Acteur;
use chrono::{DateTime, FixedOffset};
use commun::{CodeEtLibelle, EmptyChoice, Indexation};
use contexts::Context;
use mandats::Mandat;
use organes::Organe;
use serde_utils::{map_to_vec, str_to_bool};
#[derive(Debug, Deserialize)]
......@@ -100,7 +103,7 @@ pub struct ActeurCosignataire {
acteur_ref: String,
}
#[derive(Debug, Deserialize, GraphQLObject)]
#[derive(Debug, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct ActeurLeg {
#[serde(rename = "acteurRef")]
......@@ -110,6 +113,48 @@ pub struct ActeurLeg {
qualite: String,
}
graphql_object!(ActeurLeg: Context |&self| {
field acteur(&executor) -> Option<&Acteur> {
let context = &executor.context();
context.get_acteur_at_uid(&self.acteur_ref)
}
field acteur_ref() -> &str {
&self.acteur_ref
}
field mandat(&executor) -> Option<&Mandat> {
match &self.mandat_ref {
None => None,
Some(ref mandat_ref) => {
let context = &executor.context();
match context.get_acteur_at_uid(&self.acteur_ref) {
None => None,
Some(ref acteur) => {
for mandat in &acteur.mandats.mandats {
if mandat_ref == mandat.uid() {
return Some(mandat)
}
}
None
},
}
},
}
}
field mandat_ref() -> Option<&str> {
match &self.mandat_ref {
None => None,
Some(ref mandat_ref) => Some(mandat_ref.as_str()),
}
}
field qualite() -> &str {
&self.qualite
}
});
#[derive(Debug, Deserialize, GraphQLObject)]
#[serde(deny_unknown_fields)]
pub struct AmendementsCommission {
......@@ -126,13 +171,36 @@ pub struct AmendementsSeance {
pub date_limite_depot: Option<EmptyChoice>,
}
#[derive(Debug, Deserialize, GraphQLObject)]
#[derive(Debug, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct AuteurLeg {
acteur: Option<ActeurLeg>,
organe: Option<OrganeLeg>,
}
graphql_object!(AuteurLeg: Context |&self| {
field acteur() -> &Option<ActeurLeg> {
&self.acteur
}
field organe(&executor) -> Option<&Organe> {
match &self.organe {
None => None,
Some(ref organe_leg) => {
let context = &executor.context();
context.get_organe_at_uid(&organe_leg.organe_ref)
},
}
}
field organe_ref() -> Option<&str> {
match &self.organe {
None => None,
Some(ref organe_leg) => Some(organe_leg.organe_ref.as_str()),
}
}
});
#[derive(Debug, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct AuteursLeg {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment