Skip to main content

provenant/license_detection/embedded/
schema.rs

1// SPDX-FileCopyrightText: Provenant contributors
2// SPDX-License-Identifier: Apache-2.0
3
4use serde::{Deserialize, Serialize};
5
6use crate::license_detection::models::{LoadedLicense, LoadedRule};
7use crate::models::LicenseIndexProvenance;
8
9pub const SCHEMA_VERSION: u32 = 6;
10
11#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
12pub struct EmbeddedArtifactMetadata {
13    pub spdx_license_list_version: String,
14    pub license_index_provenance: LicenseIndexProvenance,
15}
16
17#[derive(Debug, Clone, Serialize, Deserialize)]
18pub struct EmbeddedLoaderSnapshot {
19    // WARNING: `schema_version` and `metadata` MUST stay the first two fields,
20    // in this order. The warm-startup fast path in
21    // `embedded::index::load_embedded_artifact_metadata_from_bytes` postcard-
22    // decodes only this `{schema_version, metadata}` prefix (via
23    // `EmbeddedArtifactMetadataPrefix`) without reading `rules`/`licenses`.
24    // Inserting or reordering a field before/between these two silently breaks
25    // that prefix decode.
26    pub schema_version: u32,
27    pub metadata: EmbeddedArtifactMetadata,
28    pub rules: Vec<LoadedRule>,
29    pub licenses: Vec<LoadedLicense>,
30}