Skip to content

Commit ff60e76

Browse files
authored
Merge pull request #46 from wcm-io-devops/feature/add-start-limit-to-domain-call
Add pagination support to domain list
2 parents 21d123f + d7a0228 commit ff60e76

File tree

4 files changed

+34
-8
lines changed

4 files changed

+34
-8
lines changed

README.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,11 @@ pippo -c <pippo.json> env vars set --ci <environment-variables.yml>
300300
The current state of implementation is only creating new domains. It will not update nor delete other domains.
301301
In case a domain is already there, error ALREADY_IN_USE is shown.
302302

303-
#### Example Data:
303+
#### List arguments
304+
305+
You can provide `--start` and limit `--limit` to `domain list` in order to limit / page the results.
306+
307+
#### Example Data
304308

305309
```yaml
306310
---
@@ -317,6 +321,8 @@ programs:
317321

318322
```bash
319323
pippo -c <pippo.json> -p <program-id> domain list
324+
pippo -c <pippo.json> -p <program-id> domain list --start 0 --limit 20
325+
pippo -c <pippo.json> -p <program-id> domain list --start 20 --limit 20
320326
pippo -c <pippo.json> domain create <environment-domains.yml>
321327
```
322328

src/clap_app.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -180,10 +180,11 @@ pub async fn init_cli() {
180180
// Since all "domain" subcommands need a program ID, we can only run them when it was provided.
181181
if let Some(program_id) = cli.program {
182182
match &domain_command {
183-
DomainCommands::List => {
184-
let domains = domains::get_domains(&mut cm_client, program_id)
185-
.await
186-
.unwrap();
183+
DomainCommands::List { start, limit } => {
184+
let domains =
185+
domains::get_domains(&mut cm_client, program_id, start, limit)
186+
.await
187+
.unwrap();
187188
if let Some(env_id) = cli.env {
188189
let env_i64 = env_id as i64;
189190
let filtered_domains: Vec<Domain> = domains

src/clap_models.rs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -192,8 +192,16 @@ pub enum PipelineVarsCommands {
192192

193193
#[derive(Subcommand)]
194194
pub enum DomainCommands {
195-
/// List all pipelines of the specified program
196-
List,
195+
/// List all domains of the specified program
196+
List {
197+
/// Pagination start parameter
198+
#[clap(short, long, value_parser, default_value_t = 0)]
199+
start: u32,
200+
/// Pagination limit parameter
201+
#[clap(short, long, value_parser, default_value_t = 1000)]
202+
limit: u32,
203+
},
204+
/// Creates domains based upon a provided file
197205
Create {
198206
#[clap(value_parser, value_name = "FILE")]
199207
input: String,

src/domains.rs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ extern crate uuid;
77
use colored::Colorize;
88
use reqwest::{Error, Method, StatusCode};
99
use std::process;
10+
use std::str;
1011
use uuid::Uuid;
1112

1213
/// Retrieves all domains.
@@ -24,10 +25,20 @@ use uuid::Uuid;
2425
pub async fn get_domains(
2526
client: &mut CloudManagerClient,
2627
program_id: u32,
28+
start: &u32,
29+
limit: &u32,
2730
) -> Result<DomainList, Error> {
2831
let request_path = format!("{}/api/program/{}/domainNames", HOST_NAME, program_id);
32+
let query_start: &str = &start.to_string();
33+
let query_limit: &str = &limit.to_string();
34+
let query_parameters = vec![("start", query_start), ("limit", query_limit)];
2935
let response = client
30-
.perform_request(Method::GET, request_path, None::<()>, None)
36+
.perform_request(
37+
Method::GET,
38+
request_path,
39+
None::<()>,
40+
Some(query_parameters),
41+
)
3142
.await?
3243
.text()
3344
.await?;

0 commit comments

Comments
 (0)