using Microsoft.AspNetCore.Mvc;
using MyHomePage.Api.Common;
using MyHomePage.Api.Models.Dtos;
using MyHomePage.Api.Services;
namespace MyHomePage.Api.Controllers;
/// 链接收藏。
[ApiController]
[Route("api/bookmarks")]
public class BookmarksController : ControllerBase
{
private readonly IBookmarkService _service;
public BookmarksController(IBookmarkService service) => _service = service;
/// 获取链接列表,可按分类过滤
[HttpGet]
public async Task>> List([FromQuery] int? categoryId = null) =>
await ApiResponse>.OkListAsync(_service.ListAsync(categoryId));
/// 根据 ID 获取链接
[HttpGet("{id:int}")]
public async Task> GetById(int id)
{
var dto = await _service.GetByIdAsync(id)
?? throw new BusinessException("链接不存在", 404);
return ApiResponse.Ok(dto);
}
/// 创建链接
[HttpPost]
public async Task> Create([FromBody] BookmarkUpsertRequest request) =>
ApiResponse.Ok(await _service.CreateAsync(request));
/// 更新链接
[HttpPut("{id:int}")]
public async Task> Update(int id, [FromBody] BookmarkUpsertRequest request) =>
ApiResponse.Ok(await _service.UpdateAsync(id, request));
/// 删除链接(软删)
[HttpDelete("{id:int}")]
public async Task Delete(int id)
{
await _service.DeleteAsync(id);
return ApiResponse.Ok();
}
}