jellyflow_runtime/schema/migration/migrator.rs
1use serde_json::Value;
2
3/// A per-kind node payload migrator.
4pub trait NodeKindMigrator: Send + Sync {
5 /// Migrates a node payload from `from_version` to `to_version`.
6 fn migrate(
7 &self,
8 from_version: u32,
9 to_version: u32,
10 data: &Value,
11 ) -> Result<Value, NodeKindMigrateError>;
12}
13
14#[derive(Debug, thiserror::Error)]
15pub enum NodeKindMigrateError {
16 #[error("{0}")]
17 Message(String),
18}
19
20impl NodeKindMigrateError {
21 pub fn message(msg: impl Into<String>) -> Self {
22 Self::Message(msg.into())
23 }
24}