cyberstorm/src/domains/source.rs

68 lines
1.5 KiB
Rust

use serde::{Deserialize, Serialize};
use crate::domains::common::*;
#[derive(Debug, Serialize, Deserialize)]
pub struct Requirement {
pub name: String,
#[serde(default)]
pub intelligence: Vec<DomainId>,
#[serde(default)]
pub references: References,
#[serde(default)]
pub additional: Vec<(String, Value)>,
}
impl DomainModel for Requirement {
fn kind() -> DomainModelKind {
DomainModelKind::SourceRequirement
}
fn name(&self) -> &str {
self.name.as_str()
}
}
///////////////////////////////////////////////////////////////////////////////
#[derive(Debug, Serialize, Deserialize)]
pub struct Intelligence {
pub name: String,
pub provider: DomainId,
#[serde(default)]
pub references: References,
#[serde(default)]
pub additional: Vec<(String, Value)>,
}
impl DomainModel for Intelligence {
fn kind() -> DomainModelKind {
DomainModelKind::SourceIntelligence
}
fn name(&self) -> &str {
self.name.as_str()
}
}
///////////////////////////////////////////////////////////////////////////////
#[derive(Debug, Serialize, Deserialize)]
pub struct Provider {
pub name: String,
#[serde(default)]
pub references: References,
#[serde(default)]
pub additional: Vec<(String, Value)>,
}
impl DomainModel for Provider {
fn kind() -> DomainModelKind {
DomainModelKind::SourceProvider
}
fn name(&self) -> &str {
self.name.as_str()
}
}