From 929ee231f1a8d5b2062c7963e2111b182f30216d Mon Sep 17 00:00:00 2001 From: Jakub Ratuszniak Date: Sun, 25 Jan 2026 23:26:17 +0100 Subject: [PATCH] fix(PRAC-258): fix pagination --- .../moderation/api/ModerationController.java | 20 ++++-- .../moderation/service/ModerationService.java | 7 +- .../service/ModerationServiceImpl.java | 23 ++++--- .../repository/ReportRepository.java | 8 +++ .../service/ModerationServiceSpec.groovy | 20 +++--- .../src/app/(staff)/moderator/logs/page.tsx | 2 +- .../app/(staff)/moderator/reports/page.tsx | 9 ++- .../src/app/(staff)/moderator/users/page.tsx | 2 +- .../moderation/moderation-logs-table.tsx | 3 +- .../src/features/moderation/reports-table.tsx | 68 +++++++++++++------ .../src/features/moderation/users-table.tsx | 2 +- .../moderation-controller.ts | 27 ++++---- .../src/lib/api/schemas/getAllUsers1Params.ts | 4 +- frontend/src/lib/api/schemas/getLogsParams.ts | 4 +- .../src/lib/api/schemas/getReportsParams.ts | 2 + frontend/src/lib/api/schemas/index.ts | 1 + .../api/schemas/pageReportModerationDTO.ts | 23 +++++++ .../src/lib/api/schemas/pageableObject.ts | 2 +- 18 files changed, 153 insertions(+), 74 deletions(-) create mode 100644 frontend/src/lib/api/schemas/pageReportModerationDTO.ts diff --git a/backend/src/main/java/com/codu/dev/moderation/api/ModerationController.java b/backend/src/main/java/com/codu/dev/moderation/api/ModerationController.java index fd46d6d3..fc7cb46c 100644 --- a/backend/src/main/java/com/codu/dev/moderation/api/ModerationController.java +++ b/backend/src/main/java/com/codu/dev/moderation/api/ModerationController.java @@ -7,7 +7,6 @@ import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.core.annotation.AuthenticationPrincipal; @@ -29,8 +28,10 @@ public ResponseEntity getStats() { } @GetMapping("/users") - public ResponseEntity> getAllUsers(Pageable pageable) { - return ResponseEntity.ok(moderationService.getAllUsers(pageable)); + public ResponseEntity> getAllUsers( + @RequestParam(defaultValue = "0") int page, + @RequestParam(defaultValue = "10") int size) { + return ResponseEntity.ok(moderationService.getAllUsers(page, size)); } @GetMapping("/users/blocked") @@ -70,8 +71,11 @@ public ResponseEntity deleteComment(@PathVariable UUID id, @Authentication } @GetMapping("/reports") - public ResponseEntity> getReports(@RequestParam(required = false) ReportStatus status) { - return ResponseEntity.ok(moderationService.getReports(status)); + public ResponseEntity> getReports( + @RequestParam(required = false) ReportStatus status, + @RequestParam(defaultValue = "0") int page, + @RequestParam(defaultValue = "10") int size) { + return ResponseEntity.ok(moderationService.getReports(status, page, size)); } @GetMapping("/reports/{id}") @@ -86,7 +90,9 @@ public ResponseEntity updateReportStatus(@PathVariable UUID id, @Authentic } @GetMapping("/logs") - public ResponseEntity> getLogs(Pageable pageable) { - return ResponseEntity.ok(moderationService.getModerationLogs(pageable)); + public ResponseEntity> getLogs( + @RequestParam(defaultValue = "0") int page, + @RequestParam(defaultValue = "10") int size) { + return ResponseEntity.ok(moderationService.getModerationLogs(page, size)); } } \ No newline at end of file diff --git a/backend/src/main/java/com/codu/dev/moderation/service/ModerationService.java b/backend/src/main/java/com/codu/dev/moderation/service/ModerationService.java index 2af69f80..a344d1e0 100644 --- a/backend/src/main/java/com/codu/dev/moderation/service/ModerationService.java +++ b/backend/src/main/java/com/codu/dev/moderation/service/ModerationService.java @@ -3,7 +3,6 @@ import com.codu.dev.moderation.api.dto.*; import com.codu.dev.report.enums.ReportStatus; import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; import java.util.List; import java.util.UUID; @@ -11,7 +10,7 @@ public interface ModerationService { ModerationStatsDTO getStats(); - Page getAllUsers(Pageable pageable); + Page getAllUsers(int page, int size); List getBlockedUsers(); void blockUser(UUID userId, UUID moderatorId, BlockUserRequestDTO request); void unblockUser(UUID userId, UUID moderatorId); @@ -20,9 +19,9 @@ public interface ModerationService { void deletePost(UUID postId, UUID moderatorId, String reason); void deleteComment(UUID commentId, UUID moderatorId, String reason); - List getReports(ReportStatus status); + Page getReports(ReportStatus status, int page, int size); ReportModerationDTO getReport(UUID reportId); void updateReportStatus(UUID reportId, UUID moderatorId, UpdateReportStatusRequestDTO request); - Page getModerationLogs(Pageable pageable); + Page getModerationLogs(int page, int size); } \ No newline at end of file diff --git a/backend/src/main/java/com/codu/dev/moderation/service/ModerationServiceImpl.java b/backend/src/main/java/com/codu/dev/moderation/service/ModerationServiceImpl.java index 48b94c72..cce404b0 100644 --- a/backend/src/main/java/com/codu/dev/moderation/service/ModerationServiceImpl.java +++ b/backend/src/main/java/com/codu/dev/moderation/service/ModerationServiceImpl.java @@ -14,7 +14,7 @@ import com.codu.dev.report.infra.persistence.repository.ReportRepository; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.PageRequest; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -42,8 +42,8 @@ public ModerationStatsDTO getStats() { } @Override - public Page getAllUsers(Pageable pageable) { - return userRepository.findAll(pageable).map(moderationMapper::toUserDTO); + public Page getAllUsers(int page, int size) { + return userRepository.findAll(PageRequest.of(page, size)).map(moderationMapper::toUserDTO); } @Override @@ -112,12 +112,13 @@ public void deleteComment(UUID commentId, UUID moderatorId, String reason) { } @Override - public List getReports(ReportStatus status) { - List reports = (status == null) - ? reportRepository.findAllByIsDeletedFalse() - : reportRepository.findAllByStatusAndIsDeletedFalseOrderByCreatedAtDesc(status); - - return reports.stream().map(moderationMapper::toReportDTO).toList(); + public Page getReports(ReportStatus status, int page, int size) { + PageRequest pageable = PageRequest.of(page, size); + Page reports = (status == null) + ? reportRepository.findAllByIsDeletedFalseOrderByCreatedAtDesc(pageable) + : reportRepository.findAllByStatusAndIsDeletedFalseOrderByCreatedAtDesc(status, pageable); + + return reports.map(moderationMapper::toReportDTO); } @Override @@ -147,8 +148,8 @@ public void updateReportStatus(UUID reportId, UUID moderatorId, UpdateReportStat } @Override - public Page getModerationLogs(Pageable pageable) { - return moderationLogRepository.findAllByOrderByCreatedAtDesc(pageable).map(moderationMapper::toLogDTO); + public Page getModerationLogs(int page, int size) { + return moderationLogRepository.findAllByOrderByCreatedAtDesc(PageRequest.of(page, size)).map(moderationMapper::toLogDTO); } private User findUserById(UUID id) { diff --git a/backend/src/main/java/com/codu/dev/report/infra/persistence/repository/ReportRepository.java b/backend/src/main/java/com/codu/dev/report/infra/persistence/repository/ReportRepository.java index 717c978f..42c0755b 100644 --- a/backend/src/main/java/com/codu/dev/report/infra/persistence/repository/ReportRepository.java +++ b/backend/src/main/java/com/codu/dev/report/infra/persistence/repository/ReportRepository.java @@ -2,6 +2,8 @@ import com.codu.dev.report.enums.ReportStatus; import com.codu.dev.report.infra.persistence.entity.Report; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.EntityGraph; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @@ -22,6 +24,12 @@ public interface ReportRepository extends JpaRepository { @EntityGraph(attributePaths = {"user", "reporter", "post", "comment", "reviewedBy"}) List findAllByStatusAndIsDeletedFalseOrderByCreatedAtDesc(ReportStatus status); + @EntityGraph(attributePaths = {"user", "reporter", "post", "comment", "reviewedBy"}) + Page findAllByIsDeletedFalseOrderByCreatedAtDesc(Pageable pageable); + + @EntityGraph(attributePaths = {"user", "reporter", "post", "comment", "reviewedBy"}) + Page findAllByStatusAndIsDeletedFalseOrderByCreatedAtDesc(ReportStatus status, Pageable pageable); + long countByStatusAndIsDeletedFalse(ReportStatus status); long countByIsDeletedFalse(); diff --git a/backend/src/test/groovy/com/codu/dev/moderation/service/ModerationServiceSpec.groovy b/backend/src/test/groovy/com/codu/dev/moderation/service/ModerationServiceSpec.groovy index f219ed4e..08aea2ee 100644 --- a/backend/src/test/groovy/com/codu/dev/moderation/service/ModerationServiceSpec.groovy +++ b/backend/src/test/groovy/com/codu/dev/moderation/service/ModerationServiceSpec.groovy @@ -76,7 +76,7 @@ class ModerationServiceSpec extends Specification { moderationMapper.toUserDTO(user) >> userDto when: "getting all users" - def result = moderationService.getAllUsers(pageable) + def result = moderationService.getAllUsers(0, 10) then: "paginated users are returned" result.content.size() == 1 @@ -256,32 +256,36 @@ class ModerationServiceSpec extends Specification { def "should get all reports without status filter"() { given: "reports exist" + def pageable = PageRequest.of(0, 10) def report = Report.builder().id(UUID.randomUUID()).reasonContent("Spam").build() + def reportPage = new PageImpl<>([report], pageable, 1) def reportDto = Mock(ReportModerationDTO) - reportRepository.findAllByIsDeletedFalse() >> [report] + reportRepository.findAllByIsDeletedFalseOrderByCreatedAtDesc(pageable) >> reportPage moderationMapper.toReportDTO(report) >> reportDto when: "getting all reports" - def result = moderationService.getReports(null) + def result = moderationService.getReports(null, 0, 10) then: "all reports are returned" - result.size() == 1 + result.content.size() == 1 } def "should get reports filtered by status"() { given: "pending reports exist" + def pageable = PageRequest.of(0, 10) def report = Report.builder().id(UUID.randomUUID()).status(ReportStatus.PENDING).build() + def reportPage = new PageImpl<>([report], pageable, 1) def reportDto = Mock(ReportModerationDTO) - reportRepository.findAllByStatusAndIsDeletedFalseOrderByCreatedAtDesc(ReportStatus.PENDING) >> [report] + reportRepository.findAllByStatusAndIsDeletedFalseOrderByCreatedAtDesc(ReportStatus.PENDING, pageable) >> reportPage moderationMapper.toReportDTO(report) >> reportDto when: "getting pending reports" - def result = moderationService.getReports(ReportStatus.PENDING) + def result = moderationService.getReports(ReportStatus.PENDING, 0, 10) then: "pending reports are returned" - result.size() == 1 + result.content.size() == 1 } def "should get single report by id"() { @@ -383,7 +387,7 @@ class ModerationServiceSpec extends Specification { moderationMapper.toLogDTO(log) >> logDto when: "getting logs" - def result = moderationService.getModerationLogs(pageable) + def result = moderationService.getModerationLogs(0, 50) then: "paginated logs are returned" result.content.size() == 1 diff --git a/frontend/src/app/(staff)/moderator/logs/page.tsx b/frontend/src/app/(staff)/moderator/logs/page.tsx index 55de5291..6ceeeae2 100644 --- a/frontend/src/app/(staff)/moderator/logs/page.tsx +++ b/frontend/src/app/(staff)/moderator/logs/page.tsx @@ -2,7 +2,7 @@ import { ModerationLogsTable } from "@/features/moderation/moderation-logs-table import { getLogs } from "@/lib/api/moderation-controller/moderation-controller"; export default async function AuditLogsPage() { - const response = await getLogs({ pageable: { page: 0, size: 10 } }); + const response = await getLogs({ page: 0, size: 10 }); const pageData = response.data; return ( diff --git a/frontend/src/app/(staff)/moderator/reports/page.tsx b/frontend/src/app/(staff)/moderator/reports/page.tsx index b4b1e64f..b04a7162 100644 --- a/frontend/src/app/(staff)/moderator/reports/page.tsx +++ b/frontend/src/app/(staff)/moderator/reports/page.tsx @@ -1,9 +1,12 @@ import { ReportsTable } from "@/features/moderation/reports-table"; import { getReports } from "@/lib/api/moderation-controller/moderation-controller"; +const PAGE_SIZE = 10; + export default async function ModeratorReportsPage() { - const response = await getReports(); - const reports = response.data; + const response = await getReports({ page: 0, size: PAGE_SIZE }); + const reports = response.data?.content ?? []; + const totalPages = response.data?.totalPages ?? 1; return (
@@ -12,7 +15,7 @@ export default async function ModeratorReportsPage() {

Review and resolve user reports.

- + ); } diff --git a/frontend/src/app/(staff)/moderator/users/page.tsx b/frontend/src/app/(staff)/moderator/users/page.tsx index 88a5a638..f6dd41e7 100644 --- a/frontend/src/app/(staff)/moderator/users/page.tsx +++ b/frontend/src/app/(staff)/moderator/users/page.tsx @@ -2,7 +2,7 @@ import { UsersTable } from "@/features/moderation/users-table"; import { getAllUsers1 as getAllUsers } from "@/lib/api/moderation-controller/moderation-controller"; export default async function ModeratorUsersPage() { - const response = await getAllUsers({ pageable: { page: 0, size: 10 } }); + const response = await getAllUsers({ page: 0, size: 10 }); const pageData = response.data; return ( diff --git a/frontend/src/features/moderation/moderation-logs-table.tsx b/frontend/src/features/moderation/moderation-logs-table.tsx index c8c9a3c6..a9db9444 100644 --- a/frontend/src/features/moderation/moderation-logs-table.tsx +++ b/frontend/src/features/moderation/moderation-logs-table.tsx @@ -32,7 +32,8 @@ export function ModerationLogsTable({ const [currentPage, setCurrentPage] = useState(0); const { data: logsResponse, isFetching } = useGetLogs({ - pageable: { page: currentPage, size: PAGE_SIZE } + page: currentPage, + size: PAGE_SIZE }); const logs = logsResponse?.data?.content ?? initialLogs; diff --git a/frontend/src/features/moderation/reports-table.tsx b/frontend/src/features/moderation/reports-table.tsx index f75a0cd8..549797e6 100644 --- a/frontend/src/features/moderation/reports-table.tsx +++ b/frontend/src/features/moderation/reports-table.tsx @@ -8,6 +8,7 @@ import { useNotificationContext } from "@/features/notifications/notification-pr import { Button } from "@/features/ui/button"; import { Input } from "@/features/ui/input"; import { Modal } from "@/features/ui/modal"; +import { PaginationBar } from "@/features/ui/pagination-bar"; import { SegmentedControl } from "@/features/ui/segmented-control"; import { Table, @@ -18,14 +19,20 @@ import { TableRow } from "@/features/ui/table"; import { Tag } from "@/features/ui/tag"; -import { updateReportStatus } from "@/lib/api/moderation-controller/moderation-controller"; +import { + updateReportStatus, + useGetReports +} from "@/lib/api/moderation-controller/moderation-controller"; import { ReportModerationDTO, ReportModerationDTOStatus as ReportStatus } from "@/lib/api/schemas"; +const PAGE_SIZE = 10; + interface ReportsTableProps { initialReports: ReportModerationDTO[]; + initialTotalPages: number; } interface ModalState { @@ -33,10 +40,13 @@ interface ModalState { newStatus: ReportStatus | null; } -export function ReportsTable({ initialReports }: ReportsTableProps) { +export function ReportsTable({ + initialReports, + initialTotalPages +}: ReportsTableProps) { const { pushToast } = useNotificationContext(); - const [reports, setReports] = useState(initialReports); const [filter, setFilter] = useState("ALL"); + const [currentPage, setCurrentPage] = useState(0); const [modalState, setModalState] = useState({ report: null, newStatus: null @@ -44,9 +54,31 @@ export function ReportsTable({ initialReports }: ReportsTableProps) { const [resolutionNotes, setResolutionNotes] = useState(""); const [isLoading, setIsLoading] = useState(false); - const filteredReports = reports.filter( - (r) => filter === "ALL" || r.status === filter - ); + const { + data: reportsResponse, + isFetching, + refetch + } = useGetReports({ + status: filter === "ALL" ? undefined : filter, + page: currentPage, + size: PAGE_SIZE + }); + + const reports = reportsResponse?.data?.content ?? initialReports; + const totalPages = reportsResponse?.data?.totalPages ?? initialTotalPages; + + const handlePrevious = () => { + setCurrentPage((prev) => Math.max(prev - 1, 0)); + }; + + const handleNext = () => { + setCurrentPage((prev) => prev + 1); + }; + + const handleFilterChange = (newFilter: ReportStatus | "ALL") => { + setFilter(newFilter); + setCurrentPage(0); + }; const openModal = (report: ReportModerationDTO, status: ReportStatus) => { setResolutionNotes(""); @@ -67,17 +99,7 @@ export function ReportsTable({ initialReports }: ReportsTableProps) { status: modalState.newStatus, resolutionNotes: resolutionNotes || undefined }); - setReports((prev) => - prev.map((r) => - r.id === modalState.report?.id - ? { - ...r, - status: modalState.newStatus!, - resolutionNotes: resolutionNotes || r.resolutionNotes - } - : r - ) - ); + refetch(); pushToast({ type: "success", message: `Report marked as ${modalState.newStatus}` @@ -119,7 +141,7 @@ export function ReportsTable({ initialReports }: ReportsTableProps) { @@ -135,7 +157,7 @@ export function ReportsTable({ initialReports }: ReportsTableProps) { - {filteredReports.map((report) => ( + {reports.map((report) => (
@@ -200,6 +222,14 @@ export function ReportsTable({ initialReports }: ReportsTableProps) { + + ,signal?: AbortSignal ) => { @@ -237,7 +238,7 @@ export const getGetAllUsers1QueryKey = (params?: GetAllUsers1Params,) => { } -export const getGetAllUsers1QueryOptions = >, TError = unknown>(params: GetAllUsers1Params, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +export const getGetAllUsers1QueryOptions = >, TError = unknown>(params?: GetAllUsers1Params, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} ) => { const {query: queryOptions, request: requestOptions} = options ?? {}; @@ -260,7 +261,7 @@ export type GetAllUsers1QueryError = unknown export function useGetAllUsers1>, TError = unknown>( - params: GetAllUsers1Params, options: { query:Partial>, TError, TData>> & Pick< + params: undefined | GetAllUsers1Params, options: { query:Partial>, TError, TData>> & Pick< DefinedInitialDataOptions< Awaited>, TError, @@ -270,7 +271,7 @@ export function useGetAllUsers1> , queryClient?: QueryClient ): DefinedUseQueryResult & { queryKey: DataTag } export function useGetAllUsers1>, TError = unknown>( - params: GetAllUsers1Params, options?: { query?:Partial>, TError, TData>> & Pick< + params?: GetAllUsers1Params, options?: { query?:Partial>, TError, TData>> & Pick< UndefinedInitialDataOptions< Awaited>, TError, @@ -280,12 +281,12 @@ export function useGetAllUsers1> , queryClient?: QueryClient ): UseQueryResult & { queryKey: DataTag } export function useGetAllUsers1>, TError = unknown>( - params: GetAllUsers1Params, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + params?: GetAllUsers1Params, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} , queryClient?: QueryClient ): UseQueryResult & { queryKey: DataTag } export function useGetAllUsers1>, TError = unknown>( - params: GetAllUsers1Params, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + params?: GetAllUsers1Params, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} , queryClient?: QueryClient ): UseQueryResult & { queryKey: DataTag } { @@ -468,7 +469,7 @@ export const getReports = ( ) => { - return customMutator( + return customMutator( {url: `/api/moderation/reports`, method: 'GET', params, signal }, @@ -626,7 +627,7 @@ export function useGetReport>, TErr export const getLogs = ( - params: GetLogsParams, + params?: GetLogsParams, options?: SecondParameter,signal?: AbortSignal ) => { @@ -644,7 +645,7 @@ export const getGetLogsQueryKey = (params?: GetLogsParams,) => { } -export const getGetLogsQueryOptions = >, TError = unknown>(params: GetLogsParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +export const getGetLogsQueryOptions = >, TError = unknown>(params?: GetLogsParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} ) => { const {query: queryOptions, request: requestOptions} = options ?? {}; @@ -667,7 +668,7 @@ export type GetLogsQueryError = unknown export function useGetLogs>, TError = unknown>( - params: GetLogsParams, options: { query:Partial>, TError, TData>> & Pick< + params: undefined | GetLogsParams, options: { query:Partial>, TError, TData>> & Pick< DefinedInitialDataOptions< Awaited>, TError, @@ -677,7 +678,7 @@ export function useGetLogs>, TError = , queryClient?: QueryClient ): DefinedUseQueryResult & { queryKey: DataTag } export function useGetLogs>, TError = unknown>( - params: GetLogsParams, options?: { query?:Partial>, TError, TData>> & Pick< + params?: GetLogsParams, options?: { query?:Partial>, TError, TData>> & Pick< UndefinedInitialDataOptions< Awaited>, TError, @@ -687,12 +688,12 @@ export function useGetLogs>, TError = , queryClient?: QueryClient ): UseQueryResult & { queryKey: DataTag } export function useGetLogs>, TError = unknown>( - params: GetLogsParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + params?: GetLogsParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} , queryClient?: QueryClient ): UseQueryResult & { queryKey: DataTag } export function useGetLogs>, TError = unknown>( - params: GetLogsParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + params?: GetLogsParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} , queryClient?: QueryClient ): UseQueryResult & { queryKey: DataTag } { diff --git a/frontend/src/lib/api/schemas/getAllUsers1Params.ts b/frontend/src/lib/api/schemas/getAllUsers1Params.ts index 7f1e5dd6..08c40634 100644 --- a/frontend/src/lib/api/schemas/getAllUsers1Params.ts +++ b/frontend/src/lib/api/schemas/getAllUsers1Params.ts @@ -4,8 +4,8 @@ * OpenAPI definition * OpenAPI spec version: v0 */ -import type { Pageable } from './pageable'; export type GetAllUsers1Params = { -pageable: Pageable; +page?: number; +size?: number; }; diff --git a/frontend/src/lib/api/schemas/getLogsParams.ts b/frontend/src/lib/api/schemas/getLogsParams.ts index 963692cf..23c3b730 100644 --- a/frontend/src/lib/api/schemas/getLogsParams.ts +++ b/frontend/src/lib/api/schemas/getLogsParams.ts @@ -4,8 +4,8 @@ * OpenAPI definition * OpenAPI spec version: v0 */ -import type { Pageable } from './pageable'; export type GetLogsParams = { -pageable: Pageable; +page?: number; +size?: number; }; diff --git a/frontend/src/lib/api/schemas/getReportsParams.ts b/frontend/src/lib/api/schemas/getReportsParams.ts index 3ed3cd13..d9918b8b 100644 --- a/frontend/src/lib/api/schemas/getReportsParams.ts +++ b/frontend/src/lib/api/schemas/getReportsParams.ts @@ -8,4 +8,6 @@ import type { GetReportsStatus } from './getReportsStatus'; export type GetReportsParams = { status?: GetReportsStatus; +page?: number; +size?: number; }; diff --git a/frontend/src/lib/api/schemas/index.ts b/frontend/src/lib/api/schemas/index.ts index 2b72d8f1..63e9ac4a 100644 --- a/frontend/src/lib/api/schemas/index.ts +++ b/frontend/src/lib/api/schemas/index.ts @@ -119,6 +119,7 @@ export * from './orderResponseDTOCurrencyCode'; export * from './orderResponseDTOOrderStatus'; export * from './pageGroupPageResponseDTO'; export * from './pageModerationLogDTO'; +export * from './pageReportModerationDTO'; export * from './pageTaskCommentResponseDTO'; export * from './pageUserModerationDTO'; export * from './pageable'; diff --git a/frontend/src/lib/api/schemas/pageReportModerationDTO.ts b/frontend/src/lib/api/schemas/pageReportModerationDTO.ts new file mode 100644 index 00000000..0c7f1f34 --- /dev/null +++ b/frontend/src/lib/api/schemas/pageReportModerationDTO.ts @@ -0,0 +1,23 @@ +/** + * Generated by orval v7.11.2 🍺 + * Do not edit manually. + * OpenAPI definition + * OpenAPI spec version: v0 + */ +import type { PageableObject } from './pageableObject'; +import type { ReportModerationDTO } from './reportModerationDTO'; +import type { SortObject } from './sortObject'; + +export interface PageReportModerationDTO { + totalPages?: number; + totalElements?: number; + pageable?: PageableObject; + numberOfElements?: number; + size?: number; + content?: ReportModerationDTO[]; + number?: number; + sort?: SortObject; + first?: boolean; + last?: boolean; + empty?: boolean; +} diff --git a/frontend/src/lib/api/schemas/pageableObject.ts b/frontend/src/lib/api/schemas/pageableObject.ts index 924ce8a1..cbf3ec0c 100644 --- a/frontend/src/lib/api/schemas/pageableObject.ts +++ b/frontend/src/lib/api/schemas/pageableObject.ts @@ -8,9 +8,9 @@ import type { SortObject } from './sortObject'; export interface PageableObject { unpaged?: boolean; + pageNumber?: number; paged?: boolean; pageSize?: number; - pageNumber?: number; offset?: number; sort?: SortObject; }