Modified API returned data format to ditch use of GenericResponse wrapper
This commit is contained in:
@ -2,9 +2,9 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using System.Net;
|
||||
using YABA.API.ViewModels;
|
||||
using YABA.API.ViewModels.Bookmarks;
|
||||
using YABA.API.ViewModels.Tags;
|
||||
using YABA.Common.DTOs.Bookmarks;
|
||||
using YABA.Common.DTOs.Tags;
|
||||
using YABA.Service.Interfaces;
|
||||
|
||||
namespace YABA.API.Controllers
|
||||
@ -13,15 +13,17 @@ namespace YABA.API.Controllers
|
||||
[Authorize, Route("api/v{version:apiVersion}/[controller]")]
|
||||
public class BookmarksController : ControllerBase
|
||||
{
|
||||
private readonly IMapper _mapper;
|
||||
private readonly IBookmarkService _bookmarkService;
|
||||
|
||||
public BookmarksController(IBookmarkService bookmarkService)
|
||||
public BookmarksController(IMapper mapper, IBookmarkService bookmarkService)
|
||||
{
|
||||
_mapper = mapper;
|
||||
_bookmarkService = bookmarkService;
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
[ProducesResponseType(typeof(GenericResponse<CreateBookmarkRequestDTO>), (int)HttpStatusCode.OK)]
|
||||
[ProducesResponseType(typeof(BookmarkResponse), (int)HttpStatusCode.Created)]
|
||||
[ProducesResponseType((int)HttpStatusCode.BadRequest)]
|
||||
public async Task<IActionResult> Create([FromBody] CreateBookmarkRequestDTO request)
|
||||
{
|
||||
@ -29,92 +31,94 @@ namespace YABA.API.Controllers
|
||||
|
||||
var result = await _bookmarkService.CreateBookmark(request);
|
||||
|
||||
if(!result.IsSuccessful) return BadRequest(new GenericResponse<CreateBookmarkRequestDTO>(result));
|
||||
if(result == null) return BadRequest();
|
||||
|
||||
return Ok(new GenericResponse<CreateBookmarkRequestDTO>(result));
|
||||
return CreatedAtAction(nameof(Create), _mapper.Map<BookmarkResponse>(result));
|
||||
}
|
||||
|
||||
[HttpPost("{id}/Tags")]
|
||||
[ProducesResponseType(typeof(IEnumerable<GenericResponse<string>>),(int)HttpStatusCode.OK)]
|
||||
[ProducesResponseType(typeof(IEnumerable<TagResponse>),(int)HttpStatusCode.OK)]
|
||||
[ProducesResponseType((int)HttpStatusCode.NotFound)]
|
||||
public async Task<IActionResult> UpdateBookmarkTags(int id, [FromBody] UpdateBookmarkTagRequest request)
|
||||
{
|
||||
if (request.Tags == null) return BadRequest();
|
||||
if (request.Tags == null || !request.Tags.Any()) return BadRequest();
|
||||
|
||||
var result = await _bookmarkService.UpdateBookmarkTags(id, request.Tags);
|
||||
|
||||
if (result.All(x => !x.IsSuccessful)) return NotFound();
|
||||
if (result == null) return NotFound();
|
||||
|
||||
return Ok(result.Select(x => new GenericResponse<string>(x)));
|
||||
return Ok(_mapper.Map<IEnumerable<TagResponse>>(result));
|
||||
}
|
||||
|
||||
[HttpPut("{id}")]
|
||||
[ProducesResponseType(typeof(GenericResponse<UpdateBookmarkRequestDTO>), (int)HttpStatusCode.OK)]
|
||||
[ProducesResponseType(typeof(BookmarkResponse), (int)HttpStatusCode.OK)]
|
||||
[ProducesResponseType((int)HttpStatusCode.NotFound)]
|
||||
public async Task<IActionResult> UpdateBookmark(int id, [FromBody] UpdateBookmarkRequestDTO request)
|
||||
{
|
||||
// TODO: Add support for HTTP PATCH
|
||||
var result = await _bookmarkService.UpdateBookmark(id, request);
|
||||
|
||||
if (!result.IsSuccessful) return NotFound();
|
||||
if (result == null) return NotFound();
|
||||
|
||||
return Ok(new GenericResponse<UpdateBookmarkRequestDTO>(result));
|
||||
return Ok(_mapper.Map<BookmarkResponse>(result));
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
[ProducesResponseType(typeof(GenericResponse<IEnumerable<BookmarkDTO>>), (int)HttpStatusCode.OK)]
|
||||
[ProducesResponseType(typeof(IEnumerable<BookmarkResponse>), (int)HttpStatusCode.OK)]
|
||||
public IActionResult GetAll()
|
||||
{
|
||||
var result = _bookmarkService.GetAll();
|
||||
return Ok(new GenericResponse<IEnumerable<BookmarkDTO>>(result));
|
||||
return Ok(_mapper.Map<IEnumerable<BookmarkResponse>>(result));
|
||||
}
|
||||
|
||||
[HttpGet("{id}")]
|
||||
[ProducesResponseType(typeof(GenericResponse<BookmarkDTO>), (int)HttpStatusCode.OK)]
|
||||
[ProducesResponseType(typeof(BookmarkResponse), (int)HttpStatusCode.OK)]
|
||||
[ProducesResponseType((int)HttpStatusCode.NotFound)]
|
||||
public async Task<IActionResult> Get(int id)
|
||||
{
|
||||
var result = await _bookmarkService.Get(id);
|
||||
|
||||
if (!result.IsSuccessful) return NotFound();
|
||||
if (result == null) return NotFound();
|
||||
|
||||
return Ok(new GenericResponse<BookmarkDTO>(result));
|
||||
return Ok(_mapper.Map<BookmarkResponse>(result));
|
||||
}
|
||||
|
||||
[HttpGet("{id}/Tags")]
|
||||
[ProducesResponseType(typeof(GenericResponse<IEnumerable<TagSummaryDTO>>), (int)HttpStatusCode.OK)]
|
||||
[ProducesResponseType(typeof(IEnumerable<TagResponse>), (int)HttpStatusCode.OK)]
|
||||
[ProducesResponseType((int)HttpStatusCode.NotFound)]
|
||||
public IActionResult GetBookmarkTags(int id)
|
||||
{
|
||||
var result = _bookmarkService.GetBookmarkTags(id);
|
||||
|
||||
if (!result.IsSuccessful) return NotFound();
|
||||
if (result == null) return NotFound();
|
||||
|
||||
return Ok(new GenericResponse<IEnumerable<TagSummaryDTO>>(result));
|
||||
return Ok(_mapper.Map<IEnumerable<TagResponse>>(result));
|
||||
}
|
||||
|
||||
[HttpDelete("{id}")]
|
||||
[ProducesResponseType(typeof(GenericResponse<int>), (int)HttpStatusCode.OK)]
|
||||
[ProducesResponseType((int)HttpStatusCode.NoContent)]
|
||||
[ProducesResponseType((int)HttpStatusCode.NotFound)]
|
||||
public async Task<IActionResult> Delete(int id)
|
||||
{
|
||||
var result = await _bookmarkService.DeleteBookmark(id);
|
||||
|
||||
if (!result.IsSuccessful) return NotFound();
|
||||
if (!result.HasValue) return NotFound();
|
||||
|
||||
return Ok(new GenericResponse<int>(result));
|
||||
return NoContent();
|
||||
}
|
||||
|
||||
[HttpDelete]
|
||||
[ProducesResponseType(typeof(IEnumerable<GenericResponse<int>>), (int)HttpStatusCode.OK)]
|
||||
[ProducesResponseType((int)HttpStatusCode.NoContent)]
|
||||
[ProducesResponseType((int)HttpStatusCode.NotFound)]
|
||||
public async Task<IActionResult> DeleteBookmarks([FromBody] DeleteBookmarksRequest request)
|
||||
{
|
||||
{
|
||||
if (request.Ids == null || !request.Ids.Any()) return BadRequest();
|
||||
|
||||
var result = await _bookmarkService.DeleteBookmarks(request.Ids);
|
||||
|
||||
if(result.All(x => !x.IsSuccessful)) return NotFound();
|
||||
if(result == null) return NotFound();
|
||||
|
||||
return Ok(result.Select((x) => new GenericResponse<int>(x)));
|
||||
return NoContent();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user