File tree Expand file tree Collapse file tree 1 file changed +52
-1
lines changed Expand file tree Collapse file tree 1 file changed +52
-1
lines changed Original file line number Diff line number Diff line change @@ -3635,7 +3635,58 @@ mod mssql {
3635
3635
}
3636
3636
3637
3637
async fn tables_with_columns ( & self ) -> color_eyre:: Result < responses:: TablesWithColumns > {
3638
- todo ! ( )
3638
+ let mut client = self . client . lock ( ) . await ;
3639
+
3640
+ let table_names = client
3641
+ . query (
3642
+ r#"
3643
+ SELECT t.name AS name
3644
+ FROM sys.tables t
3645
+ JOIN sys.schemas s ON t.schema_id = s.schema_id
3646
+ WHERE s.name = SCHEMA_NAME();
3647
+ "# ,
3648
+ & [ ] ,
3649
+ )
3650
+ . await ?
3651
+ . into_row_stream ( )
3652
+ . try_filter_map ( |row| {
3653
+ let out = Ok ( row. get :: < & str , & str > ( "name" ) . map ( ToOwned :: to_owned) ) ;
3654
+ async { out }
3655
+ } )
3656
+ . filter_map ( |count| async { count. ok ( ) } )
3657
+ . collect :: < Vec < _ > > ( )
3658
+ . await ;
3659
+
3660
+ let mut tables = Vec :: with_capacity ( table_names. len ( ) ) ;
3661
+ for table_name in table_names {
3662
+ let columns = client
3663
+ . query (
3664
+ r#"
3665
+ SELECT column_name AS name
3666
+ FROM information_schema.columns
3667
+ WHERE table_schema = SCHEMA_NAME()
3668
+ AND table_name = @P1;
3669
+ "# ,
3670
+ & [ & table_name] ,
3671
+ )
3672
+ . await ?
3673
+ . into_row_stream ( )
3674
+ . try_filter_map ( |row| {
3675
+ let out = Ok ( row. get :: < & str , & str > ( "name" ) . map ( ToOwned :: to_owned) ) ;
3676
+ async { out }
3677
+ } )
3678
+ . filter_map ( |count| async { count. ok ( ) } )
3679
+ . collect :: < Vec < _ > > ( )
3680
+ . await ;
3681
+
3682
+ tables. push ( responses:: TableWithColumns {
3683
+ table_name,
3684
+ columns,
3685
+ } ) ;
3686
+ }
3687
+
3688
+ tables. sort_by_key ( |t| t. table_name . len ( ) ) ;
3689
+ Ok ( responses:: TablesWithColumns { tables } )
3639
3690
}
3640
3691
3641
3692
async fn query ( & self , query : String ) -> color_eyre:: Result < responses:: Query > {
You can’t perform that action at this time.
0 commit comments