Skip to content

Commit f399409

Browse files
committed
adding privileges to openapi export
1 parent 00be10a commit f399409

File tree

6 files changed

+1895
-917
lines changed

6 files changed

+1895
-917
lines changed

compiler-rs/clients_schema/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ pub struct Availability {
264264
pub visibility: Option<Visibility>,
265265
}
266266

267-
/// The availability of an
267+
/// The availability of an endpoint, field or parameter
268268
pub type Availabilities = IndexMap<Flavor, Availability>;
269269

270270
pub trait AvailabilityFilter: Fn(&Option<Availabilities>) -> bool {}

compiler-rs/clients_schema_to_openapi/src/lib.rs

Lines changed: 11 additions & 2 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, Stability, Visibility};
26+
use clients_schema::{Availabilities, Flavor, IndexedModel, Privileges, 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 availability_as_extensions(availabilities: &Option<Availabilities>) -> IndexMap<String, serde_json::Value> {
152+
pub fn extensions(availabilities: &Option<Availabilities>, privileges: &Option<Privileges>) -> IndexMap<String, serde_json::Value> {
153153
let mut result = IndexMap::new();
154154

155155
if let Some(avails) = availabilities {
@@ -174,5 +174,14 @@ pub fn availability_as_extensions(availabilities: &Option<Availabilities>) -> In
174174
}
175175
}
176176

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+
177186
result
178187
}

compiler-rs/clients_schema_to_openapi/src/paths.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,7 @@ pub fn add_endpoint(
274274
deprecated: endpoint.deprecation.is_some(),
275275
security: None,
276276
servers: vec![],
277-
extensions: crate::availability_as_extensions(&endpoint.availability),
277+
extensions: crate::extensions(&endpoint.availability,&endpoint.privileges),
278278
};
279279

280280

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::availability_as_extensions(&prop.availability);
472+
data.extensions = crate::extensions(&prop.availability, &None);
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)