context_core/cache/
versioning.rs1use std::collections::BTreeMap;
2
3use chrono::{DateTime, Utc};
4
5use crate::types::identifiers::{DocumentId, DocumentVersion};
6
7#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
12pub struct CacheBuildConfig {
13 pub version: String,
14 pub hash_algorithm: String,
15}
16
17impl CacheBuildConfig {
18 pub fn v0() -> Self {
19 Self {
20 version: "1".into(),
21 hash_algorithm: "sha256".into(),
22 }
23 }
24}
25
26#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
27pub struct ManifestDocumentEntry {
28 pub id: DocumentId,
29 pub version: DocumentVersion,
30 pub file: String,
31}
32
33#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
34pub struct CacheManifest {
35 pub cache_version: String,
36 pub build_config: CacheBuildConfig,
37 pub created_at: DateTime<Utc>, pub document_count: usize,
39 pub documents: Vec<ManifestDocumentEntry>,
40}
41
42#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
43#[serde(transparent)]
44pub struct CacheIndex {
45 entries: BTreeMap<DocumentId, String>,
46}
47
48impl CacheIndex {
49 pub fn new(entries: BTreeMap<DocumentId, String>) -> Self {
50 Self { entries }
51 }
52}