Replaces the client and server controller implementations with generated code from the shared project.
71 lines
2.2 KiB
Plaintext
71 lines
2.2 KiB
Plaintext
<#@ template language="C#" #>
|
|
<#@ output extension=".cs" #>
|
|
<#@ assembly name="System.Core" #>
|
|
<#@ assembly name="$(SolutionDir)EstusShots.Shared/bin/Debug/netcoreapp3.1/EstusShots.Shared.dll" #>
|
|
<#@ import namespace="Shared.Interfaces" #>
|
|
<#@ import namespace="System.Linq" #>
|
|
<#
|
|
var assembly = typeof(IApiParameter).Assembly;
|
|
var types = assembly.GetTypes()
|
|
.Where(t => t.Namespace?.StartsWith("EstusShots.Shared") == true)
|
|
.ToArray();
|
|
var controllers = types
|
|
.Where(t => t.Namespace == "EstusShots.Shared.Interfaces.Controllers")
|
|
.ToArray();
|
|
#>
|
|
//------------------------------------------------------------------------------
|
|
// <auto-generated>
|
|
// This code was generated by a tool.
|
|
//
|
|
// Changes to this file may cause incorrect behavior and will be lost if
|
|
// the code is regenerated.
|
|
// </auto-generated>
|
|
//------------------------------------------------------------------------------
|
|
using System.Threading.Tasks;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.Extensions.Logging;
|
|
using EstusShots.Server.Services;
|
|
using EstusShots.Shared.Models;
|
|
using EstusShots.Shared.Models.Parameters;
|
|
using EstusShots.Shared.Interfaces.Controllers;
|
|
|
|
namespace EstusShots.Server.Controllers
|
|
{
|
|
<#
|
|
// The Controllers
|
|
foreach (var iFace in controllers)
|
|
{
|
|
var controllerName = iFace.Name.Substring(1);
|
|
var routeName = iFace.Name.Substring(1).Replace("Controller", "");
|
|
#>
|
|
[ApiController]
|
|
[Route("/api/[controller]/[action]")]
|
|
public class <#=controllerName#> : BaseController, <#=iFace.Name #>
|
|
{
|
|
private readonly <#=routeName#>Service _service;
|
|
|
|
public <#=controllerName#>(ILogger<<#=controllerName#>> logger, <#=routeName#>Service service) : base(logger)
|
|
{
|
|
_service = service;
|
|
}
|
|
|
|
<#
|
|
// The Interface Members
|
|
foreach (var member in iFace.GetMembers())
|
|
{
|
|
var responseName = $"{member.Name}Response";
|
|
var parameterName = $"{member.Name}Parameter";
|
|
#>
|
|
[HttpPost]
|
|
public async Task<ApiResponse<<#=responseName#>>> <#=member.Name#>(<#=parameterName#> parameter)
|
|
=> await ServiceCall(() => _service.<#=member.Name#>(parameter));
|
|
|
|
<#
|
|
}
|
|
#>
|
|
}
|
|
|
|
<#
|
|
}
|
|
#>
|
|
} |