66 lines
2.9 KiB
JavaScript
66 lines
2.9 KiB
JavaScript
"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
|