From 0c318ebddb5ebc8f8c634ac91e90470ce0b9eac0 Mon Sep 17 00:00:00 2001 From: kjuulh Date: Tue, 6 Jan 2026 12:46:44 +0100 Subject: [PATCH] feat: enable changed events --- .../nocontrol/src/control_plane/backing_store.rs | 7 ++++++- crates/nocontrol/src/manifests.rs | 16 ++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/crates/nocontrol/src/control_plane/backing_store.rs b/crates/nocontrol/src/control_plane/backing_store.rs index 48dcdbe..5b016be 100644 --- a/crates/nocontrol/src/control_plane/backing_store.rs +++ b/crates/nocontrol/src/control_plane/backing_store.rs @@ -6,7 +6,8 @@ use tokio::sync::RwLock; use crate::{ manifests::{ - Manifest, ManifestLease, ManifestState, ManifestStatus, ManifestStatusState, WorkerId, + Manifest, ManifestChangeEvent, ManifestChangeEventType, ManifestLease, ManifestState, + ManifestStatus, ManifestStatusState, WorkerId, }, Specification, }; @@ -119,6 +120,10 @@ impl BackingStore { status: ManifestStatus { status: ManifestStatusState::Pending, events: Vec::default(), + changes: vec![ManifestChangeEvent { + created: now, + event: ManifestChangeEventType::Changed, + }], }, created: now, updated: now, diff --git a/crates/nocontrol/src/manifests.rs b/crates/nocontrol/src/manifests.rs index a7af398..ada0b60 100644 --- a/crates/nocontrol/src/manifests.rs +++ b/crates/nocontrol/src/manifests.rs @@ -42,6 +42,8 @@ where pub struct ManifestStatus { pub status: ManifestStatusState, pub events: Vec, + + pub changes: Vec, } #[derive(Clone, Debug, Serialize, Deserialize)] @@ -53,6 +55,20 @@ pub enum ManifestStatusState { Deleting, } +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct ManifestChangeEvent { + pub created: jiff::Timestamp, + pub event: ManifestChangeEventType, +} + +#[derive(Clone, Debug, Serialize, Deserialize)] +#[serde(rename_all = "SCREAMING_SNAKE_CASE")] +pub enum ManifestChangeEventType { + Created, + Changed, + Deleted, +} + #[derive(Clone, Debug, Serialize, Deserialize)] pub struct ManifestEvent { pub owner: WorkerId,