Refactor BooksController routes and method signatures for improved clarity and consistency

This commit is contained in:
2025-11-13 20:22:33 +00:00
parent 0ba1a24b4e
commit 79f0d2632b

View File

@@ -64,7 +64,7 @@ public class BooksController(MarechaiContext context) : ControllerBase
}) })
.ToListAsync(); .ToListAsync();
[HttpGet] [HttpGet("{id:long}")]
[AllowAnonymous] [AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)] [ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -86,18 +86,19 @@ public class BooksController(MarechaiContext context) : ControllerBase
}) })
.FirstOrDefaultAsync(); .FirstOrDefaultAsync();
[HttpPost] [HttpPut("{id:long}")]
[Authorize(Roles = "Admin,UberAdmin")] [Authorize(Roles = "Admin,UberAdmin")]
[ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)] [ProducesResponseType(StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status404NotFound)] [ProducesResponseType(StatusCodes.Status404NotFound)]
[ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status401Unauthorized)]
public async Task<ActionResult> UpdateAsync(BookDto dto) public async Task<ActionResult> UpdateAsync(long id, [FromBody] BookDto dto)
{ {
string userId = User.FindFirstValue(ClaimTypes.Sid); string userId = User.FindFirstValue(ClaimTypes.Sid);
if(userId is null) return Unauthorized(); if(userId is null) return Unauthorized();
Book model = await context.Books.FindAsync(dto.Id);
Book model = await context.Books.FindAsync(id);
if(model is null) return NotFound(); if(model is null) return NotFound();
@@ -121,11 +122,11 @@ public class BooksController(MarechaiContext context) : ControllerBase
[ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)] [ProducesResponseType(StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status401Unauthorized)]
public async Task<long> CreateAsync(BookDto dto) public async Task<ActionResult<long>> CreateAsync([FromBody] BookDto dto)
{ {
string userId = User.FindFirstValue(ClaimTypes.Sid); string userId = User.FindFirstValue(ClaimTypes.Sid);
if(userId is null) return 0; if(userId is null) return Unauthorized();
var model = new Book var model = new Book
{ {
@@ -147,14 +148,14 @@ public class BooksController(MarechaiContext context) : ControllerBase
return model.Id; return model.Id;
} }
[HttpGet] [HttpGet("{id:long}/synopsis")]
[AllowAnonymous] [AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)] [ProducesResponseType(StatusCodes.Status400BadRequest)]
public async Task<string> GetSynopsisTextAsync(int id) => public async Task<string> GetSynopsisTextAsync(long id) =>
(await context.Books.FirstOrDefaultAsync(d => d.Id == id))?.Synopsis; (await context.Books.FirstOrDefaultAsync(d => d.Id == id))?.Synopsis;
[HttpDelete] [HttpDelete("{id:long}")]
[Authorize(Roles = "Admin,UberAdmin")] [Authorize(Roles = "Admin,UberAdmin")]
[ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)] [ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -165,6 +166,7 @@ public class BooksController(MarechaiContext context) : ControllerBase
string userId = User.FindFirstValue(ClaimTypes.Sid); string userId = User.FindFirstValue(ClaimTypes.Sid);
if(userId is null) return Unauthorized(); if(userId is null) return Unauthorized();
Book item = await context.Books.FindAsync(id); Book item = await context.Books.FindAsync(id);
if(item is null) return NotFound(); if(item is null) return NotFound();