import { DemoEntity } from "../models/DemoEntity";
import { DemoLocalDataSource } from "./datasource/DemoLocalDataSource";
import { DemoLocalDataSourceImpl } from "./datasource/DemoLocalDataSourceImpl";
import { IDemoRepository } from "./IDemoRepository";
/**
* @file Demo 仓库,衔接业务层与本地数据库。
* @author Joker.X
*/
export class DemoRepositoryImpl implements IDemoRepository {
/**
* Demo 本地数据源
*/
private demoLocalDataSource: DemoLocalDataSource;
/**
* 构造函数,支持注入自定义数据源(便于测试)
* @param {DemoLocalDataSource} [localDataSource] - 可选的本地数据源
*/
constructor(localDataSource?: DemoLocalDataSource) {
this.demoLocalDataSource = localDataSource ?? new DemoLocalDataSourceImpl();
}
/**
* 创建 Demo 记录
* @param {string} title - 标题
* @param {string} description - 描述
* @returns {Promise<number>} 新建记录主键
*/
async createDemo(title: string, description: string = ""): Promise<number> {
return this.demoLocalDataSource.createItem(title, description);
}
/**
* 更新 Demo 记录
* @param {DemoEntity} entity - 待更新的实体
* @returns {Promise<void>} Promise<void>
*/
async updateDemo(entity: DemoEntity): Promise<void> {
return this.demoLocalDataSource.updateItem(entity);
}
/**
* 删除指定 ID 的 Demo 记录
* @param {number} id - 记录主键
* @returns {Promise<void>} Promise<void>
*/
async deleteDemo(id: number): Promise<void> {
return this.demoLocalDataSource.deleteById(id);
}
/**
* 清空全部 Demo 记录
* @returns {Promise<number>} 受影响行数
*/
async clearAll(): Promise<number> {
return this.demoLocalDataSource.clearAll();
}
/**
* 获取所有 Demo 记录,按更新时间倒序
* @returns {Promise<DemoEntity[]>} Demo 列表
*/
async getAll(): Promise<DemoEntity[]> {
return this.demoLocalDataSource.getAllItems();
}
/**
* 根据主键查询单条 Demo 记录
* @param {number} id - 记录主键
* @returns {Promise<DemoEntity | undefined>} 匹配到的记录或 undefined
*/
async getById(id: number): Promise<DemoEntity | undefined> {
return this.demoLocalDataSource.getItemById(id);
}
}