Skip to content

Commit 813a7d3

Browse files
committed
privileges in description
1 parent f399409 commit 813a7d3

File tree

6 files changed

+1851
-2721
lines changed

6 files changed

+1851
-2721
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
// Create the operation, it will be repeated if we have several methods
255262
let operation = openapiv3::Operation {
@@ -259,7 +266,7 @@ pub fn add_endpoint(
259266
vec![namespace.to_string()]
260267
},
261268
summary: sum_desc.summary,
262-
description: sum_desc.description,
269+
description: full_desc,
263270
external_docs: tac.convert_external_docs(endpoint),
264271
// external_docs: None, // Need values that differ from client purposes
265272
operation_id: None, // set in clone_operation below with operation_counter
@@ -274,7 +281,7 @@ pub fn add_endpoint(
274281
deprecated: endpoint.deprecation.is_some(),
275282
security: None,
276283
servers: vec![],
277-
extensions: crate::extensions(&endpoint.availability,&endpoint.privileges),
284+
extensions: crate::extensions(&endpoint.availability),
278285
};
279286

280287

@@ -403,6 +410,20 @@ fn split_summary_desc(desc: &str) -> SplitDesc{
403410
}
404411
}
405412

413+
fn add_privileges(privileges: &Option<Privileges>) -> Option<String>{
414+
if let Some(privs) = privileges {
415+
let mut result = "Required privileges:".to_string();
416+
if privs.index.len()>0 {
417+
result = result + " index-privileges: " + &privs.index.join(",");
418+
}
419+
if privs.cluster.len()>0 {
420+
result = result + " cluster-privileges: " + &privs.cluster.join(",");
421+
}
422+
return Some(result)
423+
}
424+
None
425+
}
426+
406427
#[derive(PartialEq,Debug)]
407428
struct SplitDesc {
408429
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)
Binary file not shown.

0 commit comments

Comments
 (0)