pub struct Capabilities {
pub schema_introspection: bool,
pub stable_paging: bool,
pub nested_source_paths: bool,
pub writable: bool,
pub transactional_batch: bool,
pub resumable_cursor: bool,
}Expand description
Capabilities : What a migration connector declares it can do. The engine consults this before it starts, so an unsupported operation is refused up front instead of failing part-way through a run. Every field defaults to false for a connector that has not declared it – an absent capability always reads as "no", never as an optimistic "yes". There is deliberately no per-field "unknown" state: unlike a write-permission probe (which can genuinely fail at runtime, and where the engine branches on the difference), a capability is a static statement a connector makes about itself, and "not declared" and "cannot" produce identical behaviour. Per connection, not per connector type – two instances of the same connector may answer differently (a DuckDB store over Parquet has a schema, one over a headerless CSV does not).
Fields§
§schema_introspection: boolThe connector can enumerate a dataset’s columns authoritatively. false means it has no schema authority at all (a headerless CSV, a schema-less collection) – not that the dataset is missing; the mapping is then reported as unvalidated (a warning) rather than as every field being absent.
stable_paging: boolThe connector can page a dataset by a unique, total order, so batches are a stable partition with no skipped or duplicated rows. false makes it unusable as a source and blocks the run. Whether one particular table has such a key (e.g. a primary key) is a separate, per-table runtime error.
nested_source_paths: boolThe connector can resolve a dotted ColumnMapping.source_column (profile.address.city), not just a top-level name. A relational connector declares false, and any nested mapping entry is then an Error-severity issue naming the offending path.
writable: boolThe connector can be a migration target at all. false is what "this target is read-only" is read from – distinct from the per-table, per-connection question of whether the current role holds INSERT, which is probed separately and reported through MappingReport.
transactional_batch: boolA batch is applied atomically – all rows or none. false does not block a run, but is warned about: a failure can leave a partially applied batch to reconcile by hand.
resumable_cursor: boolThe connector’s page cursor is durable across a process restart. This is only the connector half of checkpoint/resume; the engine does not persist run state yet, so no run is resumable today regardless of this value. The dry-run report says which half is missing.
Implementations§
Source§impl Capabilities
impl Capabilities
Sourcepub fn new(
schema_introspection: bool,
stable_paging: bool,
nested_source_paths: bool,
writable: bool,
transactional_batch: bool,
resumable_cursor: bool,
) -> Capabilities
pub fn new( schema_introspection: bool, stable_paging: bool, nested_source_paths: bool, writable: bool, transactional_batch: bool, resumable_cursor: bool, ) -> Capabilities
What a migration connector declares it can do. The engine consults this before it starts, so an unsupported operation is refused up front instead of failing part-way through a run. Every field defaults to false for a connector that has not declared it – an absent capability always reads as "no", never as an optimistic "yes". There is deliberately no per-field "unknown" state: unlike a write-permission probe (which can genuinely fail at runtime, and where the engine branches on the difference), a capability is a static statement a connector makes about itself, and "not declared" and "cannot" produce identical behaviour. Per connection, not per connector type – two instances of the same connector may answer differently (a DuckDB store over Parquet has a schema, one over a headerless CSV does not).
Trait Implementations§
Source§impl Clone for Capabilities
impl Clone for Capabilities
Source§fn clone(&self) -> Capabilities
fn clone(&self) -> Capabilities
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more