@@ -17,7 +17,7 @@ fn default_schema() -> String {
1717 "main" . to_string ( )
1818}
1919
20- #[ derive( Deserialize ) ]
20+ #[ derive( Deserialize , Serialize ) ]
2121struct CreateResponse {
2222 id : String ,
2323 label : String ,
@@ -75,6 +75,7 @@ fn create_dataset(
7575 description : Option < & str > ,
7676 name : & str ,
7777 source : serde_json:: Value ,
78+ format : & str ,
7879) {
7980 let label = description. unwrap_or ( name) ;
8081 let body = json ! ( { "table_name" : name, "label" : label, "source" : source } ) ;
@@ -96,28 +97,36 @@ fn create_dataset(
9697 } ;
9798
9899 use crossterm:: style:: Stylize ;
99- println ! ( "{}" , "Dataset created" . green( ) ) ;
100- println ! ( "id: {}" , dataset. id) ;
101- println ! ( "label: {}" , dataset. label) ;
102- println ! (
103- "full_name: datasets.{}.{}" ,
104- dataset. schema_name, dataset. table_name
105- ) ;
100+ match format {
101+ "json" => println ! ( "{}" , serde_json:: to_string_pretty( & dataset) . unwrap( ) ) ,
102+ "yaml" => print ! ( "{}" , serde_yaml:: to_string( & dataset) . unwrap( ) ) ,
103+ "table" => {
104+ eprintln ! ( "{}" , "Dataset created" . green( ) ) ;
105+ println ! ( "id: {}" , dataset. id) ;
106+ println ! ( "label: {}" , dataset. label) ;
107+ println ! (
108+ "full_name: datasets.{}.{}" ,
109+ dataset. schema_name, dataset. table_name
110+ ) ;
111+ }
112+ _ => unreachable ! ( ) ,
113+ }
106114}
107115
108- pub fn create_from_query ( workspace_id : & str , sql : & str , description : Option < & str > , name : & str ) {
116+ pub fn create_from_query ( workspace_id : & str , sql : & str , description : Option < & str > , name : & str , format : & str ) {
109117 let api = ApiClient :: new ( Some ( workspace_id) ) ;
110- create_dataset ( & api, description, name, json ! ( { "type" : "sql_query" , "sql" : sql } ) ) ;
118+ create_dataset ( & api, description, name, json ! ( { "type" : "sql_query" , "sql" : sql } ) , format ) ;
111119}
112120
113121pub fn create_from_saved_query (
114122 workspace_id : & str ,
115123 query_id : & str ,
116124 description : Option < & str > ,
117125 name : & str ,
126+ format : & str ,
118127) {
119128 let api = ApiClient :: new ( Some ( workspace_id) ) ;
120- create_dataset ( & api, description, name, json ! ( { "type" : "saved_query" , "saved_query_id" : query_id } ) ) ;
129+ create_dataset ( & api, description, name, json ! ( { "type" : "saved_query" , "saved_query_id" : query_id } ) , format ) ;
121130}
122131
123132pub fn list ( workspace_id : & str , limit : Option < u32 > , offset : Option < u32 > , format : & str ) {
0 commit comments