LCOV - code coverage report
Current view: top level - dashql-app/src/compute/tasks - data_search.ts Coverage Total Hit
Test: DashQL 915828b Lines: 88.4 % 43 38
Test Date: 2026-11-06 19:30:32

            Line data    Source code
       1              : import { DataFrame, generateTableName } from '../data_frame.js';
       2              : import { DataSearchTask, DataSearchTable } from '../computation_types.js';
       3              : import { LoggableException, LoggerLike, stringifyError } from '../../platform/logger/logger.js';
       4              : import { buildDataSearchSQL, DATA_SEARCH_ROW_FIELD } from '../sql/query_result_search_sql.js';
       5              : import { ComputeQueryExecution, executeDirectly } from '../computation_tasks.js';
       6              : 
       7            1 : const LOG_CTX = "compute";
       8              : 
       9            1 : export async function searchData(
      10            1 :     task: DataSearchTask,
      11            1 :     logger: LoggerLike,
      12            1 :     executeQuery: ComputeQueryExecution = executeDirectly,
      13            1 : ): Promise<DataSearchTable> {
      14            1 :     const sql = buildDataSearchSQL(
      15            1 :         task.inputDataFrame.tableName,
      16            1 :         task.rowNumberColumnName,
      17            1 :         task.columns,
      18            1 :         task.pattern,
      19            1 :     );
      20            1 :     try {
      21            1 :         logger.info('Searching table data', {
      22            1 :             version: task.tableVersion.toString(),
      23            1 :             requestId: task.requestId.toString(),
      24            1 :         }, LOG_CTX);
      25            1 :         const tableName = generateTableName('__search');
      26            1 :         const dataFrame = await executeQuery(sql, clientContext => DataFrame.fromSQL(
      27            0 :             task.inputDataFrame.database,
      28            0 :             sql,
      29            0 :             tableName,
      30            0 :             task.abortController.signal,
      31            0 :             clientContext,
      32            1 :         ));
      33            1 :         try {
      34            1 :             const dataTable = await dataFrame.readTable({ orderBy: [{ field: DATA_SEARCH_ROW_FIELD }], abort: task.abortController.signal });
      35            1 :             return {
      36            1 :                 inputRowNumberColumnName: task.rowNumberColumnName,
      37            1 :                 dataTable,
      38            1 :                 dataFrame,
      39            1 :                 version: task.tableVersion,
      40            1 :                 requestId: task.requestId,
      41            1 :             };
      42            1 :         } catch (error) {
      43            1 :             await dataFrame.destroy();
      44            1 :             throw error;
      45            1 :         }
      46            1 :     } catch (error) {
      47            1 :         if (error instanceof LoggableException) throw error;
      48            1 :         throw new LoggableException('Failed to search table data', { error: stringifyError(error) }, LOG_CTX);
      49            1 :     }
      50            1 : }
        

Generated by: LCOV version 2.0-1