From ddff86e5e3afdf2bf652a285b64dbf55ae98bfbc Mon Sep 17 00:00:00 2001 From: Cedric Vangout Date: Sun, 10 Dec 2023 01:33:38 +0100 Subject: [PATCH 1/2] add support for parsing "create domain" statement --- crates/codegen/src/get_node_properties.rs | 10 ++++++++++ crates/parser/src/codegen.rs | 15 +++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/crates/codegen/src/get_node_properties.rs b/crates/codegen/src/get_node_properties.rs index db7a7781..5e7221ed 100644 --- a/crates/codegen/src/get_node_properties.rs +++ b/crates/codegen/src/get_node_properties.rs @@ -529,6 +529,16 @@ fn custom_handlers(node: &Node) -> TokenStream { "TypeCast" => quote! { tokens.push(TokenProperty::from(Token::Typecast)); }, + "CreateDomainStmt" => quote! { + tokens.push(TokenProperty::from(Token::Create)); + tokens.push(TokenProperty::from(Token::DomainP)); + if n.type_name.is_some() { + tokens.push(TokenProperty::from(Token::As)); + } + if n.constraints.len() > 0 { + tokens.push(TokenProperty::from(Token::Check)); + } + }, _ => quote! {}, } } diff --git a/crates/parser/src/codegen.rs b/crates/parser/src/codegen.rs index da011fa8..8f4a3bde 100644 --- a/crates/parser/src/codegen.rs +++ b/crates/parser/src/codegen.rs @@ -91,4 +91,19 @@ mod tests { ], ) } + + #[test] + fn test_create_domain() { + test_get_node_properties( + "create domain us_postal_code as text check (value is not null);", + SyntaxKind::CreateDomainStmt, + vec![ + TokenProperty::from(SyntaxKind::Create), + TokenProperty::from(SyntaxKind::DomainP), + TokenProperty::from(SyntaxKind::As), + TokenProperty::from(SyntaxKind::Check), + TokenProperty::from("us_postal_code".to_string()), + ], + ) + } } From 7db47a7bd73538275bc2b5574537549cd214f370 Mon Sep 17 00:00:00 2001 From: Cedric Vangout Date: Mon, 11 Dec 2023 19:39:46 +0100 Subject: [PATCH 2/2] fix: wrong node for check token --- crates/codegen/src/get_node_properties.rs | 3 --- crates/parser/src/codegen.rs | 1 - 2 files changed, 4 deletions(-) diff --git a/crates/codegen/src/get_node_properties.rs b/crates/codegen/src/get_node_properties.rs index 5e7221ed..d4ebe070 100644 --- a/crates/codegen/src/get_node_properties.rs +++ b/crates/codegen/src/get_node_properties.rs @@ -535,9 +535,6 @@ fn custom_handlers(node: &Node) -> TokenStream { if n.type_name.is_some() { tokens.push(TokenProperty::from(Token::As)); } - if n.constraints.len() > 0 { - tokens.push(TokenProperty::from(Token::Check)); - } }, _ => quote! {}, } diff --git a/crates/parser/src/codegen.rs b/crates/parser/src/codegen.rs index 8f4a3bde..4380e461 100644 --- a/crates/parser/src/codegen.rs +++ b/crates/parser/src/codegen.rs @@ -101,7 +101,6 @@ mod tests { TokenProperty::from(SyntaxKind::Create), TokenProperty::from(SyntaxKind::DomainP), TokenProperty::from(SyntaxKind::As), - TokenProperty::from(SyntaxKind::Check), TokenProperty::from("us_postal_code".to_string()), ], )