/**
 * 分页处理助手
 * 统一分页逻辑，确保各页面分页行为一致性
 */

import type { PaginationProps } from "@pureadmin/table";

/**
 * 初始化分页配置
 */
export function initPagination(): PaginationProps {
  return {
    total: 0,
    pageSize: 10,
    currentPage: 1,
    background: true,
    pageSizes: [10, 20, 50, 100],
    layout: "total, sizes, prev, pager, next, jumper"
  };
}

/**
 * 处理分页大小变化
 * @param val 新的分页大小
 * @param pagination 分页对象引用
 * @param onSearch 搜索函数
 */
export function handlePageSizeChange(
  val: number,
  pagination: PaginationProps,
  onSearch: () => void
): void {
  pagination.pageSize = val;
  pagination.currentPage = 1; // 页码大小改变时重置到第一页
  onSearch();
}

/**
 * 处理当前页码变化
 * @param val 新的页码
 * @param pagination 分页对象引用
 * @param onSearch 搜索函数
 */
export function handleCurrentPageChange(
  val: number,
  pagination: PaginationProps,
  onSearch: () => void
): void {
  pagination.currentPage = val;
  onSearch();
}

/**
 * 重置分页状态
 * @param pagination 分页对象引用
 * @param onSearch 搜索函数
 */
export function resetPagination(
  pagination: PaginationProps,
  onSearch: () => void
): void {
  pagination.currentPage = 1;
  pagination.pageSize = 10;
  onSearch();
}

/**
 * 更新分页数据
 * @param pagination 分页对象引用
 * @param data 后端返回的数据
 */
export function updatePaginationData(
  pagination: PaginationProps,
  data: { list: any[]; total: number }
): void {
  pagination.total = Number(data.total) || 0;
}