import type { AdminReviewResponseDto } from '@/api/generated/models' import { getAdminReviews } from '@/api/generated/admin-reviews/admin-reviews' import { parseRemittanceList } from '@/helpers/listResponse' import { errorResult, handleServiceError, type ServiceCallOptions, type ServiceResult, shouldBubbleErrorToParent, successResult, } from '@/services/errorHandler' export type AdminEventReview = AdminReviewResponseDto const adminReviewsApi = getAdminReviews() export const EVENT_REVIEWS_PAGE_SIZE = 10 /** Admin list for one event — includes published, hidden, and deleted reviews. */ export const LIST_ADMIN_EVENT_REVIEWS_PAGE = async ( eventId: string, page = 1, pageSize = EVENT_REVIEWS_PAGE_SIZE, options?: ServiceCallOptions ): Promise> => { try { const res = await adminReviewsApi.adminReviewsControllerList({ sort: '-createdAt', page, pageSize, 'filters[eventId]': eventId, }) const parsed = parseRemittanceList(res.data, 'items', page, pageSize) return successResult({ items: parsed.items, page: parsed.pagination.page, totalItemsCount: parsed.pagination.totalItemsCount, totalPages: parsed.pagination.totalPages ?? 0, }) } catch (error) { const normalizedError = handleServiceError(error, options) if (shouldBubbleErrorToParent(options)) throw normalizedError return errorResult(normalizedError) } }