From b7b6565ab80cb73af74fac1021cdede53dd3090d Mon Sep 17 00:00:00 2001 From: Mouaad Aallam Date: Thu, 21 Sep 2023 16:02:52 +0200 Subject: [PATCH] fix(specs): `userData` type as 'any' (#2033) --- specs/common/schemas/IndexSettings.yml | 1 - specs/search/paths/rules/common/schemas.yml | 1 - templates/dart/tests/param_value.mustache | 5 ++++- templates/java/tests/generateGenerics.mustache | 3 +-- templates/java/tests/generateParams.mustache | 5 +++++ templates/kotlin/data_class.mustache | 2 +- templates/kotlin/data_class_field_type.mustache | 2 +- templates/kotlin/tests/param_json_any.mustache | 7 +++++++ templates/kotlin/tests/param_value.mustache | 2 +- templates/php/tests/generateParams.mustache | 5 +++++ 10 files changed, 25 insertions(+), 8 deletions(-) create mode 100644 templates/kotlin/tests/param_json_any.mustache diff --git a/specs/common/schemas/IndexSettings.yml b/specs/common/schemas/IndexSettings.yml index c475ae1b57..01c34f94e0 100644 --- a/specs/common/schemas/IndexSettings.yml +++ b/specs/common/schemas/IndexSettings.yml @@ -435,7 +435,6 @@ hitsPerPage: - Pagination userData: - type: object example: {'settingID': 'f2a7b51e3503acc6a39b3784ffb84300','pluginVersion': '1.6.0'} description: Lets you store custom data in your indices. default: {} diff --git a/specs/search/paths/rules/common/schemas.yml b/specs/search/paths/rules/common/schemas.yml index 9ef27cf8b4..0824892ba4 100644 --- a/specs/search/paths/rules/common/schemas.yml +++ b/specs/search/paths/rules/common/schemas.yml @@ -86,7 +86,6 @@ consequence: required: - objectID userData: - type: object description: Custom JSON object that will be appended to the userData array in the response. This object isn't interpreted by the API. It's limited to 1kB of minified JSON. example: {'settingID': 'f2a7b51e3503acc6a39b3784ffb84300','pluginVersion': '1.6.0'} diff --git a/templates/dart/tests/param_value.mustache b/templates/dart/tests/param_value.mustache index 6f7ae8b5ef..a8bc68b26e 100644 --- a/templates/dart/tests/param_value.mustache +++ b/templates/dart/tests/param_value.mustache @@ -4,5 +4,8 @@ {{#isBoolean}}{{{value}}}{{/isBoolean}} {{#isEnum}}{{{objectName}}}.fromJson("{{value}}"){{/isEnum}} {{#isArray}}[{{#value}}{{> param_value}},{{/value}}]{{/isArray}} -{{#isFreeFormObject}}{{> param_map}}{{/isFreeFormObject}} +{{#isFreeFormObject}} +{{#isAnyType}}{ {{#value}}{{#entrySet}}'{{{key}}}' : '{{{value}}}',{{/entrySet}}}{{/value}}{{/isAnyType}} +{{^isAnyType}}{{> param_map}}{{/isAnyType}} +{{/isFreeFormObject}} {{#isObject}}{{> param_object}}{{/isObject}} \ No newline at end of file diff --git a/templates/java/tests/generateGenerics.mustache b/templates/java/tests/generateGenerics.mustache index 0ce68fb64c..cb6cf32d5d 100644 --- a/templates/java/tests/generateGenerics.mustache +++ b/templates/java/tests/generateGenerics.mustache @@ -1,2 +1 @@ -{{#isArray}}{{#value.0}}<{{#oneOfModel}}{{parentClassName}}{{/oneOfModel}}{{^oneOfModel}}{{objectName}}{{/oneOfModel}}{{> generateGenerics}}>{{/value.0}}{{/isArray}} -{{#isFreeFormObject}}{{^isSimpleObject}} generateGenerics}}{{/isAnyType}}{{/value.0}}>{{/isSimpleObject}}{{/isFreeFormObject}} \ No newline at end of file +{{#isArray}}{{#value.0}}<{{#oneOfModel}}{{parentClassName}}{{/oneOfModel}}{{^oneOfModel}}{{objectName}}{{/oneOfModel}}{{> generateGenerics}}>{{/value.0}}{{/isArray}}{{#isFreeFormObject}}{{^isSimpleObject}} generateGenerics}}{{/isAnyType}}{{/value.0}}>{{/isSimpleObject}}{{/isFreeFormObject}} \ No newline at end of file diff --git a/templates/java/tests/generateParams.mustache b/templates/java/tests/generateParams.mustache index f78ae6018d..1575340eb5 100644 --- a/templates/java/tests/generateParams.mustache +++ b/templates/java/tests/generateParams.mustache @@ -29,8 +29,13 @@ } {{/isObject}} {{#isFreeFormObject}} + {{#isAnyType}} + Map {{{key}}}{{suffix}} = Map.of({{#value}}{{#entrySet}}"{{{key}}}", "{{{value}}}"{{^-last}},{{/-last}}{{/entrySet}}{{/value}}); + {{/isAnyType}} + {{^isAnyType}} Map{{> forceMapGenerics}} {{{key}}}{{suffix}} = new HashMap<>(); { {{#value}}{{> generateParams}}{{parent}}{{parentSuffix}}.put("{{{key}}}", {{> maybeConvertOneOf}});{{/value}} } + {{/isAnyType}} {{/isFreeFormObject}} \ No newline at end of file diff --git a/templates/kotlin/data_class.mustache b/templates/kotlin/data_class.mustache index 10bc689a71..83c0c86753 100644 --- a/templates/kotlin/data_class.mustache +++ b/templates/kotlin/data_class.mustache @@ -60,7 +60,7 @@ public data class {{classname}}( override fun deserialize(decoder: Decoder): {{nameInCamelCase}} { val value = decoder.decodeSerializableValue({{{dataType}}}.serializer()) - return {{nameInCamelCase}}.values().firstOrNull { it.value == value } + return {{nameInCamelCase}}.entries.firstOrNull { it.value == value } ?: {{nameInCamelCase}}.{{#allowableValues}}{{#enumVars}}{{#-last}}{{&name}}{{/-last}}{{/enumVars}}{{/allowableValues}} } diff --git a/templates/kotlin/data_class_field_type.mustache b/templates/kotlin/data_class_field_type.mustache index d22df8dfed..dad858f1ca 100644 --- a/templates/kotlin/data_class_field_type.mustache +++ b/templates/kotlin/data_class_field_type.mustache @@ -1 +1 @@ -{{#isFreeFormObject}}JsonObject{{/isFreeFormObject}}{{^isFreeFormObject}}{{{datatypeWithEnum}}}{{/isFreeFormObject}} \ No newline at end of file +{{#isFreeFormObject}}JsonObject{{/isFreeFormObject}}{{#isAnyType}}JsonElement{{/isAnyType}}{{^isFreeFormObject}}{{^isAnyType}}{{{datatypeWithEnum}}}{{/isAnyType}}{{/isFreeFormObject}} \ No newline at end of file diff --git a/templates/kotlin/tests/param_json_any.mustache b/templates/kotlin/tests/param_json_any.mustache new file mode 100644 index 0000000000..f4d38a1902 --- /dev/null +++ b/templates/kotlin/tests/param_json_any.mustache @@ -0,0 +1,7 @@ +buildJsonObject { +{{#value}} + {{#entrySet}} + put("{{{key}}}", "{{{value}}}") + {{/entrySet}} +{{/value}} +} \ No newline at end of file diff --git a/templates/kotlin/tests/param_value.mustache b/templates/kotlin/tests/param_value.mustache index b363f59ce3..cdaf2f2368 100644 --- a/templates/kotlin/tests/param_value.mustache +++ b/templates/kotlin/tests/param_value.mustache @@ -1 +1 @@ -{{#isNull}}empty(),{{/isNull}}{{#isString}}{{#oneOfModel}}{{{parentClassName}}}.String("{{{value}}}"){{/oneOfModel}}{{^oneOfModel}}"{{{value}}}"{{/oneOfModel}},{{/isString}}{{#isInteger}}{{#oneOfModel}}{{{parentClassName}}}.Number({{{value}}}.toNumberType()){{/oneOfModel}}{{^oneOfModel}}{{{value}}}{{/oneOfModel}},{{/isInteger}}{{#isLong}}{{#oneOfModel}}{{{parentClassName}}}.Number({{{value}}}.toNumberType()){{/oneOfModel}}{{^oneOfModel}}{{{value}}}L{{/oneOfModel}},{{/isLong}}{{#isDouble}}{{#oneOfModel}}{{{parentClassName}}}.Number({{{value}}}){{/oneOfModel}}{{^oneOfModel}}{{{value}}}{{/oneOfModel}},{{/isDouble}}{{#isBoolean}}{{#oneOfModel}}{{{parentClassName}}}.Boolean({{{value}}}){{/oneOfModel}}{{^oneOfModel}}{{{value}}}{{/oneOfModel}},{{/isBoolean}}{{#isEnum}}{{{objectName}}}.values().first { it.value == "{{{value}}}" },{{/isEnum}}{{#isArray}}{{> param_list}},{{/isArray}}{{#isFreeFormObject}}{{#isSimpleObject}}{{> param_json_object}},{{/isSimpleObject}}{{^isSimpleObject}}{{> param_map}},{{/isSimpleObject}}{{/isFreeFormObject}}{{#isObject}}{{> param_object}},{{/isObject}} \ No newline at end of file +{{#isNull}}empty(),{{/isNull}}{{#isString}}{{#oneOfModel}}{{{parentClassName}}}.String("{{{value}}}"){{/oneOfModel}}{{^oneOfModel}}"{{{value}}}"{{/oneOfModel}},{{/isString}}{{#isInteger}}{{#oneOfModel}}{{{parentClassName}}}.Number({{{value}}}.toNumberType()){{/oneOfModel}}{{^oneOfModel}}{{{value}}}{{/oneOfModel}},{{/isInteger}}{{#isLong}}{{#oneOfModel}}{{{parentClassName}}}.Number({{{value}}}.toNumberType()){{/oneOfModel}}{{^oneOfModel}}{{{value}}}L{{/oneOfModel}},{{/isLong}}{{#isDouble}}{{#oneOfModel}}{{{parentClassName}}}.Number({{{value}}}){{/oneOfModel}}{{^oneOfModel}}{{{value}}}{{/oneOfModel}},{{/isDouble}}{{#isBoolean}}{{#oneOfModel}}{{{parentClassName}}}.Boolean({{{value}}}){{/oneOfModel}}{{^oneOfModel}}{{{value}}}{{/oneOfModel}},{{/isBoolean}}{{#isEnum}}{{{objectName}}}.entries.first { it.value == "{{{value}}}" },{{/isEnum}}{{#isArray}}{{> param_list}},{{/isArray}}{{#isObject}}{{> param_object}},{{/isObject}}{{#isFreeFormObject}}{{#isSimpleObject}}{{> param_json_object}},{{/isSimpleObject}}{{^isSimpleObject}}{{#isAnyType}}{{> param_json_any}},{{/isAnyType}}{{^isAnyType}}{{> param_map}},{{/isAnyType}}{{/isSimpleObject}}{{/isFreeFormObject}} \ No newline at end of file diff --git a/templates/php/tests/generateParams.mustache b/templates/php/tests/generateParams.mustache index 8466402b67..d82a30f08a 100644 --- a/templates/php/tests/generateParams.mustache +++ b/templates/php/tests/generateParams.mustache @@ -27,5 +27,10 @@ [{{#value}}{{> generateParams}}{{/value}}], {{/isObject}} {{#isFreeFormObject}} + {{#isAnyType}} + [{{#value}}{{#entrySet}}'{{{key}}}' => '{{{value}}}'{{^-last}},{{/-last}}{{/entrySet}}{{/value}}], + {{/isAnyType}} + {{^isAnyType}} [{{#value}}{{> generateParams}}{{/value}}], + {{/isAnyType}} {{/isFreeFormObject}} \ No newline at end of file