Historical note: This article documents an earlier TeaQL generation target.
Early versions emitted backend templates, UI pages, mobile clients, and service scaffolding directly into application workspaces.
Modern TeaQL has moved to a clearer boundary: generation produces versioned libraries, deterministic business APIs, query DSLs, and runtime capabilities that applications consume as artifacts.
This is more friendly to AI-assisted coding and DevOps because AI agents can focus on business workflows, integrations, tests, and product behavior, while generated capabilities are reviewed, tested, published, upgraded, and rolled back through normal dependency and release pipelines.
In 2022 the generator's search layer became a real typed DSL.
The most important files were java_search_dsl_base.jsp, java_search_dsl_request.jsp, generated DAO helpers, SmartList, base entity templates, SQL logger templates, and scenario/data-manager builders. The code changes point to a clear feature: generated request objects became the main way to express reads, filters, selects, ordering, aggregation, and graph traversal.
BaseRequest as Generated Query Contract
The generated BaseRequest carried the common query model:
- selected fields
- parent selects
- child selects
- search criteria
- order by clauses
- pagination
- aggregation
- group by requests
- dynamic attributes
- cache hints
Object-specific request templates then generated typed methods such as filterBy..., select..., unselect..., and orderBy....
Relationship-Aware Search
The request templates generated relationship-aware filters:
- filter by parent request
- filter by child request
- refine ids through nested request results
- select parent objects
- select child lists
- unselect nested relations
That made the query API model-driven. Developers could express graph-shaped reads without manually assembling joins or ad hoc SQL fragments.
Safe Delete and Update Semantics
The generated DSL also added safer write semantics:
- safe delete
- remove and recover naming
- update operation support
- version-aware id handling
- list save improvements
This continued the same principle as generated reads: common business data operations should have deterministic generated APIs.
Aggregation, JSON Search, and Logging
The search layer also gained:
- count fixes
- sum and average helpers
- month and year aggregation
- JSON search expressions
- list search from JSON
- aggregation cache hints
- SQL logging helpers
The result was a generated query surface that could serve UI screens, reports, dashboards, and API consumers without falling back to handwritten SQL for every case.