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

            Line data    Source code
       1              : import { isDesktopHost } from "../platform/native_globals.js";
       2              : 
       3            1 : export const SALESFORCE_DATA_CLOUD_CONNECTOR = Symbol('SALESFORCE_DATA_CLOUD_CONNECTOR');
       4            1 : export const HYPER_CONNECTOR = Symbol('HYPER_CONNECTOR');
       5            1 : export const TRINO_CONNECTOR = Symbol('TRINO_CONNECTOR');
       6            1 : export const SIDB_CONNECTOR = Symbol('SIDB_CONNECTOR');
       7              : 
       8            1 : export enum ConnectorType {
       9            1 :     HYPER = 0,
      10            1 :     SALESFORCE_DATA_CLOUD = 1,
      11            1 :     TRINO = 2,
      12            1 :     SIDB = 3,
      13            1 : }
      14            1 : export const CONNECTOR_TYPES: ConnectorType[] = [
      15            1 :     ConnectorType.HYPER,
      16            1 :     ConnectorType.SALESFORCE_DATA_CLOUD,
      17            1 :     ConnectorType.TRINO,
      18            1 :     ConnectorType.SIDB,
      19            1 : ];
      20              : 
      21              : export interface ConnectorInfo {
      22              :     /// The connector type
      23              :     connectorType: ConnectorType;
      24              :     /// The query shown in the first script of a new session.
      25              :     helloWorldScript: string;
      26              :     /// The connector name
      27              :     names: {
      28              :         displayLong: string;
      29              :         displayShort: string;
      30              :         fileShort: string;
      31              :     };
      32              :     /// The icons
      33              :     icons: {
      34              :         colored: string,
      35              :         uncolored: string,
      36              :         outlines: string,
      37              :     }
      38              :     /// The connector features
      39              :     features: ConnectorFeatures;
      40              :     /// The connector platforms
      41              :     platforms: ConnectorPlatforms;
      42              : }
      43              : 
      44              : export interface ConnectorPlatforms {
      45              :     /// Supports the browser?
      46              :     browser: boolean;
      47              :     /// Supports the electron app?
      48              :     native: boolean;
      49              : }
      50              : 
      51              : export interface ConnectorFeatures {
      52              :     /// Do new sessions cache query results?
      53              :     queryResultCaching: boolean;
      54              :     /// Do connections only run queries, no DDL or DML?
      55              :     readOnly: boolean;
      56              : }
      57              : 
      58            1 : export const CONNECTOR_INFOS: ConnectorInfo[] = [
      59            1 :     {
      60            1 :         connectorType: ConnectorType.HYPER,
      61            1 :         helloWorldScript: 'select version();',
      62            1 :         names: {
      63            1 :             displayShort: 'Hyper',
      64            1 :             displayLong: 'Hyper',
      65            1 :             fileShort: 'hyper',
      66            1 :         },
      67            1 :         icons: {
      68            1 :             colored: "hyper",
      69            1 :             uncolored: "hyper_nocolor",
      70            1 :             outlines: "hyper_outlines",
      71            1 :         },
      72            1 :         features: {
      73            1 :             queryResultCaching: false,
      74            1 :             readOnly: false,
      75            1 :         },
      76            1 :         platforms: {
      77            1 :             browser: true,
      78            1 :             native: true,
      79            1 :         },
      80            1 :     },
      81            1 :     {
      82            1 :         connectorType: ConnectorType.SALESFORCE_DATA_CLOUD,
      83            1 :         helloWorldScript: 'select version();',
      84            1 :         names: {
      85            1 :             displayShort: 'Salesforce',
      86            1 :             displayLong: 'Salesforce Data Cloud',
      87            1 :             fileShort: 'sfdc',
      88            1 :         },
      89            1 :         icons: {
      90            1 :             colored: "salesforce_notext",
      91            1 :             uncolored: "salesforce_notext_nocolor",
      92            1 :             outlines: "salesforce_outlines",
      93            1 :         },
      94            1 :         features: {
      95            1 :             queryResultCaching: true,
      96            1 :             readOnly: true,
      97            1 :         },
      98            1 :         platforms: {
      99            1 :             browser: true,
     100            1 :             native: true,
     101            1 :         },
     102            1 :     },
     103            1 :     {
     104            1 :         connectorType: ConnectorType.TRINO,
     105            1 :         helloWorldScript: 'select version();',
     106            1 :         names: {
     107            1 :             displayShort: 'Trino',
     108            1 :             displayLong: 'Trino',
     109            1 :             fileShort: 'trino',
     110            1 :         },
     111            1 :         icons: {
     112            1 :             colored: "trino",
     113            1 :             uncolored: "trino_nocolor",
     114            1 :             outlines: "trino_outlines",
     115            1 :         },
     116            1 :         features: {
     117            1 :             queryResultCaching: true,
     118            1 :             readOnly: true,
     119            1 :         },
     120            1 :         platforms: {
     121            1 :             browser: true,
     122            1 :             native: true,
     123            1 :         },
     124            1 :     },
     125            1 :     {
     126              :         // SIDB connections behave like Salesforce Data Cloud connections for now, but can write to their database
     127            1 :         connectorType: ConnectorType.SIDB,
     128            1 :         helloWorldScript: 'select version();',
     129            1 :         names: {
     130            1 :             displayShort: 'SIDB',
     131            1 :             displayLong: 'SIDB',
     132            1 :             fileShort: 'sidb',
     133            1 :         },
     134            1 :         icons: {
     135            1 :             colored: "sidb_mark",
     136            1 :             uncolored: "sidb_mark_nocolor",
     137            1 :             outlines: "sidb_mark_outlines",
     138            1 :         },
     139            1 :         features: {
     140            1 :             queryResultCaching: true,
     141            1 :             readOnly: false,
     142            1 :         },
     143            1 :         platforms: {
     144            1 :             browser: true,
     145            1 :             native: true,
     146            1 :         },
     147            1 :     },
     148            1 : ];
     149              : 
     150            1 : export function getConnectorInfoForParams(params: { hyper?: any; salesforce?: any; sidb?: any; trino?: any }): ConnectorInfo | null {
     151            1 :     if ("hyper" in params) return CONNECTOR_INFOS[ConnectorType.HYPER];
     152            1 :     if ("salesforce" in params) return CONNECTOR_INFOS[ConnectorType.SALESFORCE_DATA_CLOUD];
     153            1 :     if ("sidb" in params) return CONNECTOR_INFOS[ConnectorType.SIDB];
     154            1 :     if ("trino" in params) return CONNECTOR_INFOS[ConnectorType.TRINO];
     155            1 :     return null;
     156            1 : }
     157              : 
     158            1 : export function isConnectorAvailable(info: ConnectorInfo): boolean {
     159            1 :     return isDesktopHost() ? info.platforms.native : info.platforms.browser;
     160            1 : }
     161              : 
     162            1 : export function requiresSwitchingToNative(info: ConnectorInfo) {
     163            1 :     return !isConnectorAvailable(info);
     164            1 : }
     165              : 
     166            1 : export const useConnectorList = () => {
     167            1 :     const connectorTypes = [ConnectorType.HYPER, ConnectorType.SALESFORCE_DATA_CLOUD, ConnectorType.SIDB, ConnectorType.TRINO];
     168            1 :     return connectorTypes.map(type => CONNECTOR_INFOS[type]).filter(isConnectorAvailable);
     169            1 : };
        

Generated by: LCOV version 2.0-1