/// 공통 페이지네이션 결과 모델
///
/// - API 응답 형식 `{ "items": [...], "page": 1, "page_size": 20, "total": 40 }`에 대응
/// - 리스트 화면에서 페이지 정보와 총 건수를 함께 활용하기 위함
class PaginatedResult<T> {
  PaginatedResult({
    required this.items,
    required this.page,
    required this.pageSize,
    required this.total,
  });

  final List<T> items;
  final int page;
  final int pageSize;
  final int total;

  PaginatedResult<T> copyWith({
    List<T>? items,
    int? page,
    int? pageSize,
    int? total,
  }) {
    return PaginatedResult<T>(
      items: items ?? this.items,
      page: page ?? this.page,
      pageSize: pageSize ?? this.pageSize,
      total: total ?? this.total,
    );
  }
}
