/**
 * @file 用户信息仓库类
 * @description 实现用户信息相关请求
 * @author JunBin.Yang
 */
import { NetworkResult } from "@core/network";
import { User } from "@shared/types";
import { IUserInfoRepository } from "@shared/contracts";
import { UserInfoNetworkDataSource } from "./datasource/UserInfoNetworkDataSource";
import { UserInfoNetworkDataSourceImpl } from "./datasource/UserInfoNetworkDataSourceImpl";

/**
 * 用户信息仓库实现
 * 实现 shared/contracts 中定义的 IUserInfoRepository 接口
 */
export class UserInfoRepositoryImpl implements IUserInfoRepository {
  /**
   * 用户信息网络数据源
   */
  private networkDataSource: UserInfoNetworkDataSource;

  /**
   * 构造函数
   * @param {UserInfoNetworkDataSource} networkDataSource - 可选的用户信息数据源实例
   */
  constructor(networkDataSource?: UserInfoNetworkDataSource) {
    this.networkDataSource = networkDataSource ?? new UserInfoNetworkDataSourceImpl();
  }

  /**
   * 获取用户个人信息
   * @returns {Promise<NetworkResult<User>>} 用户信息响应
   */
  async getPersonInfo(): Promise<NetworkResult<User>> {
    return this.networkDataSource.getPersonInfo();
  }
}