using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Koogle.Application.DTOs
{
///
/// Ergebnis einer paginierten Abfrage.
///
/// Typ der Ergebnisse.
public record PagedResultDto
{
///
/// Die Ergebnisse der aktuellen Seite.
///
public IReadOnlyList Items { get; init; } = [];
///
/// Gesamtanzahl der Ergebnisse (über alle Seiten).
///
public int TotalCount { get; init; }
///
/// Aktuelle Seitennummer.
///
public int Page { get; init; }
///
/// Anzahl der Einträge pro Seite.
///
public int PageSize { get; init; }
///
/// Gesamtanzahl der Seiten.
///
public int TotalPages => PageSize > 0 ? (int)Math.Ceiling((double)TotalCount / PageSize) : 0;
///
/// Gibt an, ob es eine vorherige Seite gibt.
///
public bool HasPreviousPage => Page > 1;
///
/// Gibt an, ob es eine nächste Seite gibt.
///
public bool HasNextPage => Page < TotalPages;
}
}