Skip to content

Commit

Permalink
Fix [AsParameter] usage (#2980)
Browse files Browse the repository at this point in the history
Fix incorrect types being generated with use of `[AsParameter]`.
  • Loading branch information
jgarciadelanoceda committed Jul 11, 2024
1 parent 1d99754 commit 3330982
Show file tree
Hide file tree
Showing 7 changed files with 418 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -407,7 +407,7 @@ private OpenApiOperation GenerateOpenApiOperationFromMetadata(ApiDescription api
if (apiParameter is not null)
{
parameter.Schema = GenerateSchema(
apiParameter.ModelMetadata.ModelType,
apiParameter.Type,
schemaRepository,
apiParameter.PropertyInfo(),
apiParameter.ParameterInfo(),
Expand Down Expand Up @@ -568,9 +568,19 @@ private OpenApiParameter GenerateParameterWithoutFilter(

var isRequired = apiParameter.IsRequiredParameter();

var schema = (apiParameter.ModelMetadata != null)
var type = apiParameter.Type;

if (type is not null
&& type == typeof(string)
&& apiParameter.ModelMetadata?.ModelType is not null
&& apiParameter.ModelMetadata.ModelType != type)
{
type = apiParameter.ModelMetadata.ModelType;
}

var schema = (type != null)
? GenerateSchema(
apiParameter.ModelMetadata.ModelType,
type,
schemaRepository,
apiParameter.PropertyInfo(),
apiParameter.ParameterInfo(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,128 @@
}
}
},
"/annotations/AsParameters": {
"get": {
"tags": [
"Annotations"
],
"parameters": [
{
"name": "paramOne",
"in": "query",
"description": "Description",
"schema": {
"type": "string",
"format": "uuid"
}
},
{
"name": "paramTwo",
"in": "query",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
},
{
"name": "paramThree",
"in": "query",
"schema": {
"type": "string",
"format": "date-time"
}
},
{
"name": "paramFour",
"in": "query",
"required": true,
"schema": {
"type": "string",
"format": "date-time"
}
},
{
"name": "paramFive",
"in": "query",
"schema": {
"type": "string",
"format": "date"
}
},
{
"name": "paramSix",
"in": "query",
"required": true,
"schema": {
"type": "string",
"format": "date"
}
},
{
"name": "paramSeven",
"in": "query",
"schema": {
"type": "string",
"format": "time"
}
},
{
"name": "paramEight",
"in": "query",
"required": true,
"schema": {
"type": "string",
"format": "time"
}
},
{
"name": "paramNine",
"in": "query",
"schema": {
"$ref": "#/components/schemas/DateTimeKind"
}
},
{
"name": "paramTen",
"in": "query",
"required": true,
"schema": {
"$ref": "#/components/schemas/DateTimeKind"
}
},
{
"name": "paramEleven",
"in": "query",
"schema": {
"type": "number",
"format": "double"
}
},
{
"name": "paramTwelve",
"in": "query",
"required": true,
"schema": {
"type": "number",
"format": "double"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AsParametersRecord"
}
}
}
}
}
}
},
"/WithOpenApi/weatherforecast": {
"get": {
"tags": [
Expand Down Expand Up @@ -266,6 +388,72 @@
},
"additionalProperties": false
},
"AsParametersRecord": {
"type": "object",
"properties": {
"paramOne": {
"type": "string",
"format": "uuid",
"nullable": true
},
"paramTwo": {
"type": "string",
"format": "uuid"
},
"paramThree": {
"type": "string",
"format": "date-time",
"nullable": true
},
"paramFour": {
"type": "string",
"format": "date-time"
},
"paramFive": {
"type": "string",
"format": "date",
"nullable": true
},
"paramSix": {
"type": "string",
"format": "date"
},
"paramSeven": {
"type": "string",
"format": "time",
"nullable": true
},
"paramEight": {
"type": "string",
"format": "time"
},
"paramNine": {
"$ref": "#/components/schemas/DateTimeKind"
},
"paramTen": {
"$ref": "#/components/schemas/DateTimeKind"
},
"paramEleven": {
"type": "number",
"format": "double",
"nullable": true
},
"paramTwelve": {
"type": "number",
"format": "double"
}
},
"additionalProperties": false
},
"DateTimeKind": {
"enum": [
0,
1,
2
],
"type": "integer",
"format": "int32"
},
"Fruit": {
"type": "object",
"properties": {
Expand Down
Loading

0 comments on commit 3330982

Please sign in to comment.