mirror of
https://github.com/C9Glax/tranga.git
synced 2025-10-14 17:30:45 +02:00
37 lines
1.4 KiB
C#
37 lines
1.4 KiB
C#
using API.Controllers.DTOs;
|
|
using API.Schema.MangaContext;
|
|
using Asp.Versioning;
|
|
using Microsoft.AspNetCore.Http.HttpResults;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Soenneker.Utils.String.NeedlemanWunsch;
|
|
using static Microsoft.AspNetCore.Http.StatusCodes;
|
|
using Author = API.Controllers.DTOs.Author;
|
|
using Chapter = API.Controllers.DTOs.Chapter;
|
|
|
|
// ReSharper disable InconsistentNaming
|
|
|
|
namespace API.Controllers;
|
|
|
|
[ApiVersion(2)]
|
|
[ApiController]
|
|
[Route("v{v:apiVersion}/")]
|
|
public class QueryController(MangaContext context) : Controller
|
|
{
|
|
/// <summary>
|
|
/// Returns the <see cref="Author"/> with <paramref name="AuthorId"/>
|
|
/// </summary>
|
|
/// <param name="AuthorId"><see cref="Author"/>.Key</param>
|
|
/// <response code="200"></response>
|
|
/// <response code="404"><see cref="Author"/> with <paramref name="AuthorId"/> not found</response>
|
|
[HttpGet("Author/{AuthorId}")]
|
|
[ProducesResponseType<Author>(Status200OK, "application/json")]
|
|
[ProducesResponseType<string>(Status404NotFound, "text/plain")]
|
|
public async Task<Results<Ok<Author>, NotFound<string>>> GetAuthor (string AuthorId)
|
|
{
|
|
if (await context.Authors.FirstOrDefaultAsync(a => a.Key == AuthorId, HttpContext.RequestAborted) is not { } author)
|
|
return TypedResults.NotFound(nameof(AuthorId));
|
|
|
|
return TypedResults.Ok(new Author(author.Key, author.AuthorName));
|
|
}
|
|
} |