"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.GetDecksByPageQueryHandler = void 0; const DeckMapper_1 = require("../../DTOs/Mappers/DeckMapper"); const AdminBypassService_1 = require("../../Services/AdminBypassService"); const Logger_1 = require("../../Services/Logger"); class GetDecksByPageQueryHandler { constructor(deckRepo) { this.deckRepo = deckRepo; } async execute(query) { try { // Validate pagination parameters if (query.from < 0 || query.to < query.from) { throw new Error('Invalid pagination parameters'); } const limit = query.to - query.from + 1; if (limit > 100) { throw new Error('Page size too large. Maximum 100 records per request'); } // Log admin bypass if applicable if (query.isAdmin) { AdminBypassService_1.AdminBypassService.logAdminBypass('GET_DECKS_PAGE_BYPASS', query.userId, 'paginated-decks', { from: query.from, to: query.to, includesDeleted: query.includeDeleted || false, operation: 'read' }); } (0, Logger_1.logRequest)('Get decks by page query started', undefined, undefined, { userId: query.userId, userOrgId: query.userOrgId, isAdmin: query.isAdmin, from: query.from, to: query.to, includeDeleted: query.includeDeleted || false }); // Use paginated filtered deck finding method const result = await this.deckRepo.findFilteredDecks(query.userId, query.userOrgId, query.isAdmin, query.from, query.to); (0, Logger_1.logRequest)('Get decks by page query completed', undefined, undefined, { userId: query.userId, userOrgId: query.userOrgId, isAdmin: query.isAdmin, from: query.from, to: query.to, returned: result.decks.length, totalCount: result.totalCount, includeDeleted: query.includeDeleted || false }); return { decks: DeckMapper_1.DeckMapper.toShortDtoList(result.decks), totalCount: result.totalCount }; } catch (error) { (0, Logger_1.logError)('GetDecksByPageQueryHandler error', error instanceof Error ? error : new Error(String(error))); // Re-throw validation errors as-is if (error instanceof Error && (error.message.includes('Invalid pagination') || error.message.includes('Page size'))) { throw error; } throw new Error('Failed to retrieve decks page'); } } } exports.GetDecksByPageQueryHandler = GetDecksByPageQueryHandler; //# sourceMappingURL=GetDecksByPageQueryHandler.js.map