Spaces:
Running
Running
File size: 1,346 Bytes
9afbea6 | 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 | import fetch from 'node-fetch';
import { TeaQLClient, QueryParser } from '../../../../src';
import { Q } from '../../ts-lib-core/src/generated/Q';
// 1. Initialize TFP Client, pointing to the Rust backend
const client = new TeaQLClient({
baseUrl: 'http://127.0.0.1:3001',
fetch: fetch as any
});
// 2. Prepare request context
const ctx = { client };
async function runDynamicExamples() {
try {
console.log("=== Dynamic String Query Examples ===");
// Example A: Dynamic filtering query
const filterQuery = 'Q.tasks().withNameContaining("bug")';
console.log(`[Execution]: ${filterQuery}`);
// Parse the string DSL into AST and execute (pass entry object Q)
const filterRequest = QueryParser.parse(filterQuery, Q);
const filterResult = await filterRequest.executeForList(ctx);
console.log("Result:", filterResult);
// Example B: Dynamic aggregation and grouping
const userQueryStr = 'Q.tasks().withNameContaining("bug").facetByStatusAs("statusFacet", Q.taskStatuses().count())';
console.log(`\n[Execution]: ${userQueryStr}`);
const aggRequest = QueryParser.parse(userQueryStr, Q);
const aggResult = await aggRequest.executeForList(ctx);
console.log("Result:", aggResult);
} catch (err) {
console.error("Query execution failed:", err);
}
}
runDynamicExamples();
|