@@ -8,7 +8,7 @@ use anyhow::{anyhow, Result};
88use log:: debug;
99use smbcloud_model:: project:: { Config , Project } ;
1010use smbcloud_networking:: { environment:: Environment , get_smb_token} ;
11- use smbcloud_networking_project:: { crud_project_deployment_read :: get_project, get_all } ;
11+ use smbcloud_networking_project:: crud_project_read :: { get_project, get_projects } ;
1212use spinners:: Spinner ;
1313use tabled:: { Table , Tabled } ;
1414
@@ -22,6 +22,18 @@ struct ProjectRow {
2222 repository : String ,
2323 #[ tabled( rename = "Description" ) ]
2424 description : String ,
25+ }
26+
27+ #[ derive( Tabled ) ]
28+ struct ProjectDetailRow {
29+ #[ tabled( rename = "ID" ) ]
30+ id : i32 ,
31+ #[ tabled( rename = "Name" ) ]
32+ name : String ,
33+ #[ tabled( rename = "Repository" ) ]
34+ repository : String ,
35+ #[ tabled( rename = "Description" ) ]
36+ description : String ,
2537 #[ tabled( rename = "Created at" ) ]
2638 created_at : String ,
2739 #[ tabled( rename = "Updated at" ) ]
@@ -33,8 +45,8 @@ pub async fn process_project_list(env: Environment) -> Result<CommandResult> {
3345 spinners:: Spinners :: SimpleDotsScrolling ,
3446 succeed_message ( "Loading" ) ,
3547 ) ;
36-
37- match get_all ( env) . await {
48+ let token = get_smb_token ( env ) . await ? ;
49+ match get_projects ( env, token ) . await {
3850 Ok ( projects) => {
3951 spinner. stop_and_persist ( & succeed_symbol ( ) , succeed_message ( "Loaded." ) ) ;
4052 let msg = if projects. is_empty ( ) {
@@ -73,7 +85,7 @@ pub async fn process_project_show(env: Environment, id: String) -> Result<Comman
7385 Ok ( project) => {
7486 spinner. stop_and_persist ( & succeed_symbol ( ) , succeed_message ( "Loaded." ) ) ;
7587 let message = succeed_message ( & format ! ( "Showing project {}." , & project. name) ) ;
76- show_projects ( vec ! [ project] ) ;
88+ show_project_detail ( & project) ;
7789 Ok ( CommandResult {
7890 spinner : Spinner :: new (
7991 spinners:: Spinners :: SimpleDotsScrolling ,
@@ -101,14 +113,25 @@ pub(crate) fn show_projects(projects: Vec<Project>) {
101113 name : p. name ,
102114 repository : p. repository ,
103115 description : p. description . unwrap_or ( "-" . to_owned ( ) ) ,
104- created_at : p. created_at . date_naive ( ) . to_string ( ) ,
105- updated_at : p. updated_at . date_naive ( ) . to_string ( ) ,
106116 } )
107117 . collect ( ) ;
108118 let table = Table :: new ( rows) ;
109119 println ! ( "{table}" ) ;
110120}
111121
122+ pub ( crate ) fn show_project_detail ( project : & Project ) {
123+ let row = ProjectDetailRow {
124+ id : project. id ,
125+ name : project. name . clone ( ) ,
126+ repository : project. repository . clone ( ) ,
127+ description : project. description . clone ( ) . unwrap_or ( "-" . to_owned ( ) ) ,
128+ created_at : project. created_at . date_naive ( ) . to_string ( ) ,
129+ updated_at : project. updated_at . date_naive ( ) . to_string ( ) ,
130+ } ;
131+ let table = Table :: new ( vec ! [ row] ) ;
132+ println ! ( "{table}" ) ;
133+ }
134+
112135pub ( crate ) async fn process_project_use ( env : Environment , id : String ) -> Result < CommandResult > {
113136 let access_token = get_smb_token ( env) . await ?;
114137 let project = get_project ( env, access_token, id) . await ?;
0 commit comments