mod aggregate;
mod content_hash;
mod field;
mod filter;
mod flusso_type;
mod index_mapping;
mod join;
mod projection;
mod schema;
mod secret;
mod sink;
mod soft_delete;
mod transform;
pub use aggregate::*;
pub use content_hash::*;
pub use field::*;
pub use filter::*;
pub use flusso_type::*;
pub use index_mapping::*;
pub use join::*;
pub use schema::*;
pub use secret::*;
pub use sink::*;
pub use soft_delete::*;
pub use transform::*;
use serde::{Deserialize, Serialize};
use crate::common;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum FailurePolicy {
#[default]
Stop,
Skip,
}
#[derive(Debug, Clone, Hash, Serialize, Deserialize)]
pub struct IndexSchema {
pub version: u8,
pub table: common::TableName,
pub db_schema: DatabaseSchema,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub primary_key: Option<common::ColumnName>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub doc_id: Option<common::ColumnName>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub soft_delete: Option<SoftDelete>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub filters: Option<Vec<Filter>>,
pub fields: Vec<Field>,
}