All files / commands/sparql copy-sparql-query-results.ts

100% Statements 8/8
100% Branches 8/8
100% Functions 1/1
100% Lines 8/8

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          1x     7x   7x 2x     5x         7x   5x   7x      
import * as vscode from 'vscode';
import { SparqlQueryExecutionState } from '@src/languages/sparql/services/sparql-query-state';
import { BindingsFormat, formatQueryResult } from '@src/languages/sparql/services/bindings-formatter';
import { getResultsCopyFormat, getResultsIriFormat } from '@src/languages/sparql/services/query-results-format';
 
export const copySparqlQueryResults = {
    id: 'mentor.command.copySparqlQueryResults',
    handler: async (context: SparqlQueryExecutionState | undefined, format?: BindingsFormat): Promise<void> => {
        const result = context?.result;
 
        if (result?.type !== 'bindings' && result?.type !== 'boolean') {
            return;
        }
 
        const content = formatQueryResult(result, {
            format: format ?? getResultsCopyFormat(),
            iriForm: getResultsIriFormat()
        });
 
        await vscode.env.clipboard.writeText(content);
 
        const rowCount = result.type === 'bindings' ? result.rows.length : 1;
 
        vscode.window.setStatusBarMessage(`Copied ${rowCount} row(s) to the clipboard.`, 3000);
    }
};