Skip to main content

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}