import instance from './instance';

export const login = async (data: { password: string; username: string }) => {
  const response = await instance.post('/login', data);
  return response.data;
};

export const logout = async () => {
  const response = await instance.post('/logout');
  return response.data;
};

/**
 * 用户信息接口
 */
export interface UserInfo {
  /** 用户ID */
  UserID: number;
  /** 用户名 */
  Username: string;
  /** 头像URL */
  Avatar: string;
  /** 用户别名/真实姓名 */
  Alias: string;
  /** 创建时间 */
  CreatedAt: string;
  /** 更新时间 */
  UpdatedAt: string;
}

/**
 * 获取当前登录用户信息
 *
 * @returns {Promise<{code: number, data: UserInfo, message: string}>} 返回包含用户信息的响应对象
 *
 * @example
 * ```typescript
 * const userInfo = await getCurrentUser();
 * console.log(userInfo.data.Username); // 输出当前用户名
 * ```
 */
export const getCurrentUser = async () => {
  const response = await instance.get('/api/v1/users/current');
  return response.data;
};

/**
 * 获取指定用户信息
 *
 * @param {number|string} id 用户ID
 * @returns {Promise<{code: number, data: UserInfo, message: string}>} 返回包含用户信息的响应对象
 *
 * @example
 * ```typescript
 * // 获取ID为2594的用户信息
 * const userInfo = await getUserById(2594);
 * console.log(userInfo.data.Username); // 输出用户名
 * ```
 */
export const getUserById = async (id: number | string) => {
  const response = await instance.get(`/api/v1/users/${id}`);
  return response.data;
};

/**
 * 用户列表项接口
 */
export interface UserListItem {
  /** 用户ID */
  user_id: number;
  /** 用户名 */
  username: string;
  /** 头像URL */
  avatar: string;
  /** 用户别名/真实姓名 */
  alias: string;
  /** 创建时间 */
  created_at: string;
  /** 更新时间 */
  updated_at: string;
}

/**
 * 用户列表查询参数
 */
export interface UserListParams {
  /** 页码，默认1 */
  page?: number | string;
  /** 每页数量，默认20 */
  per_page?: number | string;
}

/**
 * 获取用户列表
 *
 * @param {UserListParams} params 查询参数，包含页码和每页数量
 * @returns {Promise<{code: number, data: {list: UserListItem[], total: number}, message: string}>} 返回包含用户列表的响应对象
 *
 * @example
 * ```typescript
 * // 获取第1页，每页20条记录
 * const result = await getUserList({ page: 1, per_page: 20 });
 * console.log(`总用户数: ${result.data.total}`);
 * console.log(`第一个用户: ${result.data.list[0].username}`);
 * ```
 */
export const getUserList = async (params: UserListParams = {}) => {
  const response = await instance.get('/api/v1/users', { params });
  return response.data;
};
