- Feature-gate mongodb in compliance-core (optional, default on) so wasm builds don't pull in tokio/mio via mongodb - Use bson v2 directly for ObjectId types (wasm-compatible) - Restructure dashboard infrastructure/mod.rs: server function modules always compiled (for RPC stubs), server-only modules cfg-gated - Remove reqwest from dashboard web feature (not needed, data flows through server functions) - Add .gitignore Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
44 lines
1.1 KiB
Rust
44 lines
1.1 KiB
Rust
use chrono::{DateTime, Utc};
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
pub struct VulnRef {
|
|
pub id: String,
|
|
pub source: String,
|
|
pub severity: Option<String>,
|
|
pub url: Option<String>,
|
|
}
|
|
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
pub struct SbomEntry {
|
|
#[serde(rename = "_id", skip_serializing_if = "Option::is_none")]
|
|
pub id: Option<bson::oid::ObjectId>,
|
|
pub repo_id: String,
|
|
pub name: String,
|
|
pub version: String,
|
|
pub package_manager: String,
|
|
pub license: Option<String>,
|
|
pub purl: Option<String>,
|
|
pub known_vulnerabilities: Vec<VulnRef>,
|
|
pub created_at: DateTime<Utc>,
|
|
pub updated_at: DateTime<Utc>,
|
|
}
|
|
|
|
impl SbomEntry {
|
|
pub fn new(repo_id: String, name: String, version: String, package_manager: String) -> Self {
|
|
let now = Utc::now();
|
|
Self {
|
|
id: None,
|
|
repo_id,
|
|
name,
|
|
version,
|
|
package_manager,
|
|
license: None,
|
|
purl: None,
|
|
known_vulnerabilities: Vec::new(),
|
|
created_at: now,
|
|
updated_at: now,
|
|
}
|
|
}
|
|
}
|