@@ -475,17 +475,18 @@ pub fn list(workspace_id: &str, limit: Option<u32>, offset: Option<u32>, format:
475475 "json" => println ! ( "{}" , serde_json:: to_string_pretty( & body. datasets) . unwrap( ) ) ,
476476 "yaml" => print ! ( "{}" , serde_yaml:: to_string( & body. datasets) . unwrap( ) ) ,
477477 "table" => {
478- let mut table = crate :: util:: make_table ( ) ;
479- table. set_header ( [ "ID" , "LABEL" , "FULL NAME" , "CREATED AT" ] ) ;
480- table. column_mut ( 1 ) . unwrap ( ) . set_constraint (
481- comfy_table:: ColumnConstraint :: UpperBoundary ( comfy_table:: Width :: Fixed ( 30 ) )
482- ) ;
483- for d in & body. datasets {
484- let created_at = d. created_at . split ( '.' ) . next ( ) . unwrap_or ( & d. created_at ) . replace ( 'T' , " " ) ;
485- let full_name = format ! ( "datasets.main.{}" , d. table_name) ;
486- table. add_row ( [ & d. id , & d. label , & full_name, & created_at] ) ;
478+ if body. datasets . is_empty ( ) {
479+ use crossterm:: style:: Stylize ;
480+ eprintln ! ( "{}" , "No datasets found." . dark_grey( ) ) ;
481+ } else {
482+ let rows: Vec < Vec < String > > = body. datasets . iter ( ) . map ( |d| vec ! [
483+ d. id. clone( ) ,
484+ d. label. clone( ) ,
485+ format!( "datasets.main.{}" , d. table_name) ,
486+ crate :: util:: format_date( & d. created_at) ,
487+ ] ) . collect ( ) ;
488+ crate :: table:: print ( & [ "ID" , "LABEL" , "FULL NAME" , "CREATED AT" ] , & rows) ;
487489 }
488- println ! ( "{table}" ) ;
489490 if body. has_more {
490491 let next = offset. unwrap_or ( 0 ) + body. count as u32 ;
491492 use crossterm:: style:: Stylize ;
@@ -547,8 +548,8 @@ pub fn get(dataset_id: &str, workspace_id: &str, format: &str) {
547548 "json" => println ! ( "{}" , serde_json:: to_string_pretty( & d) . unwrap( ) ) ,
548549 "yaml" => print ! ( "{}" , serde_yaml:: to_string( & d) . unwrap( ) ) ,
549550 "table" => {
550- let created_at = d . created_at . split ( '.' ) . next ( ) . unwrap_or ( & d. created_at ) . replace ( 'T' , " " ) ;
551- let updated_at = d . updated_at . split ( '.' ) . next ( ) . unwrap_or ( & d. updated_at ) . replace ( 'T' , " " ) ;
551+ let created_at = crate :: util :: format_date ( & d. created_at ) ;
552+ let updated_at = crate :: util :: format_date ( & d. updated_at ) ;
552553 println ! ( "id: {}" , d. id) ;
553554 println ! ( "label: {}" , d. label) ;
554555 println ! ( "full_name: datasets.main.{}" , d. table_name) ;
@@ -557,12 +558,10 @@ pub fn get(dataset_id: &str, workspace_id: &str, format: &str) {
557558 println ! ( "updated_at: {updated_at}" ) ;
558559 if !d. columns . is_empty ( ) {
559560 println ! ( ) ;
560- let mut table = crate :: util:: make_table ( ) ;
561- table. set_header ( [ "COLUMN" , "DATA TYPE" , "NULLABLE" ] ) ;
562- for col in & d. columns {
563- table. add_row ( [ & col. name , & col. data_type , & col. nullable . to_string ( ) ] ) ;
564- }
565- println ! ( "{table}" ) ;
561+ let rows: Vec < Vec < String > > = d. columns . iter ( ) . map ( |col| vec ! [
562+ col. name. clone( ) , col. data_type. clone( ) , col. nullable. to_string( ) ,
563+ ] ) . collect ( ) ;
564+ crate :: table:: print ( & [ "COLUMN" , "DATA TYPE" , "NULLABLE" ] , & rows) ;
566565 }
567566 }
568567 _ => unreachable ! ( ) ,
0 commit comments