Skip to main content

Monthly Update - 2025-12

ยท 4 min read
TeaQL Code Gen
Core Contributor

A packed month with significant new features: Redis is now optional, RawSQL property support, request pagination, aggregation function improvements, and SQLite bug fixes.

Changesโ€‹

teaql-spring-boot-starterโ€‹

๐Ÿš€ Make Redis optional in autoconfig moduleโ€‹

Redis is no longer a required dependency for TeaQL. If Redis is not available on the classpath, TeaQL will fall back to a LocalLockService for locking operations. This makes TeaQL easier to use in development and simpler deployments.

+ Redis is now an optional dependency
+ LocalLockService: in-memory lock implementation for non-Redis environments
+ RedisLockService: Redis-based distributed lock (when Redis is available)
+ TQLAutoConfiguration: conditionally loads lock service based on classpath

Before: Required spring-boot-starter-data-redis as a mandatory dependency.

After: Works without Redis. If Redis is on the classpath, distributed locking is used automatically. Otherwise, falls back to local locking.

This is particularly useful for:

  • Local development without Redis
  • Single-instance deployments
  • Testing environments

๐Ÿ”ง Fix SQLite issueโ€‹

Fixed a SQLite-specific bug in schema management. The SQLRepository was not correctly handling certain SQLite-specific SQL syntax, which could cause schema ensure operations to fail.

+ SQLRepository: added SQLite-specific SQL handling
+ SQLiteRepository: 61 lines of fixes for schema operations
+ DynamicSearchHelper: adjusted for SQLite compatibility

๐Ÿš€ Add RawSQL support for propertyโ€‹

Properties can now use RawSQL expressions. This allows you to define computed or database-native expressions as property values, giving you full control over the SQL that gets generated for specific fields.

+ Property-level RawSQL support
+ Allows defining custom SQL expressions for individual properties

Example:

// Use RawSQL for a computed property
@RawSQL("CONCAT(first_name, ' ', last_name)")
String getFullName();

๐Ÿš€ Add prefix to aggregation functionsโ€‹

Aggregation functions (count, sum, avg, min, max) now include a configurable prefix in the result column name, preventing naming collisions when multiple aggregations are used in the same query.

+ Configurable prefix for aggregation function result columns
+ Prevents column name conflicts in multi-aggregation queries

๐Ÿ”ง Add configuration in embedded modeโ€‹

Added configuration support for TeaQL when running in embedded database mode (H2, SQLite in-memory). This ensures all TeaQL features work correctly even with embedded databases.

๐Ÿš€ Upgrade to version 1.84โ€‹

Version bump to 1.84, incorporating all the fixes and features from this cycle.

teaql-code-genโ€‹

๐Ÿš€ Add pagination support in requestโ€‹

Request objects now include pagination parameters (page, pageSize). This means generated search requests automatically support paginated queries without additional configuration.

+ Added page and pageSize fields to generated Request classes
+ Simplifies pagination for all list/search endpoints

๐Ÿš€ Improve readability of aggregation function resultsโ€‹

Aggregation function result fields now have more readable naming. Instead of cryptic auto-generated names, the results use clear, descriptive aliases.

+ Aggregation results use human-readable column aliases
+ Improved developer experience when working with aggregate queries

๐Ÿš€ Add RawSQL for property; fix parent filter issue for inherit itemsโ€‹

Aligned with the starter's RawSQL support, the code generator now correctly generates property-level RawSQL expressions. Also fixed a bug where parent-level filters were not correctly applied to inherited items in queries.

+ Code generation support for property-level RawSQL
+ Fixed: parent filters now correctly propagate to inherited child entities

Fixed broken links in the generated model view documentation. Cross-references between entities in the HTML model viewer were pointing to incorrect paths.

๐Ÿ”ง Fix spell knownโ€‹

Corrected a typo in the code generation templates.

๐Ÿš€ Upgrade Spring Boot versionโ€‹

Updated the code generator's Spring Boot template to use the latest compatible Spring Boot version, ensuring generated projects start with up-to-date dependencies.

๐Ÿš€ Upgrade versionโ€‹

Version bump for the code generator package.

RawSQL Deep Dive

RawSQL support in TeaQL allows you to bypass the query builder for specific properties or criteria. There are three levels:

  1. Property-level RawSQL (new): Define custom SQL expressions for computed properties
  2. Criteria-level RawSQL: Use raw SQL in WHERE clauses
  3. Select-level RawSQL: Custom SQL in SELECT projections

All three levels are now supported across both the starter and code generator.