(
&'a self,
v: &'a CreateSourceStatement<T>,
)
| 39 | } |
| 40 | |
| 41 | pub(crate) fn doc_create_source<'a, T: AstInfo>( |
| 42 | &'a self, |
| 43 | v: &'a CreateSourceStatement<T>, |
| 44 | ) -> RcDoc<'a> { |
| 45 | let mut docs = Vec::new(); |
| 46 | let title = format!( |
| 47 | "CREATE SOURCE{}", |
| 48 | if v.if_not_exists { |
| 49 | " IF NOT EXISTS" |
| 50 | } else { |
| 51 | "" |
| 52 | } |
| 53 | ); |
| 54 | let mut doc = self.doc_display_pass(&v.name); |
| 55 | let mut names = Vec::new(); |
| 56 | names.extend(v.col_names.iter().map(|name| self.doc_display_pass(name))); |
| 57 | names.extend(v.key_constraint.iter().map(|kc| self.doc_display_pass(kc))); |
| 58 | if !names.is_empty() { |
| 59 | doc = nest(doc, bracket("(", comma_separated(names), ")")); |
| 60 | } |
| 61 | docs.push(nest_title(title, doc)); |
| 62 | if let Some(cluster) = &v.in_cluster { |
| 63 | docs.push(nest_title("IN CLUSTER", self.doc_display_pass(cluster))); |
| 64 | } |
| 65 | docs.push(nest_title("FROM", self.doc_display_pass(&v.connection))); |
| 66 | if let Some(format) = &v.format { |
| 67 | docs.push(self.doc_format_specifier(format)); |
| 68 | } |
| 69 | if !v.include_metadata.is_empty() { |
| 70 | docs.push(nest_title( |
| 71 | "INCLUDE", |
| 72 | comma_separate(|im| self.doc_display_pass(im), &v.include_metadata), |
| 73 | )); |
| 74 | } |
| 75 | if let Some(envelope) = &v.envelope { |
| 76 | docs.push(nest_title("ENVELOPE", self.doc_display_pass(envelope))); |
| 77 | } |
| 78 | if let Some(references) = &v.external_references { |
| 79 | docs.push(self.doc_external_references(references)); |
| 80 | } |
| 81 | if let Some(progress) = &v.progress_subsource { |
| 82 | docs.push(nest_title( |
| 83 | "EXPOSE PROGRESS AS", |
| 84 | self.doc_display_pass(progress), |
| 85 | )); |
| 86 | } |
| 87 | if !v.with_options.is_empty() { |
| 88 | docs.push(bracket( |
| 89 | "WITH (", |
| 90 | comma_separate(|wo| self.doc_display_pass(wo), &v.with_options), |
| 91 | ")", |
| 92 | )); |
| 93 | } |
| 94 | RcDoc::intersperse(docs, Doc::line()).group() |
| 95 | } |
| 96 | |
| 97 | pub(crate) fn doc_create_webhook_source<'a, T: AstInfo>( |
| 98 | &'a self, |
no test coverage detected