parse_sap_odata/edmx/data_services/
mod.rs

1pub mod schema;
2
3use schema::Schema;
4use serde::{Deserialize, Serialize};
5
6#[derive(Debug, Serialize, Deserialize)]
7pub enum DataServiceVersion {
8    #[serde(rename = "2.0")]
9    V2_0,
10}
11
12// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
13/// Represents an `<edmx:DataServices>` tag
14///
15/// # Child Nodes
16/// `1:1 Schema`
17#[derive(Debug, Serialize, Deserialize)]
18#[serde(rename_all = "PascalCase")]
19pub struct DataServices {
20    #[serde(rename = "@DataServiceVersion")]
21    pub data_service_version: DataServiceVersion,
22    #[serde(rename = "Schema", default)]
23    pub schemas: Vec<Schema>,
24}
25
26impl DataServices {
27    pub fn fetch_schema(&self, namespace: &str) -> Option<&Schema> {
28        self.schemas.iter().find(|schema| schema.namespace == namespace)
29    }
30
31    pub fn default_schema(&self) -> Option<&Schema> {
32        self.fetch_schema("Default")
33    }
34}