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(); } }