philipgreat's picture
feat: explain seven TeaQL runtimes
9afbea6 verified
Raw History Blame Contribute Delete
1.35 kB
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();