LCOV - code coverage report
Current view: top level - dashql-app/src/connections - connection_import.ts Coverage Total Hit
Test: DashQL 915828b Lines: 100.0 % 56 56
Test Date: 2026-11-06 19:30:32

            Line data    Source code
       1              : import * as dashql from '@ankoh/dashql-core';
       2              : import * as connection from '@ankoh/dashql-jsonschema/connection.js';
       3              : 
       4              : import { ConnectionStateDetailsVariant } from './connection_state_details.js';
       5              : import { LoggableException } from '../platform/logger/logger.js';
       6              : import { CONNECTOR_INFOS, ConnectorInfo, ConnectorType, HYPER_CONNECTOR, SALESFORCE_DATA_CLOUD_CONNECTOR, SIDB_CONNECTOR, TRINO_CONNECTOR } from './connector_info.js';
       7              : import { ConnectionState, createConnectionState } from './connection_state.js';
       8              : import type { ConnectionParams } from './connection_params.js';
       9            1 : const LOG_CTX = "connection";
      10              : 
      11            1 : export function decodeConnectionFromProto(conn: connection.Connection, sessionId: string): [ConnectorInfo, ConnectionStateDetailsVariant] {
      12            1 :     if ('salesforce' in conn) {
      13            1 :         const info: ConnectorInfo = CONNECTOR_INFOS[ConnectorType.SALESFORCE_DATA_CLOUD];
      14              :         // Storage persists ConnectionParams (flat SalesforceConnectionParams),
      15              :         // not the Details wrapper. Normalize so proto.setupParams is populated.
      16            1 :         const sf = conn.salesforce as any;
      17            1 :         const proto = sf?.setupParams
      18            1 :             ? sf
      19            1 :             : { setupTimings: {}, setupParams: sf ?? {} };
      20              :         const details: ConnectionStateDetailsVariant = {
      21            1 :             type: SALESFORCE_DATA_CLOUD_CONNECTOR,
      22            1 :             value: {
      23            1 :                 proto,
      24            1 :                 channel: null,
      25            1 :             }
      26              :         };
      27            1 :         return [info, details];
      28            1 :     } else if ('sidb' in conn) {
      29            1 :         const info: ConnectorInfo = CONNECTOR_INFOS[ConnectorType.SIDB];
      30            1 :         const sidb = conn.sidb as any;
      31            1 :         const proto = sidb?.setupParams
      32            1 :             ? sidb
      33            1 :             : { setupTimings: {}, setupParams: sidb ?? {} };
      34              :         const details: ConnectionStateDetailsVariant = {
      35            1 :             type: SIDB_CONNECTOR,
      36            1 :             value: {
      37            1 :                 proto,
      38            1 :                 channel: null,
      39            1 :             }
      40              :         };
      41            1 :         return [info, details];
      42            1 :     } else if ('hyper' in conn) {
      43            1 :         const info: ConnectorInfo = CONNECTOR_INFOS[ConnectorType.HYPER];
      44            1 :         const hy = conn.hyper as any;
      45            1 :         const proto = hy?.setupParams
      46            1 :             ? hy
      47            1 :             : { setupTimings: {}, setupParams: hy ?? {} };
      48              :         const details: ConnectionStateDetailsVariant = {
      49            1 :             type: HYPER_CONNECTOR,
      50            1 :             value: {
      51            1 :                 proto,
      52            1 :                 channel: null,
      53            1 :             }
      54              :         };
      55            1 :         return [info, details];
      56            1 :     } else if ('trino' in conn) {
      57            1 :         const info: ConnectorInfo = CONNECTOR_INFOS[ConnectorType.TRINO];
      58            1 :         const tr = conn.trino as any;
      59            1 :         const proto = tr?.setupParams
      60            1 :             ? tr
      61            1 :             : { setupTimings: {}, setupParams: tr ?? {} };
      62              :         const details: ConnectionStateDetailsVariant = {
      63            1 :             type: TRINO_CONNECTOR,
      64            1 :             value: {
      65            1 :                 proto,
      66            1 :                 channel: null,
      67            1 :             }
      68              :         };
      69            1 :         return [info, details];
      70            1 :     } else {
      71            1 :         throw new LoggableException("unsupported connection details", { sessionId }, LOG_CTX);
      72              :     }
      73            1 : }
      74              : 
      75            1 : export function restoreConnectionState(instance: dashql.DashQL, connectionId: string, info: ConnectorInfo, details: ConnectionStateDetailsVariant, paramsDraft?: ConnectionParams): ConnectionState {
      76            1 :     return { ...createConnectionState(instance, info, details, { active: true, paramsDraft }), connectionId };
      77            1 : }
        

Generated by: LCOV version 2.0-1