import { TRPCError } from "@trpc/server"; export const WEB_IMPORT_SOURCE_SAVE_ERROR = "Impossible d’enregistrer le connecteur. Vérifiez les informations saisies puis réessayez."; /** * Masque toute erreur Drizzle/MySQL avant son retour au navigateur : les erreurs * de pilote peuvent contenir la requête SQL et les paramètres de connexion. */ export function getSafeWebImportSourceError(_error: unknown): TRPCError { return new TRPCError({ code: "INTERNAL_SERVER_ERROR", message: WEB_IMPORT_SOURCE_SAVE_ERROR, }); } /** Extrait uniquement le code du pilote, sans conserver son message ni ses paramètres. */ export function getWebImportSourceTechnicalCode(error: unknown): string { if (!error || typeof error !== "object") return "unknown"; const directCode = "code" in error && typeof error.code === "string" ? error.code : null; if (directCode) return directCode; const cause = "cause" in error ? error.cause : null; if (cause && typeof cause === "object" && "code" in cause && typeof cause.code === "string") { return cause.code; } return "unknown"; } /** Journalise uniquement les métadonnées techniques non sensibles. */ export function logWebImportSourceSaveFailure(error: unknown): void { const technicalCode = getWebImportSourceTechnicalCode(error); console.error("[WebImportSources] Échec d’enregistrement", { technicalCode }); }