@@ -191,6 +191,9 @@ pub fn hover(db: &dyn Db, file: File, offset: TextSize) -> Option<Hover> {
191191 NameClass :: CreateView ( create_view) => {
192192 return format_create_view ( & create_view, & binder) ;
193193 }
194+ NameClass :: CreatePropertyGraph ( create_property_graph) => {
195+ return format_create_property_graph ( & create_property_graph, & binder) ;
196+ }
194197 NameClass :: DeclareCursor ( declare) => {
195198 return format_declare_cursor ( & declare) ;
196199 }
@@ -286,6 +289,7 @@ fn hover_name_ref(
286289 NameRefClass :: PreparedStatement => hover_prepared_statement ( root, name_ref, binder) ,
287290 NameRefClass :: Channel => hover_channel ( root, name_ref, binder) ,
288291 NameRefClass :: Window => hover_window ( root, name_ref, binder) ,
292+ NameRefClass :: PropertyGraph => hover_property_graph ( root, name_ref, binder) ,
289293 }
290294}
291295
@@ -1107,6 +1111,24 @@ fn hover_policy(
11071111 format_create_policy ( & create_policy, binder)
11081112}
11091113
1114+ fn hover_property_graph (
1115+ root : & SyntaxNode ,
1116+ name_ref : & ast:: NameRef ,
1117+ binder : & binder:: Binder ,
1118+ ) -> Option < Hover > {
1119+ let property_graph_ptr = resolve:: resolve_name_ref_ptrs ( binder, root, name_ref) ?
1120+ . into_iter ( )
1121+ . next ( ) ?;
1122+
1123+ let property_graph_name_node = property_graph_ptr. to_node ( root) ;
1124+
1125+ let create_property_graph = property_graph_name_node
1126+ . ancestors ( )
1127+ . find_map ( ast:: CreatePropertyGraph :: cast) ?;
1128+
1129+ format_create_property_graph ( & create_property_graph, binder)
1130+ }
1131+
11101132fn hover_event_trigger (
11111133 root : & SyntaxNode ,
11121134 name_ref : & ast:: NameRef ,
@@ -1447,6 +1469,18 @@ fn format_create_policy(
14471469 ) ) )
14481470}
14491471
1472+ fn format_create_property_graph (
1473+ create_property_graph : & ast:: CreatePropertyGraph ,
1474+ binder : & binder:: Binder ,
1475+ ) -> Option < Hover > {
1476+ let path = create_property_graph. path ( ) ?;
1477+ let ( schema, name) = resolve:: resolve_property_graph_info ( binder, & path) ?;
1478+ Some ( Hover :: snippet ( format ! (
1479+ "property graph {}.{}" ,
1480+ schema, name
1481+ ) ) )
1482+ }
1483+
14501484fn format_create_event_trigger ( create_event_trigger : & ast:: CreateEventTrigger ) -> Option < Hover > {
14511485 let name = create_event_trigger. name ( ) ?. syntax ( ) . text ( ) . to_string ( ) ;
14521486 Some ( Hover :: snippet ( format ! ( "event trigger {}" , name) ) )
@@ -4972,11 +5006,49 @@ notify updates$0;
49725006 assert_snapshot ! ( check_hover( "
49735007listen updates;
49745008unlisten updates$0;
4975- " ) , @r "
5009+ " ) , @"
49765010 hover: listen updates
49775011 ╭▸
49785012 3 │ unlisten updates;
49795013 ╰╴ ─ hover
49805014 " ) ;
49815015 }
5016+
5017+ #[ test]
5018+ fn hover_property_graph_on_create ( ) {
5019+ assert_snapshot ! ( check_hover( "
5020+ create property graph foo.ba$0r vertex tables (t key (a) no properties);
5021+ " ) , @"
5022+ hover: property graph foo.bar
5023+ ╭▸
5024+ 2 │ create property graph foo.bar vertex tables (t key (a) no properties);
5025+ ╰╴ ─ hover
5026+ " ) ;
5027+ }
5028+
5029+ #[ test]
5030+ fn hover_property_graph_on_drop ( ) {
5031+ assert_snapshot ! ( check_hover( "
5032+ create property graph foo.bar vertex tables (t key (a) no properties);
5033+ drop property graph foo.ba$0r;
5034+ " ) , @"
5035+ hover: property graph foo.bar
5036+ ╭▸
5037+ 3 │ drop property graph foo.bar;
5038+ ╰╴ ─ hover
5039+ " ) ;
5040+ }
5041+
5042+ #[ test]
5043+ fn hover_property_graph_on_alter ( ) {
5044+ assert_snapshot ! ( check_hover( "
5045+ create property graph foo.bar vertex tables (t key (a) no properties);
5046+ alter property graph foo.ba$0r rename to baz;
5047+ " ) , @"
5048+ hover: property graph foo.bar
5049+ ╭▸
5050+ 3 │ alter property graph foo.bar rename to baz;
5051+ ╰╴ ─ hover
5052+ " ) ;
5053+ }
49825054}
0 commit comments