fn main() {
#[cfg(feature = "json-schema")]
{
use bo4e_core::com::*;
use bo4e_core::enums::*;
use schemars::schema_for;
use serde_json::{json, Map, Value};
let mut enum_schemas = Map::new();
enum_schemas.insert("BoType".into(), json!(schema_for!(BoType)));
enum_schemas.insert("ComType".into(), json!(schema_for!(ComType)));
enum_schemas.insert("Division".into(), json!(schema_for!(Division)));
enum_schemas.insert(
"EnergyDirection".into(),
json!(schema_for!(EnergyDirection)),
);
enum_schemas.insert("GenerationType".into(), json!(schema_for!(GenerationType)));
enum_schemas.insert("Medium".into(), json!(schema_for!(Medium)));
enum_schemas.insert(
"MeasuredQuantity".into(),
json!(schema_for!(MeasuredQuantity)),
);
enum_schemas.insert(
"MeasuredValueStatus".into(),
json!(schema_for!(MeasuredValueStatus)),
);
enum_schemas.insert(
"MeasurementPriceType".into(),
json!(schema_for!(MeasurementPriceType)),
);
enum_schemas.insert(
"MeasurementType".into(),
json!(schema_for!(MeasurementType)),
);
enum_schemas.insert("MeterCategory".into(), json!(schema_for!(MeterCategory)));
enum_schemas.insert("MeterSize".into(), json!(schema_for!(MeterSize)));
enum_schemas.insert("MeterType".into(), json!(schema_for!(MeterType)));
enum_schemas.insert("ReadingType".into(), json!(schema_for!(ReadingType)));
enum_schemas.insert("NetworkLevel".into(), json!(schema_for!(NetworkLevel)));
enum_schemas.insert("VoltageLevel".into(), json!(schema_for!(VoltageLevel)));
enum_schemas.insert("LocationType".into(), json!(schema_for!(LocationType)));
enum_schemas.insert("UsageType".into(), json!(schema_for!(UsageType)));
enum_schemas.insert("DeviceCategory".into(), json!(schema_for!(DeviceCategory)));
enum_schemas.insert("DeviceType".into(), json!(schema_for!(DeviceType)));
enum_schemas.insert("PhaseType".into(), json!(schema_for!(PhaseType)));
enum_schemas.insert("RegisterType".into(), json!(schema_for!(RegisterType)));
enum_schemas.insert("TariffType".into(), json!(schema_for!(TariffType)));
enum_schemas.insert("Currency".into(), json!(schema_for!(Currency)));
enum_schemas.insert("TimeUnit".into(), json!(schema_for!(TimeUnit)));
enum_schemas.insert("Unit".into(), json!(schema_for!(Unit)));
enum_schemas.insert("UnitPrefix".into(), json!(schema_for!(UnitPrefix)));
enum_schemas.insert(
"ArithmeticOperation".into(),
json!(schema_for!(ArithmeticOperation)),
);
enum_schemas.insert(
"CalculationFormula".into(),
json!(schema_for!(CalculationFormula)),
);
enum_schemas.insert("RoundingMode".into(), json!(schema_for!(RoundingMode)));
enum_schemas.insert(
"ControllableResourceType".into(),
json!(schema_for!(ControllableResourceType)),
);
enum_schemas.insert(
"TechnicalResourceUsage".into(),
json!(schema_for!(TechnicalResourceUsage)),
);
enum_schemas.insert(
"BusinessPartnerRole".into(),
json!(schema_for!(BusinessPartnerRole)),
);
enum_schemas.insert("MarketRole".into(), json!(schema_for!(MarketRole)));
enum_schemas.insert(
"OrganizationType".into(),
json!(schema_for!(OrganizationType)),
);
enum_schemas.insert("ContactType".into(), json!(schema_for!(ContactType)));
enum_schemas.insert("Salutation".into(), json!(schema_for!(Salutation)));
enum_schemas.insert("Title".into(), json!(schema_for!(Title)));
enum_schemas.insert("ContractForm".into(), json!(schema_for!(ContractForm)));
enum_schemas.insert("ContractStatus".into(), json!(schema_for!(ContractStatus)));
enum_schemas.insert("ContractType".into(), json!(schema_for!(ContractType)));
enum_schemas.insert("CustomerGroup".into(), json!(schema_for!(CustomerGroup)));
enum_schemas.insert("CustomerType".into(), json!(schema_for!(CustomerType)));
enum_schemas.insert("InvoiceStatus".into(), json!(schema_for!(InvoiceStatus)));
enum_schemas.insert("InvoiceType".into(), json!(schema_for!(InvoiceType)));
enum_schemas.insert("PaymentMethod".into(), json!(schema_for!(PaymentMethod)));
enum_schemas.insert("OfferStatus".into(), json!(schema_for!(OfferStatus)));
enum_schemas.insert("TenderStatus".into(), json!(schema_for!(TenderStatus)));
enum_schemas.insert("TenderType".into(), json!(schema_for!(TenderType)));
enum_schemas.insert("AreaType".into(), json!(schema_for!(AreaType)));
enum_schemas.insert("ServiceType".into(), json!(schema_for!(ServiceType)));
enum_schemas.insert("Country".into(), json!(schema_for!(Country)));
enum_schemas.insert(
"CalculationMethod".into(),
json!(schema_for!(CalculationMethod)),
);
enum_schemas.insert(
"PriceGuaranteeType".into(),
json!(schema_for!(PriceGuaranteeType)),
);
enum_schemas.insert("PriceModel".into(), json!(schema_for!(PriceModel)));
enum_schemas.insert("PriceStatus".into(), json!(schema_for!(PriceStatus)));
enum_schemas.insert("PriceType".into(), json!(schema_for!(PriceType)));
enum_schemas.insert(
"SurchargeTarget".into(),
json!(schema_for!(SurchargeTarget)),
);
enum_schemas.insert("SurchargeType".into(), json!(schema_for!(SurchargeType)));
enum_schemas.insert("TaxType".into(), json!(schema_for!(TaxType)));
enum_schemas.insert("CostClass".into(), json!(schema_for!(CostClass)));
enum_schemas.insert(
"TariffCalculationMethod".into(),
json!(schema_for!(TariffCalculationMethod)),
);
enum_schemas.insert("TariffFeature".into(), json!(schema_for!(TariffFeature)));
enum_schemas.insert(
"TariffRegionCriterion".into(),
json!(schema_for!(TariffRegionCriterion)),
);
enum_schemas.insert("TariffTime".into(), json!(schema_for!(TariffTime)));
enum_schemas.insert(
"RegionCriterionType".into(),
json!(schema_for!(RegionCriterionType)),
);
enum_schemas.insert("RegionType".into(), json!(schema_for!(RegionType)));
enum_schemas.insert(
"ConcessionFeeCustomerGroup".into(),
json!(schema_for!(ConcessionFeeCustomerGroup)),
);
enum_schemas.insert(
"ConcessionFeeType".into(),
json!(schema_for!(ConcessionFeeType)),
);
enum_schemas.insert("EcoCertificate".into(), json!(schema_for!(EcoCertificate)));
enum_schemas.insert("EcoLabel".into(), json!(schema_for!(EcoLabel)));
enum_schemas.insert("SubjectArea".into(), json!(schema_for!(SubjectArea)));
enum_schemas.insert("ValidityType".into(), json!(schema_for!(ValidityType)));
let mut com_schemas = Map::new();
com_schemas.insert("Adresse".into(), json!(schema_for!(Address)));
com_schemas.insert(
"Katasteradresse".into(),
json!(schema_for!(CadastralAddress)),
);
com_schemas.insert("Geokoordinaten".into(), json!(schema_for!(GeoCoordinates)));
com_schemas.insert("Kontaktweg".into(), json!(schema_for!(ContactMethod)));
com_schemas.insert("Unterschrift".into(), json!(schema_for!(Signature)));
com_schemas.insert(
"ExterneReferenz".into(),
json!(schema_for!(ExternalReference)),
);
com_schemas.insert("Preis".into(), json!(schema_for!(Price)));
com_schemas.insert("Preisstufe".into(), json!(schema_for!(PriceTier)));
com_schemas.insert("Preisposition".into(), json!(schema_for!(PricePosition)));
com_schemas.insert("Preisgarantie".into(), json!(schema_for!(PriceGuarantee)));
com_schemas.insert(
"RegionalePreisstufe".into(),
json!(schema_for!(RegionalPriceTier)),
);
com_schemas.insert("Margenpreis".into(), json!(schema_for!(MarginPrice)));
com_schemas.insert("Aufschlag".into(), json!(schema_for!(Surcharge)));
com_schemas.insert(
"PositionsAufschlag".into(),
json!(schema_for!(PositionSurcharge)),
);
com_schemas.insert(
"RegionalerAufschlag".into(),
json!(schema_for!(RegionalSurcharge)),
);
com_schemas.insert(
"AufschlagProOrt".into(),
json!(schema_for!(SurchargePerLocation)),
);
com_schemas.insert("Abgabe".into(), json!(schema_for!(Levy)));
com_schemas.insert("Netzentgelt".into(), json!(schema_for!(NetworkCharge)));
com_schemas.insert("Tarifpreis".into(), json!(schema_for!(TariffPrice)));
com_schemas.insert(
"Tarifpreisposition".into(),
json!(schema_for!(TariffPricePosition)),
);
com_schemas.insert(
"Tarifberechnungsparameter".into(),
json!(schema_for!(TariffCalculationParameter)),
);
com_schemas.insert(
"Tarifeinschraenkung".into(),
json!(schema_for!(TariffRestriction)),
);
com_schemas.insert("Saisontarif".into(), json!(schema_for!(SeasonalTariff)));
com_schemas.insert(
"Zaehlzeitregister".into(),
json!(schema_for!(TimeOfUseRegister)),
);
com_schemas.insert("Energiemix".into(), json!(schema_for!(EnergyMix)));
com_schemas.insert("Energieherkunft".into(), json!(schema_for!(EnergySource)));
com_schemas.insert("Kostenblock".into(), json!(schema_for!(CostBlock)));
com_schemas.insert("Kostenposition".into(), json!(schema_for!(CostPosition)));
com_schemas.insert(
"Fremdkostenblock".into(),
json!(schema_for!(ExternalCostBlock)),
);
com_schemas.insert(
"Fremdkostenposition".into(),
json!(schema_for!(ExternalCostPosition)),
);
com_schemas.insert("Steuerbetrag".into(), json!(schema_for!(TaxAmount)));
com_schemas.insert(
"Konzessionsabgabe".into(),
json!(schema_for!(ConcessionFee)),
);
com_schemas.insert(
"Rechnungsposition".into(),
json!(schema_for!(InvoicePosition)),
);
com_schemas.insert(
"Abrechnungsperiodendaten".into(),
json!(schema_for!(BillingPeriodData)),
);
com_schemas.insert("Bonus".into(), json!(schema_for!(Bonus)));
com_schemas.insert("Rabatt".into(), json!(schema_for!(Discount)));
com_schemas.insert("Menge".into(), json!(schema_for!(Quantity)));
com_schemas.insert("Betrag".into(), json!(schema_for!(Amount)));
com_schemas.insert("Messwert".into(), json!(schema_for!(MeasuredValue)));
com_schemas.insert("Zaehlwerksstand".into(), json!(schema_for!(MeterReading)));
com_schemas.insert("Zaehlwerk".into(), json!(schema_for!(MeterRegister)));
com_schemas.insert(
"Messstellenstatus".into(),
json!(schema_for!(MeteringPointStatus)),
);
com_schemas.insert("Verbrauch".into(), json!(schema_for!(Consumption)));
com_schemas.insert(
"VerbrauchteQuantitaet".into(),
json!(schema_for!(ConsumedQuantity)),
);
com_schemas.insert("Aggregiertwert".into(), json!(schema_for!(AggregatedValue)));
com_schemas.insert("Ersatzwert".into(), json!(schema_for!(SubstitutionValue)));
com_schemas.insert("Zeitraum".into(), json!(schema_for!(TimePeriod)));
com_schemas.insert("Datumsbereich".into(), json!(schema_for!(DateRange)));
com_schemas.insert("Intervall".into(), json!(schema_for!(Interval)));
com_schemas.insert("Lastkurvendaten".into(), json!(schema_for!(LoadCurveData)));
com_schemas.insert(
"Lastprofilwert".into(),
json!(schema_for!(LoadProfileValue)),
);
com_schemas.insert("Profildaten".into(), json!(schema_for!(ProfileData)));
com_schemas.insert("Zeitreihenwert".into(), json!(schema_for!(TimeSeriesValue)));
com_schemas.insert(
"Qualitaetsindikator".into(),
json!(schema_for!(QualityIndicator)),
);
com_schemas.insert(
"Vertragskonditionen".into(),
json!(schema_for!(ContractConditions)),
);
com_schemas.insert("Vertragsteil".into(), json!(schema_for!(ContractPart)));
com_schemas.insert("Angebotsteil".into(), json!(schema_for!(OfferPart)));
com_schemas.insert("Angebotsposition".into(), json!(schema_for!(OfferPosition)));
com_schemas.insert("Angebotsvariante".into(), json!(schema_for!(OfferVariant)));
com_schemas.insert(
"Regionskriterium".into(),
json!(schema_for!(RegionCriterion)),
);
com_schemas.insert("Zustaendigkeit".into(), json!(schema_for!(Responsibility)));
com_schemas.insert(
"Dienstleistungspreis".into(),
json!(schema_for!(ServicePrice)),
);
com_schemas.insert("Hardware".into(), json!(schema_for!(Hardware)));
com_schemas.insert(
"Validierungsergebnis".into(),
json!(schema_for!(ValidationResult)),
);
let schemas = json!({
"bo": {},
"com": Value::Object(com_schemas),
"enum": Value::Object(enum_schemas)
});
println!("{}", serde_json::to_string_pretty(&schemas).unwrap());
}
#[cfg(not(feature = "json-schema"))]
{
eprintln!("Error: This binary requires the 'json-schema' feature.");
eprintln!("Run with: cargo run --bin generate_schema --features json-schema");
std::process::exit(1);
}
}