Expand description
Feature-gated dispatch from a string type to a concrete connector.
Every arm in this file is guarded by the matching source-* / sink-*
Cargo feature so users can build a slim binary with just the connectors
they need. The string keys here are the public contract of the CLI’s
type: field in YAML/JSON pipeline configs.
Structs§
- Plugin
Registry - A registry of connector factories keyed by their YAML
type:string.
Constants§
- CLEANUP_
SINK_ KINDS - Sink kinds that implement scoped cleanup (
Sink::cleanup_scope, #478) — deleting destination rows inside a source’s declared completeness scope that the run did not write. Kept in sync with each sink’ssupports_cleanup()override;cli/tests/registry_capability_parity.rsasserts they agree. - DISCOVER_
SOURCE_ KINDS - Source kinds that implement live dataset discovery (
Source::discover, issue #211) — mirrors the discoverable-source list in the connector docs. Single source of truth for the conformance scorecard (#330). - EXACTLY_
ONCE_ SOURCE_ KINDS - Source connector kinds that deterministically replay (exactly-once-capable).
Mirrors
Source::supports_exactly_onceoverrides — keep in sync when a new source opts in. The single source of truth for both the boolean gate and the human-readable list shown in error messages (F44).kafkaqualifies because partitions are immutable logs and every page carries a complete offsets bookmark (#291). - IDEMPOTENT_
SINK_ KINDS - Sink connector kinds that can durably commit a token atomically with data.
Mirrors
Sink::supports_idempotent_writesoverrides — keep in sync when a new sink opts in. Single source of truth for the gate + the error-message list (F44). - OVERWRITE_
SINK_ KINDS - Sink kinds that support
write_mode: overwrite(#492) — full-destination replacement via the atomic begin/commit staging lifecycle. Mirrors each sink’sSink::supported_write_modes()override (which must listWriteMode::Overwrite);cli/tests/registry_capability_parity.rsasserts they agree. A subset ofUPSERT_SINK_KINDS— overwrite lands on the keyed-write sinks as their lifecycle is added. - SCHEMA_
EVOLUTION_ SINK_ KINDS - Sink kinds that can apply additive/widening DDL via
Sink::evolve_schema. Mirrors each sink’ssupports_schema_evolution()override. Iceberg is additive-only (new columns) via iceberg-rust 0.10.0’supdate_schemaaction (#255). - SCOPED_
OVERWRITE_ SINK_ KINDS - Sinks that support a scoped/windowed overwrite (#518) — replacing only
the rows matching a
scope(a date window) instead of the whole table. A subset ofOVERWRITE_SINK_KINDS; the others still support full overwrite. (v1: the atomic scoped delete + staged insert; the wider SQL family and key-scope are follow-ups.) - STAGED_
LOAD_ SINK_ KINDS - Sink kinds that bulk-load via an object-store stage + native load command
(staged bulk load, #528). These mirror each sink’s
Sink::supports_staged_loadoverride. Redshift (write_strategy: copy), Snowflake (bulk_load), and BigQuery (bulk_load) load from S3 / an external stage / GCS respectively; ClickHouse pulls a staged S3/GCS object with thes3()/gcs()table function, and MSSQL/Synapse pulls a staged Azure Blob object withCOPY INTO(staging:blocks, #528). The load SQL/URL generators are unit-tested; the server-side execution is not exercised in CI (no live warehouse + object store), same as Redshift/Snowflake/BigQuery. - UPSERT_
SINK_ KINDS - Sink kinds that support
write_mode: upsert|delete. Mirrors each sink’sSink::supported_write_modes()override. Single source of truth for the gate
Functions§
- build_
sink - Build a
Sinktrait object from a(kind, config)pair. When the config carriesauth: { ref: <name> }, the named provider is resolved fromauth(the catalog) and injected into the connector. - build_
source - Build a
Sourcetrait object from a(kind, config)pair. When the config carriesauth: { ref: <name> }, the named provider is resolved fromauth(the catalog) and injected into the connector. - sink_
descriptions - One-line summary of every sink connector — the compiled-in built-ins plus
any third-party connectors registered via
PluginRegistry. Used byfaucet list. - sink_
exists - Check if a sink kind is registered (not unknown or disabled by feature gate).
- sink_
guarantee - The strongest delivery guarantee a sink kind can uphold
(
Sink::sink_guarantee, issue #292). Derived fromIDEMPOTENT_SINK_KINDS/UPSERT_SINK_KINDS. - sink_
kinds - Names of every compiled-in sink connector.
- sink_
schema - Return the JSON Schema for the named sink’s config struct.
- sink_
supported_ write_ modes - Write modes each sink kind supports. Kept in sync with each sink’s
Sink::supported_write_modes()override viaUPSERT_SINK_KINDS. - sink_
supports_ cleanup - See
CLEANUP_SINK_KINDS. - sink_
supports_ idempotent_ writes - See
IDEMPOTENT_SINK_KINDS. - sink_
supports_ overwrite - Whether a sink kind supports
write_mode: overwrite. - sink_
supports_ schema_ evolution - See
SCHEMA_EVOLUTION_SINK_KINDS. - sink_
supports_ scoped_ overwrite - Whether a sink kind supports a scoped overwrite
scope. - sink_
supports_ staged_ load - Whether a sink kind supports staged bulk load. See
STAGED_LOAD_SINK_KINDS. - source_
descriptions - One-line summary of every source connector — the compiled-in built-ins plus
any third-party connectors registered via
PluginRegistry. Used byfaucet list. - source_
exists - Check if a source kind is registered (not unknown or disabled by feature gate).
- source_
kinds - Names of every compiled-in source connector.
- source_
replay_ guarantee - The typed replay capability a source kind advertises
(
Source::replay_guarantee, issue #292). Derived fromEXACTLY_ONCE_SOURCE_KINDS— the kind table stays the single source of truth; this is the typed view the delivery-guarantee derivation consumes. - source_
schema - Return the JSON Schema for the named source’s config struct.
- source_
supports_ discover - Whether a source kind supports
faucet discover(dataset introspection). - source_
supports_ exactly_ once - See
EXACTLY_ONCE_SOURCE_KINDS.
Type Aliases§
- Schema
Fn - A closure returning the JSON Schema for a custom connector’s config. Powers
faucet schema source <name>/faucet schema sink <name>for third-party connectors without instantiating one. Typically|| schema_for!(MyConfig). - Sink
Factory - A factory that builds a
Sinktrait object from itssink.config. SeeSourceFactoryfor the contract. - Source
Factory - A factory that builds a
Sourcetrait object from its JSON/YAML config (source.config). This is the extension point third-party connectors plug into: a custom-CLI author registers one per connectortype:they want theirfaucetbinary to understand.