"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.GetUsersByPageQueryHandler = void 0; const UserMapper_1 = require("../../DTOs/Mappers/UserMapper"); const Logger_1 = require("../../Services/Logger"); class GetUsersByPageQueryHandler { constructor(userRepo) { this.userRepo = userRepo; } 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'); } (0, Logger_1.logRequest)('Get users by page query started', undefined, undefined, { from: query.from, to: query.to, includeDeleted: query.includeDeleted || false }); const result = query.includeDeleted ? await this.userRepo.findByPageIncludingDeleted(query.from, query.to) : await this.userRepo.findByPage(query.from, query.to); (0, Logger_1.logRequest)('Get users by page query completed', undefined, undefined, { from: query.from, to: query.to, returned: result.users.length, totalCount: result.totalCount, includeDeleted: query.includeDeleted || false }); return { users: UserMapper_1.UserMapper.toShortDtoList(result.users), totalCount: result.totalCount }; } catch (error) { (0, Logger_1.logError)('GetUsersByPageQueryHandler error', error instanceof Error ? error : new Error(String(error))); // Handle database errors if (error instanceof Error && error.message.includes('database')) { throw new Error('Database connection 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 users'); } } } exports.GetUsersByPageQueryHandler = GetUsersByPageQueryHandler; //# sourceMappingURL=GetUsersByPageQueryHandler.js.map