38 lines
1.4 KiB
TypeScript
38 lines
1.4 KiB
TypeScript
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 });
|
||
}
|