+
+
{_t.settings?.connections_title || 'Database Connections'}
+
+
+
+ {#if screenState === "loading"}
+
+ {#each [1, 2, 3] as _}
+
+ {/each}
+
+
+ {:else if screenState === "empty" && !showForm}
+
+
{_t.settings?.connections_empty || 'No database connections configured.'}
+
{_t.settings?.connections_empty_hint || 'Add a connection to enable direct database inserts for translation jobs.'}
+
+
+
+ {:else if screenState === "populated" && !showForm}
+
+
+
+
+ | {_t.settings?.connections_name || 'Name'} |
+ {_t.settings?.connections_host || 'Host:Port'} |
+ {_t.settings?.connections_database || 'Database'} |
+ {_t.settings?.connections_dialect || 'Dialect'} |
+ {_t.settings?.connections_used_by || 'Used By'} |
+ {_t.settings?.connections_actions || 'Actions'} |
+
+
+
+ {#each connections as conn (conn.id)}
+
+ | {conn.name} |
+ {conn.host}:{conn.port} |
+ {conn.database} |
+
+
+ {conn.dialect}
+
+ |
+ {conn.used_by ?? 0} {_t.settings?.connections_used_by?.toLowerCase() || 'jobs'} |
+
+
+
+
+ |
+
+ {/each}
+
+
+
+ {/if}
+
+ {#if screenState === "delete_blocked"}
+
+
{_t.settings?.connections_delete_blocked_title || 'Cannot delete connection'}
+
{_t.settings?.connections_delete_blocked_hint?.replace('{count}', blockDeleteJobs.length) || `This connection is used by ${blockDeleteJobs.length} active job(s):`}
+ {#if blockDeleteJobs.length > 0}
+
+ {#each blockDeleteJobs as jobName}
+ - {jobName}
+ {/each}
+
+ {/if}
+
{_t.settings?.connections_delete_blocked_help || 'Detach or reassign these jobs before deleting.'}
+
+
+ {/if}
+
+ {#if showForm}
+
+
{editingId ? (_t.settings?.connections_edit_title || 'Edit Connection') : (_t.settings?.connections_add_title || 'Add Connection')}
+
+
+
+
+
+
+
+
+ {#if testResult}
+
+ {#if testResult.success}
+ ✅ {_t.settings?.connections_test_success?.replace('{latency}', testResult.latency_ms) || `Connected — ${testResult.latency_ms}ms`} · {testResult.db_version}
+ {:else}
+ ❌ {testResult.error}
+ {/if}
+
+ {/if}
+
+
+
+
+
+
+
+ {/if}
+
+
diff --git a/frontend/src/routes/settings/settings-utils.ts b/frontend/src/routes/settings/settings-utils.ts
index 83850fa4..1c19ec28 100644
--- a/frontend/src/routes/settings/settings-utils.ts
+++ b/frontend/src/routes/settings/settings-utils.ts
@@ -10,6 +10,7 @@
export const SETTINGS_TABS = [
"environments",
+ "connections",
"logging",
"git",
"llm",