#![allow(
missing_docs,
clippy::doc_markdown,
clippy::struct_excessive_bools,
clippy::derive_partial_eq_without_eq,
clippy::large_enum_variant
)]
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Recommendation {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub annotations: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub basis: Option<crate::generated::dev::idiolect::defs::Basis>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub caveats: Option<Vec<crate::generated::dev::idiolect::defs::Caveat>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub caveats_text: Option<String>,
pub conditions: Vec<RecommendationConditions>,
pub issuing_community: idiolect_records::AtUri,
pub lens_path: Vec<crate::generated::dev::idiolect::defs::LensRef>,
pub occurred_at: idiolect_records::Datetime,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub preconditions: Option<Vec<RecommendationPreconditions>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub required_verifications: Option<Vec<RecommendationRequiredVerifications>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub supersedes: Option<idiolect_records::AtUri>,
}
impl crate::Record for Recommendation {
const NSID: &'static str = "dev.idiolect.recommendation";
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ConditionActionSubsumedBy {
pub action: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub vocabulary: Option<crate::generated::dev::idiolect::defs::VocabRef>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ConditionAnd {}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ConditionDataHas {
pub property: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ConditionNot {}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ConditionOr {}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ConditionPurposeSubsumedBy {
pub purpose: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub vocabulary: Option<crate::generated::dev::idiolect::defs::VocabRef>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ConditionSourceIs {
pub schema: crate::generated::dev::idiolect::defs::SchemaRef,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ConditionTargetIs {
pub schema: crate::generated::dev::idiolect::defs::SchemaRef,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(tag = "$type")]
pub enum RecommendationConditions {
#[serde(rename = "dev.idiolect.recommendation#conditionSourceIs")]
ConditionSourceIs(ConditionSourceIs),
#[serde(rename = "dev.idiolect.recommendation#conditionTargetIs")]
ConditionTargetIs(ConditionTargetIs),
#[serde(rename = "dev.idiolect.recommendation#conditionActionSubsumedBy")]
ConditionActionSubsumedBy(ConditionActionSubsumedBy),
#[serde(rename = "dev.idiolect.recommendation#conditionPurposeSubsumedBy")]
ConditionPurposeSubsumedBy(ConditionPurposeSubsumedBy),
#[serde(rename = "dev.idiolect.recommendation#conditionDataHas")]
ConditionDataHas(ConditionDataHas),
#[serde(rename = "dev.idiolect.recommendation#conditionAnd")]
ConditionAnd(ConditionAnd),
#[serde(rename = "dev.idiolect.recommendation#conditionOr")]
ConditionOr(ConditionOr),
#[serde(rename = "dev.idiolect.recommendation#conditionNot")]
ConditionNot(ConditionNot),
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(tag = "$type")]
pub enum RecommendationPreconditions {
#[serde(rename = "dev.idiolect.recommendation#conditionSourceIs")]
ConditionSourceIs(ConditionSourceIs),
#[serde(rename = "dev.idiolect.recommendation#conditionTargetIs")]
ConditionTargetIs(ConditionTargetIs),
#[serde(rename = "dev.idiolect.recommendation#conditionActionSubsumedBy")]
ConditionActionSubsumedBy(ConditionActionSubsumedBy),
#[serde(rename = "dev.idiolect.recommendation#conditionPurposeSubsumedBy")]
ConditionPurposeSubsumedBy(ConditionPurposeSubsumedBy),
#[serde(rename = "dev.idiolect.recommendation#conditionDataHas")]
ConditionDataHas(ConditionDataHas),
#[serde(rename = "dev.idiolect.recommendation#conditionAnd")]
ConditionAnd(ConditionAnd),
#[serde(rename = "dev.idiolect.recommendation#conditionOr")]
ConditionOr(ConditionOr),
#[serde(rename = "dev.idiolect.recommendation#conditionNot")]
ConditionNot(ConditionNot),
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(tag = "$type")]
pub enum RecommendationRequiredVerifications {
#[serde(rename = "dev.idiolect.defs#lpRoundtrip")]
LpRoundtrip(crate::generated::dev::idiolect::defs::LpRoundtrip),
#[serde(rename = "dev.idiolect.defs#lpGenerator")]
LpGenerator(crate::generated::dev::idiolect::defs::LpGenerator),
#[serde(rename = "dev.idiolect.defs#lpTheorem")]
LpTheorem(crate::generated::dev::idiolect::defs::LpTheorem),
#[serde(rename = "dev.idiolect.defs#lpConformance")]
LpConformance(crate::generated::dev::idiolect::defs::LpConformance),
#[serde(rename = "dev.idiolect.defs#lpChecker")]
LpChecker(crate::generated::dev::idiolect::defs::LpChecker),
#[serde(rename = "dev.idiolect.defs#lpConvergence")]
LpConvergence(crate::generated::dev::idiolect::defs::LpConvergence),
#[serde(rename = "dev.idiolect.defs#lpCoercionLaw")]
LpCoercionLaw(crate::generated::dev::idiolect::defs::LpCoercionLaw),
}