gv100ad/model/
datensatz.rs

1use chrono::NaiveDate;
2
3use super::{
4    gemeinde::GemeindeDaten,
5    gemeindeverband::GemeindeverbandDaten,
6    kreis::KreisDaten,
7    land::LandDaten,
8    regierungsbezirk::RegierungsbezirkDaten,
9    region::RegionDaten,
10};
11
12/// A GV100AD Daten (Datensatz).
13#[derive(Clone, Debug)]
14pub enum Datensatz {
15    Land(LandDaten),
16    Regierungsbezirk(RegierungsbezirkDaten),
17    Region(RegionDaten),
18    Kreis(KreisDaten),
19    Gemeindeverband(GemeindeverbandDaten),
20    Gemeinde(GemeindeDaten),
21}
22
23impl Datensatz {
24    /// Returns the Gebietsstand (i.e. timestamp) of the Daten.
25    pub fn gebietsstand(&self) -> &NaiveDate {
26        match self {
27            Self::Land(land) => &land.gebietsstand,
28            Self::Regierungsbezirk(regierungsbezirk) => &regierungsbezirk.gebietsstand,
29            Self::Region(_region) => todo!(),
30            Self::Kreis(kreis) => &kreis.gebietsstand,
31            Self::Gemeindeverband(gemeindeverband) => &gemeindeverband.gebietsstand,
32            Self::Gemeinde(gemeinde) => &gemeinde.gebietsstand,
33        }
34    }
35
36    /// Returns the name of the unit.
37    pub fn name(&self) -> &str {
38        match self {
39            Self::Land(land) => &land.name,
40            Self::Regierungsbezirk(regierungsbezirk) => &regierungsbezirk.name,
41            Self::Region(_region) => todo!(),
42            Self::Kreis(kreis) => &kreis.name,
43            Self::Gemeindeverband(gemeindeverband) => &gemeindeverband.name,
44            Self::Gemeinde(gemeinde) => &gemeinde.name,
45        }
46    }
47}