From 3eb5ed1069248f347365e9c2f2013a860a56bc2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B7=E7=94=B5=E8=8A=BD=E8=A1=A3?= Date: Thu, 16 Apr 2026 22:59:51 -0400 Subject: [PATCH] perf(db): fetch single row in getConnector instead of readConnectors+find (P1-27) --- src/main/database/connectors-crud.ts | 41 ++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 3 deletions(-) diff --git a/src/main/database/connectors-crud.ts b/src/main/database/connectors-crud.ts index 9a5ec51f..d3b71960 100644 --- a/src/main/database/connectors-crud.ts +++ b/src/main/database/connectors-crud.ts @@ -80,9 +80,44 @@ export function buildConnectorMethods( }, getConnector(id: ConnectorId): ConnectorRecord { - const record = readConnectors().find((entry) => entry.id === id); - if (!record) throw new Error(`Connector not found: ${id}`); - return record; + const row = getDb() + .prepare( + "select id, label, description, status, command, version, auth_state, last_checked_at, last_error, model, env_binding_text, notes from connectors where id = ?", + ) + .get(id) as + | { + id: string; + label: string; + description: string; + status: ConnectorRecord["status"]; + command: string; + version: string | null; + auth_state: ConnectorRecord["authState"]; + last_checked_at: string | null; + last_error: string | null; + model: string | null; + env_binding_text: string; + notes: string; + } + | undefined; + if (!row) throw new Error(`Connector not found: ${id}`); + const definition = getConnectorDefinition(row.id as ConnectorId); + return { + id: row.id as ConnectorId, + label: row.label, + description: row.description, + status: row.status, + command: normalizeCommandValue(row.command), + version: row.version, + authState: row.auth_state, + lastCheckedAt: row.last_checked_at, + lastError: row.last_error, + model: row.model, + envBindingText: row.env_binding_text, + notes: row.notes, + configurationDoc: definition.configurationDoc, + capabilityMatrix: definition.capabilityMatrix, + }; }, seedConnectors() {