pub mod ffi;
pub mod schema;
pub use ffi::{PluginManifest, PluginVtable, SDK_ABI_VERSION};
pub use schema::*;
use anyhow::Result;
use async_trait::async_trait;
#[derive(Debug, Clone, Default, serde::Serialize, serde::Deserialize)]
pub struct SyncInput {
#[serde(default)]
pub source: Option<String>,
#[serde(default)]
pub base_url: Option<String>,
#[serde(default)]
pub options: serde_json::Map<String, serde_json::Value>,
}
#[async_trait]
pub trait SyncPlugin: Send + Sync {
fn name(&self) -> &str;
async fn introspect(&self) -> Result<Schema>;
}
pub mod prelude {
pub use super::ffi::{PluginManifest, PluginVtable, SDK_ABI_VERSION};
pub use super::schema::*;
pub use super::{SyncInput, SyncPlugin};
pub use crate::declare_plugin;
pub use anyhow::{Result, anyhow, bail};
pub use async_trait::async_trait;
}