namespace Dpz.Core.Service.RepositoryService;

public interface IBookmarkService
{
    /// <summary>
    /// 获取书签
    /// </summary>
    /// <returns></returns>
    Task<List<VmBookmark>> GetBookmarksAsync(string? title = null, string[]? categories = null);

    /// <summary>
    /// 搜索
    /// </summary>
    /// <param name="title"></param>
    /// <param name="categories"></param>
    /// <returns></returns>
    Task<List<string>> SearchAsync(
        string? title = null,
        IReadOnlyCollection<string>? categories = null
    );

    /// <summary>
    /// 获取书签详情
    /// </summary>
    /// <param name="id"></param>
    /// <returns></returns>
    Task<VmBookmark?> GetBookmarkAsync(string id);

    /// <summary>
    /// 获取所有分类
    /// </summary>
    /// <returns></returns>
    Task<List<string>> GetCategoriesAsync();

    /// <summary>
    /// 创建一个书签
    /// </summary>
    /// <param name="bookmark"></param>
    /// <returns></returns>
    Task CreateBookmarkAsync(VmCreateBookmark bookmark);

    /// <summary>
    /// 更新书签
    /// </summary>
    /// <param name="bookmark"></param>
    /// <returns></returns>
    Task UpdateAsync(VmUpdateBookmark bookmark);

    /// <summary>
    /// 删除书签
    /// </summary>
    /// <param name="id"></param>
    /// <param name="deleteSource"></param>
    /// <returns></returns>
    Task DeleteAsync(string id, Func<VmBookmark, Task> deleteSource);
}
⚠⚠    以下内容为AI分析的结果,请根据实际情况进行判断。

代码解释

这是一个 C# 接口定义文件,定义了书签管理服务的契约。以下是详细解释:

命名空间

namespace Dpz.Core.Service.RepositoryService;
  • 定义了接口所属的命名空间,属于 Dpz.Core.Service.RepositoryService 模块

接口定义:IBookmarkService

这是一个书签服务接口,定义了书签管理的所有核心操作,包括增删改查等功能。


方法说明

1. GetBookmarksAsync - 获取书签列表

Task<List<VmBookmark>> GetBookmarksAsync(string? title = null, string[]? categories = null);
  • 功能:查询书签列表,支持按标题和分类过滤
  • 参数
    • title: 可选的标题筛选条件
    • categories: 可选的分类数组筛选条件
  • 返回:书签视图模型列表

2. SearchAsync - 搜索书签

Task<List<string>> SearchAsync(string? title = null, IReadOnlyCollection<string>? categories = null);
  • 功能:搜索书签,返回匹配的书签ID列表
  • 参数:与 GetBookmarksAsync 类似,但 categories 使用只读集合
  • 返回:书签ID的字符串列表

3. GetBookmarkAsync - 获取单个书签详情

Task<VmBookmark?> GetBookmarkAsync(string id);
  • 功能:根据ID获取指定书签的详细信息
  • 参数id - 书签唯一标识符
  • 返回:书签对象,可能为null(如果不存在)

4. GetCategoriesAsync - 获取所有分类

Task<List<string>> GetCategoriesAsync();
  • 功能:获取系统中所有的书签分类
  • 返回:分类名称的字符串列表

5. CreateBookmarkAsync - 创建书签

Task CreateBookmarkAsync(VmCreateBookmark bookmark);
  • 功能:创建新书签
  • 参数VmCreateBookmark - 创建书签所需的视图模型

6. UpdateAsync - 更新书签

Task UpdateAsync(VmUpdateBookmark bookmark);
  • 功能:更新现有书签
  • 参数VmUpdateBookmark - 更新书签所需的视图模型

7. DeleteAsync - 删除书签

Task DeleteAsync(string id, Func<VmBookmark, Task> deleteSource);
  • 功能:删除指定书签
  • 参数
    • id - 要删除的书签ID
    • deleteSource - 回调函数,用于处理关联资源的删除(如文件、图片等)
  • 特点:支持自定义删除逻辑,增强了灵活性

设计特点

  1. 异步操作:所有方法都返回 Task,支持异步编程模型
  2. 视图模型分离:使用不同的ViewModel(VmBookmarkVmCreateBookmarkVmUpdateBookmark)实现关注点分离
  3. 可空类型:使用 ? 表示可选参数和可能为空的返回值
  4. 灵活的查询:支持多条件筛选和搜索
  5. 回调模式:删除操作提供回调函数,便于处理级联删除

这是一个设计良好的服务接口,遵循了 SOLID 原则和现代 C# 最佳实践。

评论加载中...