From 46c3cc0336aefce051267058f834fb0608c10539 Mon Sep 17 00:00:00 2001 From: deepchoudhery Date: Mon, 8 May 2023 15:11:30 -0700 Subject: [PATCH] pluralizing model name in minimalapi scenarios using humanizer --- eng/Versions.props | 1 + .../VS.Web.CG.Mvc/Templates/MinimalApi/MinimalApi.cshtml | 2 +- .../VS.Web.CG.Mvc/Templates/MinimalApi/MinimalApiEf.cshtml | 2 +- .../Templates/MinimalApi/MinimalApiEfNoClass.cshtml | 2 +- .../Templates/MinimalApi/MinimalApiNoClass.cshtml | 2 +- .../Microsoft.DotNet.Scaffolding.Shared.csproj | 7 +++---- .../Project/ModelType.cs | 2 ++ 7 files changed, 10 insertions(+), 8 deletions(-) diff --git a/eng/Versions.props b/eng/Versions.props index 0bec00168c..7979eadfef 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -80,6 +80,7 @@ 6.0.0-preview.3.21166.3 13.0.1 6.3.1 + 2.14.1 diff --git a/src/Scaffolding/VS.Web.CG.Mvc/Templates/MinimalApi/MinimalApi.cshtml b/src/Scaffolding/VS.Web.CG.Mvc/Templates/MinimalApi/MinimalApi.cshtml index daf359683b..828c2c89e3 100644 --- a/src/Scaffolding/VS.Web.CG.Mvc/Templates/MinimalApi/MinimalApi.cshtml +++ b/src/Scaffolding/VS.Web.CG.Mvc/Templates/MinimalApi/MinimalApi.cshtml @@ -6,7 +6,7 @@ string routePrefix = "/api/" + modelName; string endPointsClassName = Model.EndpointsName; string methodName = $"Map{@modelName}Endpoints"; - string pluralModel = $"{@modelName}s"; + string pluralModel = Model.ModelType.PluralName; string getAllModels = $"GetAll{@pluralModel}"; string getModelById = $"Get{@modelName}ById"; string deleteModel = $"Delete{@modelName}"; diff --git a/src/Scaffolding/VS.Web.CG.Mvc/Templates/MinimalApi/MinimalApiEf.cshtml b/src/Scaffolding/VS.Web.CG.Mvc/Templates/MinimalApi/MinimalApiEf.cshtml index a0ea6cb632..97d7d21f8a 100644 --- a/src/Scaffolding/VS.Web.CG.Mvc/Templates/MinimalApi/MinimalApiEf.cshtml +++ b/src/Scaffolding/VS.Web.CG.Mvc/Templates/MinimalApi/MinimalApiEf.cshtml @@ -5,7 +5,7 @@ string routePrefix = "/api/" + modelName; string endPointsClassName = Model.EndpointsName; string methodName = $"Map{@modelName}Endpoints"; - string pluralModel = $"{@modelName}s"; + string pluralModel = Model.ModelType.PluralName; string getAllModels = $"GetAll{@pluralModel}"; string getModelById = $"Get{@modelName}ById"; string deleteModel = $"Delete{@modelName}"; diff --git a/src/Scaffolding/VS.Web.CG.Mvc/Templates/MinimalApi/MinimalApiEfNoClass.cshtml b/src/Scaffolding/VS.Web.CG.Mvc/Templates/MinimalApi/MinimalApiEfNoClass.cshtml index 7635a034c6..ed57f8b590 100644 --- a/src/Scaffolding/VS.Web.CG.Mvc/Templates/MinimalApi/MinimalApiEfNoClass.cshtml +++ b/src/Scaffolding/VS.Web.CG.Mvc/Templates/MinimalApi/MinimalApiEfNoClass.cshtml @@ -4,7 +4,7 @@ string routePrefix = "/api/" + modelName; string endPointsClassName = Model.EndpointsName; string methodName = $"Map{@modelName}Endpoints"; - string pluralModel = $"{@modelName}s"; + string pluralModel = Model.ModelType.PluralName; string getAllModels = $"GetAll{@pluralModel}"; string getModelById = $"Get{@modelName}ById"; string deleteModel = $"Delete{@modelName}"; diff --git a/src/Scaffolding/VS.Web.CG.Mvc/Templates/MinimalApi/MinimalApiNoClass.cshtml b/src/Scaffolding/VS.Web.CG.Mvc/Templates/MinimalApi/MinimalApiNoClass.cshtml index b3e269d453..bb2cd5d282 100644 --- a/src/Scaffolding/VS.Web.CG.Mvc/Templates/MinimalApi/MinimalApiNoClass.cshtml +++ b/src/Scaffolding/VS.Web.CG.Mvc/Templates/MinimalApi/MinimalApiNoClass.cshtml @@ -6,7 +6,7 @@ string routePrefix = "/api/" + modelName; string endPointsClassName = Model.EndpointsName; string methodName = $"Map{@modelName}Endpoints"; - string pluralModel = $"{@modelName}s"; + string pluralModel = Model.ModelType.PluralName; string getAllModels = $"GetAll{@pluralModel}"; string getModelById = $"Get{@modelName}ById"; string deleteModel = $"Delete{@modelName}"; diff --git a/src/Shared/Microsoft.DotNet.Scaffolding.Shared/Microsoft.DotNet.Scaffolding.Shared.csproj b/src/Shared/Microsoft.DotNet.Scaffolding.Shared/Microsoft.DotNet.Scaffolding.Shared.csproj index 7d20ce34ab..d1cd297e48 100644 --- a/src/Shared/Microsoft.DotNet.Scaffolding.Shared/Microsoft.DotNet.Scaffolding.Shared.csproj +++ b/src/Shared/Microsoft.DotNet.Scaffolding.Shared/Microsoft.DotNet.Scaffolding.Shared.csproj @@ -22,11 +22,10 @@ - - + - + True @@ -41,5 +40,5 @@ MessageStrings.Designer.cs - + diff --git a/src/Shared/Microsoft.DotNet.Scaffolding.Shared/Project/ModelType.cs b/src/Shared/Microsoft.DotNet.Scaffolding.Shared/Project/ModelType.cs index b4a6104184..4faed9430a 100644 --- a/src/Shared/Microsoft.DotNet.Scaffolding.Shared/Project/ModelType.cs +++ b/src/Shared/Microsoft.DotNet.Scaffolding.Shared/Project/ModelType.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using System; +using Humanizer; using Microsoft.CodeAnalysis; namespace Microsoft.DotNet.Scaffolding.Shared.Project @@ -14,6 +15,7 @@ public class ModelType public string FullName { get; set; } + public string PluralName => Name?.Pluralize(inputIsKnownToBeSingular: false); // Violating the principle that ModelType should be decoupled from Roslyn's API. // I had to do this for editing DbContext scenarios but I need to figure out if there // is a better way.