risingwave_meta/stream/
sink.rs1use anyhow::Context;
16use risingwave_connector::dispatch_sink;
17use risingwave_connector::sink::catalog::SinkCatalog;
18use risingwave_connector::sink::{Sink, SinkParam, build_sink};
19use risingwave_pb::catalog::PbSink;
20
21use crate::MetaResult;
22
23#[await_tree::instrument(boxed)]
24pub async fn validate_sink(prost_sink_catalog: &PbSink) -> MetaResult<()> {
25 let sink_catalog = SinkCatalog::from(prost_sink_catalog);
26 let param = SinkParam::try_from_sink_catalog(sink_catalog)?;
27
28 let sink = build_sink(param)?;
29 sink.validate_unknown_fields()?;
30
31 dispatch_sink!(
32 sink,
33 sink,
34 Ok(sink.validate().await.context("failed to validate sink")?)
35 )
36}