UNPKG

claude-flow-novice

Version:

Claude Flow Novice - Advanced orchestration platform for multi-agent AI workflows with CFN Loop architecture Includes Local RuVector Accelerator and all CFN skills for complete functionality.

120 lines (119 loc) 3.62 kB
/** * Database Error Handling Utilities * * Provides standardized error handling for database operations. * Part of Task 0.4: Database Query Abstraction Layer (MVP) */ /** * Database error codes */ export var DatabaseErrorCode = /*#__PURE__*/ function(DatabaseErrorCode) { DatabaseErrorCode["CONNECTION_FAILED"] = "DB_CONNECTION_FAILED"; DatabaseErrorCode["QUERY_FAILED"] = "DB_QUERY_FAILED"; DatabaseErrorCode["TRANSACTION_FAILED"] = "DB_TRANSACTION_FAILED"; DatabaseErrorCode["VALIDATION_FAILED"] = "DB_VALIDATION_FAILED"; DatabaseErrorCode["NOT_FOUND"] = "DB_NOT_FOUND"; DatabaseErrorCode["DUPLICATE_KEY"] = "DB_DUPLICATE_KEY"; DatabaseErrorCode["TIMEOUT"] = "DB_TIMEOUT"; DatabaseErrorCode["CONSTRAINT_VIOLATION"] = "DB_CONSTRAINT_VIOLATION"; DatabaseErrorCode["UNKNOWN_ERROR"] = "DB_UNKNOWN_ERROR"; return DatabaseErrorCode; }({}); /** * Create standardized database error */ export function createDatabaseError(code, message, originalError, context) { return { code, message, originalError, context }; } /** * Create failed operation result */ export function createFailedResult(error) { return { success: false, error }; } /** * Create successful operation result */ export function createSuccessResult(data, rowsAffected, insertId) { return { success: true, data, rowsAffected, insertId }; } /** * Wrap database operation with error handling */ export async function wrapDatabaseOperation(operation, errorCode, errorMessage, context) { try { const data = await operation(); return createSuccessResult(data); } catch (err) { const error = createDatabaseError(errorCode, errorMessage, err instanceof Error ? err : new Error(String(err)), context); return createFailedResult(error); } } /** * Check if error is a specific database error code */ export function isDatabaseError(error, code) { return error && typeof error === 'object' && error.code === code; } /** * Map SQLite error to database error code */ export function mapSQLiteError(error) { const message = error.message.toLowerCase(); if (message.includes('unique constraint')) { return "DB_DUPLICATE_KEY"; } if (message.includes('foreign key constraint')) { return "DB_CONSTRAINT_VIOLATION"; } if (message.includes('not found')) { return "DB_NOT_FOUND"; } if (message.includes('timeout')) { return "DB_TIMEOUT"; } return "DB_QUERY_FAILED"; } /** * Map PostgreSQL error to database error code */ export function mapPostgresError(error) { const code = error.code; // PostgreSQL error codes if (code === '23505') { return "DB_DUPLICATE_KEY"; } if (code === '23503') { return "DB_CONSTRAINT_VIOLATION"; } if (code === '42P01') { return "DB_NOT_FOUND"; } if (code === '57014') { return "DB_TIMEOUT"; } if (code?.startsWith('08')) { return "DB_CONNECTION_FAILED"; } return "DB_QUERY_FAILED"; } /** * Map Redis error to database error code */ export function mapRedisError(error) { const message = error.message.toLowerCase(); if (message.includes('connection')) { return "DB_CONNECTION_FAILED"; } if (message.includes('timeout')) { return "DB_TIMEOUT"; } if (message.includes('not found') || message.includes('nil')) { return "DB_NOT_FOUND"; } return "DB_QUERY_FAILED"; } //# sourceMappingURL=errors.js.map