From 73473c3df0bb03b7f3cbbbd9504846a4f2d6ad70 Mon Sep 17 00:00:00 2001 From: aaron burtle Date: Thu, 26 Mar 2026 10:26:34 -0700 Subject: [PATCH 1/2] use integer type for int in system to json map --- src/Core/Services/OpenAPI/JsonDataType.cs | 4 ++++ src/Core/Services/TypeHelper.cs | 12 ++++++------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/Core/Services/OpenAPI/JsonDataType.cs b/src/Core/Services/OpenAPI/JsonDataType.cs index f8decd0317..9487929261 100644 --- a/src/Core/Services/OpenAPI/JsonDataType.cs +++ b/src/Core/Services/OpenAPI/JsonDataType.cs @@ -35,6 +35,10 @@ public enum JsonDataType /// Boolean = 5, /// + /// A JSON integer (subset of number without a fraction or exponent part) + /// + Integer = 7, + /// /// The JSON value null /// Null = 6 diff --git a/src/Core/Services/TypeHelper.cs b/src/Core/Services/TypeHelper.cs index 40d940c807..a32a60d792 100644 --- a/src/Core/Services/TypeHelper.cs +++ b/src/Core/Services/TypeHelper.cs @@ -59,12 +59,12 @@ public static class TypeHelper { [typeof(byte)] = JsonDataType.String, [typeof(sbyte)] = JsonDataType.String, - [typeof(short)] = JsonDataType.Number, - [typeof(ushort)] = JsonDataType.Number, - [typeof(int)] = JsonDataType.Number, - [typeof(uint)] = JsonDataType.Number, - [typeof(long)] = JsonDataType.Number, - [typeof(ulong)] = JsonDataType.Number, + [typeof(short)] = JsonDataType.Integer, + [typeof(ushort)] = JsonDataType.Integer, + [typeof(int)] = JsonDataType.Integer, + [typeof(uint)] = JsonDataType.Integer, + [typeof(long)] = JsonDataType.Integer, + [typeof(ulong)] = JsonDataType.Integer, [typeof(float)] = JsonDataType.Number, [typeof(double)] = JsonDataType.Number, [typeof(decimal)] = JsonDataType.Number, From 7c52f1ce0ecc802b5b12e5b8320c849d999c8dbb Mon Sep 17 00:00:00 2001 From: aaron burtle Date: Thu, 26 Mar 2026 14:44:07 -0700 Subject: [PATCH 2/2] address comments --- src/Core/Services/TypeHelper.cs | 4 ++-- .../OpenApiDocumentor/ParameterValidationTests.cs | 2 +- .../OpenApiDocumentor/StoredProcedureGeneration.cs | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Core/Services/TypeHelper.cs b/src/Core/Services/TypeHelper.cs index a32a60d792..285e165669 100644 --- a/src/Core/Services/TypeHelper.cs +++ b/src/Core/Services/TypeHelper.cs @@ -57,8 +57,8 @@ public static class TypeHelper /// private static Dictionary _systemTypeToJsonDataTypeMap = new() { - [typeof(byte)] = JsonDataType.String, - [typeof(sbyte)] = JsonDataType.String, + [typeof(byte)] = JsonDataType.Integer, + [typeof(sbyte)] = JsonDataType.Integer, [typeof(short)] = JsonDataType.Integer, [typeof(ushort)] = JsonDataType.Integer, [typeof(int)] = JsonDataType.Integer, diff --git a/src/Service.Tests/OpenApiDocumentor/ParameterValidationTests.cs b/src/Service.Tests/OpenApiDocumentor/ParameterValidationTests.cs index 5caed5a6b9..551a7b0132 100644 --- a/src/Service.Tests/OpenApiDocumentor/ParameterValidationTests.cs +++ b/src/Service.Tests/OpenApiDocumentor/ParameterValidationTests.cs @@ -182,7 +182,7 @@ public async Task TestInputParametersForStoredProcedures() Assert.IsTrue(operation.Parameters.Any(param => param.In is ParameterLocation.Query && param.Name.Equals("id") - && param.Schema.Type.Equals("number") + && param.Schema.Type.Equals("integer") && param.Required is false)); // Parameter with default value will be an optional query parameter. diff --git a/src/Service.Tests/OpenApiDocumentor/StoredProcedureGeneration.cs b/src/Service.Tests/OpenApiDocumentor/StoredProcedureGeneration.cs index ffd5aaadde..c22ddddc2c 100644 --- a/src/Service.Tests/OpenApiDocumentor/StoredProcedureGeneration.cs +++ b/src/Service.Tests/OpenApiDocumentor/StoredProcedureGeneration.cs @@ -111,7 +111,7 @@ public void ValidateRequestBodyContents(string entityName, string[] expectedPara /// Entity to test, requires updating the CreateEntities() helper. /// Expected first result set columns /// Expected first result set column types (JSON) - [DataRow("sp1", new string[] { "id", "title", "publisher_id" }, new string[] { "number", "string", "number" }, DisplayName = "Validate response body parameters and parameter Json data types.")] + [DataRow("sp1", new string[] { "id", "title", "publisher_id" }, new string[] { "integer", "string", "integer" }, DisplayName = "Validate response body parameters and parameter Json data types.")] [DataTestMethod] public void ValidateResponseBodyContents(string entityName, string[] expectedColumns, string[] expectedColumnJsonTypes) {