11use std:: sync:: LazyLock ;
22
3- use crate :: queries:: { Query , QueryResult } ;
3+ use crate :: queries:: { Query , QueryResult , helper :: object_reference_query } ;
44
55use tree_sitter:: StreamingIterator ;
66
@@ -9,27 +9,15 @@ use super::QueryTryFrom;
99static TS_QUERY : LazyLock < tree_sitter:: Query > = LazyLock :: new ( || {
1010 static QUERY_STR : & str = r#"
1111 (relation
12- (object_reference
13- object_reference_first: (any_identifier) @first
14- object_reference_second: (any_identifier)? @second
15- object_reference_third: (any_identifier)? @third
16- )
12+ (object_reference) @ref
1713 )
1814 (insert
19- (object_reference
20- object_reference_first: (any_identifier) @first
21- object_reference_second: (any_identifier)? @second
22- object_reference_third: (any_identifier)? @third
23- )
15+ (object_reference) @ref
2416 )
2517 (alter_table
2618 (keyword_alter)
2719 (keyword_table)
28- (object_reference
29- object_reference_first: (any_identifier) @first
30- object_reference_second: (any_identifier)? @second
31- object_reference_third: (any_identifier)? @third
32- )
20+ (object_reference) @ref
3321 )
3422"# ;
3523 tree_sitter:: Query :: new ( & pgt_treesitter_grammar:: LANGUAGE . into ( ) , QUERY_STR )
@@ -87,23 +75,11 @@ impl<'a> Query<'a> for RelationMatch<'a> {
8775 let mut to_return = vec ! [ ] ;
8876
8977 matches. for_each ( |m| {
90- if m. captures . len ( ) == 1 {
91- let capture = m. captures [ 0 ] . node ;
92- to_return. push ( QueryResult :: Relation ( RelationMatch {
93- schema : None ,
94- table : capture,
95- } ) ) ;
96- }
97-
98- if m. captures . len ( ) == 2 {
99- let schema = m. captures [ 0 ] . node ;
100- let table = m. captures [ 1 ] . node ;
101-
102- to_return. push ( QueryResult :: Relation ( RelationMatch {
103- schema : Some ( schema) ,
104- table,
105- } ) ) ;
106- }
78+ m. captures . iter ( ) . for_each ( |capture| {
79+ if let Some ( ( _, schema, table) ) = object_reference_query ( capture. node , stmt) {
80+ to_return. push ( RelationMatch { schema, table } )
81+ }
82+ } ) ;
10783 } ) ;
10884
10985 to_return
0 commit comments