3 files changed
+31
-8
crates/cli/src/project/crud_read.rs
+26
-3
@@ -22,6 +22,18 @@ struct ProjectRow {
22
repository: String,
23
#[tabled(rename = "Description")]
24
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,
37
#[tabled(rename = "Created at")]
38
created_at: String,
39
#[tabled(rename = "Updated at")]
@@ -73,7 +85,7 @@ pub async fn process_project_show(env: Environment, id: String) -> Result<Comman
85
Ok(project) => {
86
spinner.stop_and_persist(&succeed_symbol(), succeed_message("Loaded."));
87
let message = succeed_message(&format!("Showing project {}.", &project.name));
76
- show_projects(vec![project]);
88
+ show_project_detail(&project);
89
Ok(CommandResult {
90
spinner: Spinner::new(
91
spinners::Spinners::SimpleDotsScrolling,
@@ -101,14 +113,25 @@ pub(crate) fn show_projects(projects: Vec<Project>) {
113
name: p.name,
114
repository: p.repository,
115
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(),
116
})
117
.collect();
118
let table = Table::new(rows);
119
println!("{table}");
120
}
121
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
+
135
pub(crate) async fn process_project_use(env: Environment, id: String) -> Result<CommandResult> {
136
let access_token = get_smb_token(env).await?;
137
let project = get_project(env, access_token, id).await?;
crates/smbcloud-networking-project/src/crud_project_deployment_create.rs
+3
-3
@@ -3,7 +3,7 @@ use anyhow::{anyhow, Result};
3
use log::debug;
4
use reqwest::Client;
5
use smbcloud_model::project::{Deployment, DeploymentPayload};
6
-use smbcloud_networking::{environment::Environment, get_smb_token};
6
+use smbcloud_networking::{constants::SMB_USER_AGENT, environment::Environment, get_smb_token};
7
8
pub async fn create(
9
env: Environment,
@@ -19,7 +19,7 @@ pub async fn create(
19
.post(build_project_deployment_index(env, project_id.to_string()))
20
.json(&payload)
21
.header("Authorization", token)
22
- .header("User-agent", "smbcloud-cli")
22
+ .header("User-agent", SMB_USER_AGENT)
23
.send()
24
.await?;
25
@@ -57,7 +57,7 @@ pub async fn update(
57
.put(url)
58
.json(&payload)
59
.header("Authorization", token)
60
- .header("User-agent", "smbcloud-cli")
60
+ .header("User-agent", SMB_USER_AGENT)
61
.send()
62
.await?;
63
crates/smbcloud-networking-project/src/lib.rs
+2
-2
@@ -5,7 +5,7 @@ use anyhow::{anyhow, Result};
5
use log::debug;
6
use reqwest::{Client, StatusCode};
7
use smbcloud_model::project::{Project, ProjectCreate};
8
-use smbcloud_networking::{environment::Environment, get_smb_token, smb_base_url_builder};
8
+use smbcloud_networking::{constants::SMB_USER_AGENT, environment::Environment, get_smb_token, smb_base_url_builder};
9
10
pub async fn get_all(env: Environment) -> Result<Vec<Project>> {
11
// Get current token
@@ -16,7 +16,7 @@ pub async fn get_all(env: Environment) -> Result<Vec<Project>> {
16
let response = Client::new()
17
.get(build_project_url(env))
18
.header("Authorization", token)
19
- .header("User-agent", "smbcloud-cli")
19
+ .header("User-agent", SMB_USER_AGENT)
20
.send()
21
.await?;
22