Fix few tui generated code issues
Change-Id: Iac7169de7ee07fa06e48dec56d0e9656c2d7e45a
This commit is contained in:
parent
ca373468f7
commit
5d38233548
@ -28,6 +28,10 @@ class String(common_rust.String):
|
||||
type_hint: str = "String"
|
||||
|
||||
|
||||
class ArrayInput(common_rust.Array):
|
||||
pass
|
||||
|
||||
|
||||
class TypeManager(common_rust.TypeManager):
|
||||
"""Rust SDK type manager
|
||||
|
||||
@ -41,7 +45,11 @@ class TypeManager(common_rust.TypeManager):
|
||||
model.ConstraintString: String,
|
||||
}
|
||||
|
||||
data_type_mapping = {model.Struct: common_rust.Struct}
|
||||
data_type_mapping = {
|
||||
model.Struct: common_rust.Struct,
|
||||
model.Array: ArrayInput,
|
||||
model.CommaSeparatedList: ArrayInput,
|
||||
}
|
||||
|
||||
request_parameter_class: Type[common_rust.RequestParameter] = (
|
||||
common_rust.RequestParameter
|
||||
|
@ -172,7 +172,7 @@ Some({{ val }})
|
||||
{{ dst_var }}.{{ param.remote_name }}({{ val_var | replace("&", "" )}});
|
||||
|
||||
{%- elif param.data_type.__class__.__name__ in ["ArrayInput"] %}
|
||||
{{ sdk_plain_array_setter(param, val_var.replace("&", ""), dst_var) }}
|
||||
{{ sdk_plain_array_setter(param, val_var.replace("&", ""), dst_var, by_ref=by_ref) }}
|
||||
|
||||
{%- elif param.data_type.__class__.__name__ in ["JsonValue"] %}
|
||||
|
||||
@ -342,7 +342,7 @@ Some({{ val }})
|
||||
{%- endif %}
|
||||
{%- endmacro %}
|
||||
|
||||
{%- macro sdk_plain_array_setter(param, val_var, dst_var) %}
|
||||
{%- macro sdk_plain_array_setter(param, val_var, dst_var, by_ref=False) %}
|
||||
{%- set original_type = param.data_type.original_data_type %}
|
||||
{%- set original_item_type = param.data_type.item_type.original_data_type %}
|
||||
{%- if param.data_type.item_type.__class__.__name__ == "JsonValue" and original_type.__class__.__name__ == "StructInput" %}
|
||||
@ -377,7 +377,7 @@ Some({{ val }})
|
||||
{%- elif param["setter_type"] is defined %}
|
||||
{#- Param with setter present #}
|
||||
{{ dst_var }}.{{ param.remote_name }}(
|
||||
{{ val_var }}.iter()
|
||||
{{ val_var }}{{ ".iter()" if not by_ref else ".into_iter().cloned()" }}
|
||||
);
|
||||
{%- elif original_item_type and original_item_type.__class__.__name__ == "DictionaryInput" %}
|
||||
use std::collections::BTreeMap;
|
||||
|
@ -34,10 +34,9 @@ use {{ mod }};
|
||||
{%- if data_type.__class__.__name__ == "Struct" %}
|
||||
#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub struct {{ class_name }}{
|
||||
{%- for name, param in type_manager.parameters | dictsort %}
|
||||
{%- if param.location != "header" %}
|
||||
{%- for name, param in type_manager.parameters|dictsort if param.location != "header" %}
|
||||
{{ param.local_name }}: {{ param.type_hint }},
|
||||
{%- if param.local_name.endswith("id") %}
|
||||
{%- if param.local_name.endswith("id") and (param.local_name[:-2] + "name") not in type_manager.parameters.keys() %}
|
||||
{%- set param_type = False %}
|
||||
{{ param.local_name[:-2] }}name:
|
||||
{%- if param.type_hint.startswith("Option") %}
|
||||
@ -46,7 +45,6 @@ pub struct {{ class_name }}{
|
||||
Option<{{ param.type_hint }}>,
|
||||
{%- endif %}
|
||||
{%- endif %}
|
||||
{%- endif %}
|
||||
{%- endfor %}
|
||||
}
|
||||
|
||||
@ -55,16 +53,18 @@ impl fmt::Display for {{ class_name }} {
|
||||
let mut parts: Vec<String> = Vec::new();
|
||||
{%- for name, param in type_manager.parameters | dictsort %}
|
||||
{%- if param.location != "header" %}
|
||||
{%- if param.local_name.endswith("_id") %}
|
||||
{%- set alt_name = param.local_name.replace("_id", "_name") %}
|
||||
{%- if param.local_name.endswith("id") %}
|
||||
{%- set alt_name = param.local_name[:-2] + "name" %}
|
||||
{%- if param.type_hint.startswith("Option") %}
|
||||
if self.{{ param.local_name }}.is_some() || self.{{ alt_name }}.is_some() {
|
||||
parts.push(format!(
|
||||
"{{ param.local_name[:-3] }}: {}",
|
||||
"{{ param.local_name[:-3] or "name/id" }}: {}",
|
||||
self.{{ alt_name }}
|
||||
.as_ref()
|
||||
.or(self.{{ param.local_name }}.as_ref())
|
||||
.unwrap_or(&String::new())
|
||||
.unwrap_or(
|
||||
&{{ param.data_type.type_hint }}::default()
|
||||
)
|
||||
));
|
||||
}
|
||||
{% else %}
|
||||
@ -152,7 +152,15 @@ impl ConfirmableRequest for {{ class_name }} {
|
||||
fn get_confirm_message(&self) -> Option<String> {
|
||||
Some(format!(
|
||||
"Delete {{ sdk_service_name }} {{ resource_name.title() }} {} ?",
|
||||
{%- if "id" in dict(type_manager.get_parameters("path")).keys() %}
|
||||
self.name.clone().unwrap_or(self.id.clone())
|
||||
{%- else %}
|
||||
{%- for (k, v) in type_manager.get_parameters("path") %}
|
||||
{%- if k.endswith("id") %}
|
||||
self.{{ k[:-2] }}name.clone().unwrap_or(self.{{ k[:-2] }}id.clone())
|
||||
{%- endif %}
|
||||
{%- endfor %}
|
||||
{%- endif %}
|
||||
))
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user