UNPKG

@kenniy/godeye-data-contracts

Version:

Enterprise-grade base repository architecture for GOD-EYE microservices with zero overhead and maximum code reuse

57 lines (56 loc) 2.11 kB
"use strict"; /** * Shared Bulk Operations Utility (DRY) * Eliminates duplication between Repository and BaseTransactionRepository */ Object.defineProperty(exports, "__esModule", { value: true }); exports.executeBulkOperations = executeBulkOperations; const response_types_1 = require("../types/response.types"); /** * Execute bulk operations using any repository implementation * @param operations - Array of bulk operations to execute * @param repository - Repository instance with create/update/delete methods * @returns Promise resolving to bulk operation results */ async function executeBulkOperations(operations, repository) { const results = []; const errors = []; let success_count = 0; let error_count = 0; for (const operation of operations) { try { let result; switch (operation.operation) { case response_types_1.BulkOperationType.CREATE: result = await repository.create(operation.data); break; case response_types_1.BulkOperationType.UPDATE: if (!operation.where) { throw new Error('Update operation requires where clause'); } result = await repository.update(operation.where, operation.data); break; case response_types_1.BulkOperationType.DELETE: if (!operation.where) { throw new Error('Delete operation requires where clause'); } result = await repository.delete(operation.where); break; default: throw new Error(`Unsupported operation: ${operation.operation}`); } results.push(result); success_count++; } catch (error) { errors.push(error instanceof Error ? error.message : String(error)); error_count++; } } return { success_count, error_count, results, errors, }; }