From 753d8c4ab161fbec49992b67d36bd29ccd269168 Mon Sep 17 00:00:00 2001 From: fcarraUniSa Date: Tue, 23 Dec 2025 10:35:29 +0100 Subject: [PATCH] Update storage.ts --- services/storage.ts | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/services/storage.ts b/services/storage.ts index f6b200f..77df467 100644 --- a/services/storage.ts +++ b/services/storage.ts @@ -13,10 +13,15 @@ export const generateSQL = (template: EmailTemplate): string => { const subject = template.subject.replace(/'/g, "''"); const vars = JSON.stringify(template.variables).replace(/'/g, "''"); const key = generateTemplateKey(template.name); + const name = template.name.replace(/'/g, "''"); + const desc = (template.description || '').replace(/'/g, "''"); return `INSERT INTO email_templates (id, template_key, name, description, subject, header_html, body_html, footer_html, full_html, required_variables) -VALUES ('${template.id}', '${key}', '${template.name.replace(/'/g, "''")}', '${template.description?.replace(/'/g, "''") || ''}', '${subject}', '${header}', '${body}', '${footer}', '${fullHtml}', '${vars}') +VALUES ('${template.id}', '${key}', '${name}', '${desc}', '${subject}', '${header}', '${body}', '${footer}', '${fullHtml}', '${vars}') ON DUPLICATE KEY UPDATE + template_key = VALUES(template_key), + name = VALUES(name), + description = VALUES(description), subject = VALUES(subject), header_html = VALUES(header_html), body_html = VALUES(body_html), @@ -36,23 +41,19 @@ export const generateN8nCode = (template: EmailTemplate): string => { return `// Nodo Code n8n - Popolatore Template // 1. Assicurati che il nodo precedente (SQL) restituisca 'full_html' e 'subject'. -// 2. Aggiusta il percorso (item.json.full_html) se l'output del tuo nodo SQL รจ diverso. for (const item of items) { const templateHtml = item.json.full_html; const templateSubject = item.json.subject; - // Definisci qui i tuoi dati dinamici const replacements = { -${hasVars ? varsMap : ' // Nessuna variabile rilevata in questo template'} +${hasVars ? varsMap : ' // Nessuna variabile rilevata'} }; let finalHtml = templateHtml; let finalSubject = templateSubject; - // Esegui sostituzione for (const [key, value] of Object.entries(replacements)) { - // Sostituisce {{key}} globalmente nell'HTML e nell'Oggetto const regex = new RegExp('{{' + key + '}}', 'g'); finalHtml = finalHtml.replace(regex, value); if (finalSubject) { @@ -60,7 +61,6 @@ ${hasVars ? varsMap : ' // Nessuna variabile rilevata in questo template'} } } - // Output del contenuto processato item.json.processed_html = finalHtml; item.json.processed_subject = finalSubject; } @@ -68,7 +68,7 @@ ${hasVars ? varsMap : ' // Nessuna variabile rilevata in questo template'} return items;`; }; -// Async API calls to replace synchronous localStorage +// Async API calls export const getTemplates = async (): Promise => { try { const response = await fetch('/api/templates'); @@ -91,8 +91,8 @@ export const saveTemplate = async (template: EmailTemplate): Promise => { }); if (!response.ok) { - const error = await response.json(); - throw new Error(error.message || 'Salvataggio fallito'); + const errorData = await response.json(); + throw new Error(errorData.details || errorData.error || 'Salvataggio fallito'); } } catch (e) { console.error("Fallito il salvataggio del template", e);