use serde::Deserialize;
#[derive(Debug, Clone, Deserialize)]
pub struct AugmentSpec {
pub table: String,
pub source: SourceSpec,
#[serde(default)]
pub fetch: FetchSpec,
#[serde(default)]
pub merge: Vec<String>,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(tag = "kind", rename_all = "snake_case")]
pub enum SourceSpec {
Id,
Column {
from: String,
#[serde(default)]
to: Option<String>,
},
Script { code: String },
}
#[derive(Debug, Clone, Default, Deserialize)]
#[serde(tag = "kind", rename_all = "snake_case")]
pub enum FetchSpec {
#[default]
PerRow,
Batched {
#[serde(default)]
op: SetOp,
},
Script { code: String },
}
#[derive(Debug, Clone, Copy, Default, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum SetOp {
#[default]
Contains,
}