refactor(data): add I*Repository interfaces and depend on them in stores
为 /src/data/repositories/ 下每个仓库类增加对应的接口契约,
接口文件存放在独立的 interfaces/ 子目录中。
改动:
- 新建 4 个接口文件 (iauth_repository / ichat_repository /
imetrics_repository / iuser_repository),纯 type-only,方法签名
与实现类完全一致
- 4 个实现类加 implements I{Name}Repository 子句,编译器自动校验契约
- 3 个 stores 文件 (auth / chat / user state machines) 改为依赖接口
类型:通过 `const xxxRepo: I{Name}Repository = xxxRepository` 局部别名,
actor 内部调用全部走别名
- barrelsby.json 加入 interfaces/ 目录,让自动 barrel 能覆盖
- Auto-regenerated repositories/index.ts 与 interfaces/index.ts
参照 storage 层已有的 IAuthStorage / IChatStorage / IUserStorage 模式。
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
"use client";
|
||||
|
||||
/**
|
||||
* IUserRepository 接口
|
||||
*
|
||||
* 对齐 Dart 端 `UserRepository` 抽象(lib/data/repositories/user_repository.dart):
|
||||
* - 纯远程调用,不直接写本地 storage(持久化由 AuthRepository 在登录流程中处理)
|
||||
*
|
||||
* 原始 Dart: lib/data/repositories/user_repository_impl.dart
|
||||
*/
|
||||
|
||||
import type { Result } from "@/utils/result";
|
||||
import type { CreditsData } from "@/data/dto/user/credits_data";
|
||||
import type { CreditsHistoryData } from "@/data/dto/user/credits_history_data";
|
||||
import type { UpdateProfileRequest } from "@/data/dto/user/update_profile_request";
|
||||
import type { User } from "@/data/dto/user/user";
|
||||
import type { UserStatsResponse } from "@/data/dto/user/user_stats_response";
|
||||
|
||||
export interface IUserRepository {
|
||||
/** 获取用户统计信息。 */
|
||||
getUserStats(): Promise<Result<UserStatsResponse>>;
|
||||
|
||||
/** 获取当前登录用户信息。 */
|
||||
getCurrentUser(): Promise<Result<User>>;
|
||||
|
||||
/** 更新个人资料。 */
|
||||
updateProfile(request: UpdateProfileRequest): Promise<Result<User>>;
|
||||
|
||||
/** 查询积分余额。 */
|
||||
getCredits(): Promise<Result<CreditsData>>;
|
||||
|
||||
/** 查询积分操作历史,分页参数默认 limit=50, offset=0。 */
|
||||
getCreditsHistory(
|
||||
limit?: number,
|
||||
offset?: number,
|
||||
): Promise<Result<CreditsHistoryData>>;
|
||||
}
|
||||
Reference in New Issue
Block a user