All files / commands execute-sparql-query.ts

50% Statements 12/24
50% Branches 12/24
100% Functions 2/2
47.82% Lines 11/23

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47                1x     4x 1x 3x 2x   2x 1x 1x 1x                         1x   1x                        
import * as vscode from 'vscode';
import { container } from 'tsyringe';
import { ServiceToken } from '@src/services/tokens';
import { SparqlQueryExecutionState } from '@src/languages/sparql/services/sparql-query-state';
import { SparqlResultsController } from '@src/views/webviews';
import { ISparqlConnectionService } from '@src/languages/sparql/services';
import { executeNotebookCell } from './execute-notebook-cell';
 
export const executeSparqlQuery = {
    id: 'mentor.command.executeSparqlQuery',
    handler: async (query: SparqlQueryExecutionState): Promise<void> => {
        if (query.notebookIri && query.cellIndex !== undefined) {
            executeNotebookCell.handler(query.notebookIri, query.cellIndex);
        } else if (query.documentIri) {
            const document = vscode.workspace.textDocuments.find(d => d.uri.toString() === query.documentIri);
 
            if (document) {
                const controller = container.resolve<SparqlResultsController>(ServiceToken.SparqlResultsController);
                await controller.executeQueryFromTextDocument(document);
            } else if (Iquery.connectionId && query.query) {
                // Document was closed (e.g. an untitled doc opened via Edit on a background query).
                // Fall back to re-running as a background query so the existing tab is reloaded.
                const connectionService = container.resolve<ISparqlConnectionService>(ServiceToken.SparqlConnectionService);
                const connection = connectionService.getConnection(query.connectionId);
 
                if (!connection) {
                    throw new Error(`Connection with ID ${query.connectionId} not found.`);
                }
 
                const controller = container.resolve<SparqlResultsController>(ServiceToken.SparqlResultsController);
                await controller.executeBackgroundQuery(connection, query.query, query.label ?? '');
            } else {
                throw new Error(`Document with IRI ${query.documentIri} not found.`);
            }
        } else if (Iquery.connectionId && query.query) {
            const connectionService = container.resolve<ISparqlConnectionService>(ServiceToken.SparqlConnectionService);
            const connection = connectionService.getConnection(query.connectionId);
 
            if (!connection) {
                throw new Error(`Connection with ID ${query.connectionId} not found.`);
            }
 
            const controller = container.resolve<SparqlResultsController>(ServiceToken.SparqlResultsController);
            await controller.executeBackgroundQuery(connection, query.query, query.label ?? '');
        }
    }
};