Spaces:
Running
Running
File size: 3,055 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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | import fetch from 'node-fetch';
import { TeaQLClient } from '../../../../src';
import { Q } from '../../ts-lib-core/src/generated/Q';
import { Task } from '../../ts-lib-core/src/generated/models/Task';
// 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 runNativeExamples() {
try {
console.log("=== Native TypeScript Query Examples ===");
// Example A: Strongly-typed chained calls (Conditional filtering)
console.log("[Execution]: Q.tasks().withNameContaining('bug').purpose('find bugs')");
const filterResult = await Q.tasks()
.withNameContaining("bug")
.purpose("find bugs")
.executeForList(ctx);
console.log("Result:", filterResult);
// Example B: Strongly-typed chained calls (Aggregation and Grouping)
console.log("\n[Execution]: Q.taskStatuses().groupByDisplayOrder().avgProgress().purpose('calc average')");
const aggResult = await Q.taskStatuses()
.groupByDisplayOrder()
.avgProgress()
.purpose("calc average")
.executeForList(ctx);
console.log("Result:", aggResult);
// Example C: Strongly-typed chained calls (Nested Facet panel aggregation)
console.log("\n[Execution]: Q.tasks().facetByStatusAs('statusFacet', Q.taskStatuses().count()).purpose('dashboard render')");
const facetResult = await Q.tasks()
.facetByStatusAs("statusFacet", Q.taskStatuses().count())
.purpose("dashboard render")
.executeForList(ctx);
console.log("Main data (Tasks):", facetResult.data);
console.log("Statistics panel (Facets):", facetResult.facets);
// Example D: Data Mutations
console.log("\n[Execution]: Create Task");
const task = new Task({ name: 'New Bug Task', status: 1001 });
const saveResult = await task.auditAs("Create a new bug").save(ctx);
console.log("Create Result:", JSON.stringify(saveResult, null, 2));
const newId = saveResult.data[0].saved_data.id;
const newVersion = saveResult.data[0].saved_data.version;
console.log(`Retrieved newly created Task ID: ${newId}, Version: ${newVersion}`);
console.log(`\n[Execution]: Update Task (ID: ${newId})`);
const updateTask = new Task({ id: newId, name: 'New Bug Task (Fixed)', status: 1004, version: newVersion });
const updateResult = await updateTask.auditAs("Fix the bug").save(ctx);
console.log("Update Result:", JSON.stringify(updateResult, null, 2));
const updatedVersion = updateResult.data[0].saved_data.version;
console.log(`\n[Execution]: Delete Task (ID: ${newId})`);
const taskToDelete = new Task({ id: newId, version: updatedVersion });
const deleteResult = await taskToDelete.markForDeletion().auditAs("Clean up the bug").save(ctx);
console.log("Delete Result:", JSON.stringify(deleteResult, null, 2));
} catch (err) {
console.error("Query execution failed:", err);
}
}
runNativeExamples();
|