Skip to content

Commit 8244421

Browse files
committed
privileges in description
1 parent 54bf609 commit 8244421

File tree

5 files changed

+3399
-1660
lines changed

5 files changed

+3399
-1660
lines changed

compiler-rs/clients_schema_to_openapi/src/lib.rs

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ pub mod cli;
2323

2424
use indexmap::IndexMap;
2525

26-
use clients_schema::{Availabilities, Flavor, IndexedModel, Privileges, Stability, Visibility};
26+
use clients_schema::{Availabilities, Flavor, IndexedModel, Stability, Visibility};
2727
use openapiv3::{Components, OpenAPI};
2828
use clients_schema::transform::ExpandConfig;
2929
use crate::components::TypesAndComponents;
@@ -149,7 +149,7 @@ fn info(model: &IndexedModel) -> openapiv3::Info {
149149
}
150150
}
151151

152-
pub fn extensions(availabilities: &Option<Availabilities>, privileges: &Option<Privileges>) -> IndexMap<String, serde_json::Value> {
152+
pub fn extensions(availabilities: &Option<Availabilities>) -> IndexMap<String, serde_json::Value> {
153153
let mut result = IndexMap::new();
154154

155155
if let Some(avails) = availabilities {
@@ -173,15 +173,5 @@ pub fn extensions(availabilities: &Option<Availabilities>, privileges: &Option<P
173173
}
174174
}
175175
}
176-
177-
if let Some(privs) = privileges {
178-
if privs.index.len()>0 {
179-
result.insert("index-privileges".to_string(),serde_json::Value::String(privs.index.join(",")));
180-
}
181-
if privs.cluster.len()>0 {
182-
result.insert("cluster-privileges".to_string(),serde_json::Value::String(privs.cluster.join(",")));
183-
}
184-
}
185-
186176
result
187177
}

compiler-rs/clients_schema_to_openapi/src/paths.rs

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use std::collections::HashMap;
1919
use std::fmt::Write;
2020

2121
use anyhow::{anyhow, bail};
22-
use clients_schema::Property;
22+
use clients_schema::{Privileges, Property};
2323
use indexmap::IndexMap;
2424
use indexmap::indexmap;
2525
use icu_segmenter::SentenceSegmenter;
@@ -250,6 +250,13 @@ pub fn add_endpoint(
250250
parameters.append(&mut query_params.clone());
251251

252252
let sum_desc = split_summary_desc(&endpoint.description);
253+
254+
let privilege_desc = add_privileges(&endpoint.privileges);
255+
256+
let full_desc = match (sum_desc.description, privilege_desc) {
257+
(Some(a), Some(b)) => Some(a+ &b),
258+
(opt_a, opt_b) => opt_a.or(opt_b)
259+
};
253260

254261
// add the x-state extension for availability
255262
let mut extensions = crate::availability_as_extensions(&endpoint.availability);
@@ -295,7 +302,7 @@ pub fn add_endpoint(
295302
vec![namespace.to_string()]
296303
},
297304
summary: sum_desc.summary,
298-
description: sum_desc.description,
305+
description: full_desc,
299306
external_docs: tac.convert_external_docs(endpoint),
300307
// external_docs: None, // Need values that differ from client purposes
301308
operation_id: None, // set in clone_operation below with operation_counter
@@ -310,7 +317,7 @@ pub fn add_endpoint(
310317
deprecated: endpoint.deprecation.is_some(),
311318
security: None,
312319
servers: vec![],
313-
extensions: crate::extensions(&endpoint.availability,&endpoint.privileges),
320+
extensions: crate::extensions(&endpoint.availability),
314321
};
315322

316323

@@ -439,6 +446,20 @@ fn split_summary_desc(desc: &str) -> SplitDesc{
439446
}
440447
}
441448

449+
fn add_privileges(privileges: &Option<Privileges>) -> Option<String>{
450+
if let Some(privs) = privileges {
451+
let mut result = "Required privileges:".to_string();
452+
if privs.index.len()>0 {
453+
result = result + " index-privileges: " + &privs.index.join(",");
454+
}
455+
if privs.cluster.len()>0 {
456+
result = result + " cluster-privileges: " + &privs.cluster.join(",");
457+
}
458+
return Some(result)
459+
}
460+
None
461+
}
462+
442463
#[derive(PartialEq,Debug)]
443464
struct SplitDesc {
444465
summary: Option<String>,

compiler-rs/clients_schema_to_openapi/src/schemas.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -469,7 +469,7 @@ impl<'a> TypesAndComponents<'a> {
469469
data.external_docs = self.convert_external_docs(prop);
470470
data.deprecated = prop.deprecation.is_some();
471471
data.description = self.property_description(prop)?;
472-
data.extensions = crate::extensions(&prop.availability, &None);
472+
data.extensions = crate::extensions(&prop.availability);
473473
// TODO: prop.aliases as extensions
474474
// TODO: prop.server_default as extension
475475
// TODO: prop.doc_id as extension (new representation of since and stability)

0 commit comments

Comments
 (0)