@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
JavaScript
;
/**
* 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,
};
}