#![allow(
missing_docs,
clippy::doc_markdown,
clippy::struct_excessive_bools,
clippy::derive_partial_eq_without_eq
)]
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Community {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub conventions: Option<Vec<CommunityConventions>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub conventions_text: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub core_lenses: Option<Vec<super::defs::LensRef>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub core_schemas: Option<Vec<super::defs::SchemaRef>>,
pub created_at: String,
pub description: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub endorsed_communities: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub members: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub membership_roll: Option<String>,
pub name: String,
}
impl crate::Record for Community {
const NSID: &'static str = "dev.idiolect.community";
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ConventionDeprecationPolicy {
pub notice_period_days: i64,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub replacement_required: Option<bool>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ConventionReviewCadence {
pub max_days: i64,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub scope: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ConventionVerificationReq {
pub kind: ConventionVerificationReqKind,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub property: Option<super::defs::LensProperty>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub enum ConventionVerificationReqKind {
RoundtripTest,
PropertyTest,
FormalProof,
ConformanceTest,
StaticCheck,
ConvergencePreserving,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(tag = "$type")]
pub enum CommunityConventions {
#[serde(rename = "dev.idiolect.community#conventionReviewCadence")]
ConventionReviewCadence(ConventionReviewCadence),
#[serde(rename = "dev.idiolect.community#conventionVerificationReq")]
ConventionVerificationReq(ConventionVerificationReq),
#[serde(rename = "dev.idiolect.community#conventionDeprecationPolicy")]
ConventionDeprecationPolicy(ConventionDeprecationPolicy),
}