webhook through event system, extract data-generators adapter

webhook route now emits WebhookDataReceived event instead of directly
mutating DataProjection and broadcasting. event_handler applies data
and pushes incremental DataUpdate.

clock/static_text generators extracted to data-generators crate behind
DataSourcePort. chrono removed from bootstrap. polling adapters grouped
into Adapters struct.
This commit is contained in:
2026-06-19 12:33:42 +02:00
parent 437056cfc4
commit 455d5da901
9 changed files with 216 additions and 116 deletions

View File

@@ -1,17 +1,43 @@
use crate::entities::{DataSourceId, LayoutPresetId, WidgetId};
use crate::value_objects::{Layout, ThemeConfig};
use crate::value_objects::{Layout, ThemeConfig, Value};
#[derive(Debug, Clone)]
pub enum DomainEvent {
WidgetCreated { id: WidgetId },
WidgetUpdated { id: WidgetId },
WidgetDeleted { id: WidgetId },
DataSourceAdded { id: DataSourceId },
DataSourceUpdated { id: DataSourceId },
DataSourceRemoved { id: DataSourceId },
LayoutChanged { layout: Layout },
ThemeChanged { theme: ThemeConfig },
LayoutPresetSaved { id: LayoutPresetId },
LayoutPresetLoaded { id: LayoutPresetId },
LayoutPresetDeleted { id: LayoutPresetId },
WidgetCreated {
id: WidgetId,
},
WidgetUpdated {
id: WidgetId,
},
WidgetDeleted {
id: WidgetId,
},
DataSourceAdded {
id: DataSourceId,
},
DataSourceUpdated {
id: DataSourceId,
},
DataSourceRemoved {
id: DataSourceId,
},
LayoutChanged {
layout: Layout,
},
ThemeChanged {
theme: ThemeConfig,
},
LayoutPresetSaved {
id: LayoutPresetId,
},
LayoutPresetLoaded {
id: LayoutPresetId,
},
LayoutPresetDeleted {
id: LayoutPresetId,
},
WebhookDataReceived {
source_id: DataSourceId,
data: Value,
},
}