import { DemoEntity } from "../../models/DemoEntity";

/**
 * @file Demo 数据源接口,定义本地 CRUD 能力。
 * @author Joker.X
 */
export interface DemoLocalDataSource {
  /**
   * 新增一条 Demo 记录
   * @param {string} title - 标题
   * @param {string} [description] - 描述
   * @returns {Promise<number>} 新建记录主键
   */
  createItem(title: string, description?: string): Promise<number>;

  /**
   * 更新 Demo 记录
   * @param {DemoEntity} entity - 待更新实体
   * @returns {Promise<void>} Promise<void>
   */
  updateItem(entity: DemoEntity): Promise<void>;

  /**
   * 按主键删除 Demo 记录
   * @param {number} id - 记录主键
   * @returns {Promise<void>} Promise<void>
   */
  deleteById(id: number): Promise<void>;

  /**
   * 清空 Demo 表
   * @returns {Promise<number>} 受影响行数
   */
  clearAll(): Promise<number>;

  /**
   * 查询全部 Demo 记录,默认按更新时间倒序
   * @returns {Promise<DemoEntity[]>} Demo 列表
   */
  getAllItems(): Promise<DemoEntity[]>;

  /**
   * 根据主键查询单条记录
   * @param {number} id - 记录主键
   * @returns {Promise<DemoEntity | undefined>} 匹配到的 Demo 或 undefined
   */
  getItemById(id: number): Promise<DemoEntity | undefined>;
}