#![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 Observation {
pub method: ObservationMethod,
pub observer: String,
pub occurred_at: String,
pub output: serde_json::Value,
pub scope: ObservationScope,
pub version: String,
pub visibility: super::defs::Visibility,
}
impl crate::Record for Observation {
const NSID: &'static str = "dev.idiolect.observation";
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ObservationMethod {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub code_ref: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub parameters: Option<serde_json::Value>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ObservationScope {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub communities: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub encounter_kinds: Option<Vec<ObservationScopeEncounterKinds>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub lenses: Option<Vec<super::defs::LensRef>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub window: Option<ObservationScopeWindow>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub enum ObservationScopeEncounterKinds {
InvocationLog,
Curated,
RoundtripVerified,
Production,
Adversarial,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ObservationScopeWindow {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub from: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub until: Option<String>,
}