Releases: suprim-corp/suprim-query
Releases · suprim-corp/suprim-query
1.2.5
1.2.4
Fixes
- RootTableProcessor: fallback to
defaultDatabaseIdwhenReadContext.dbIdis null/blank - SimpleRowMapper: handle
timestamptz→OffsetDateTime,timestamp→LocalDateTime(no more string conversion) - RootTableFieldProcessor: default to all columns (SELECT *) when
fieldsis null/blank
Tests
- Added tests for all 3 fixes
spring-boot-startercoverage → 100%
1.2.3
feat(core): add FilterExpression interface — pass FilterBuilder directly to ReadContext.filter() without .build()
1.2.2
feat(starter): add SortConverter for Spring Sort to suprim-query format
1.2.1
feat(rsql): add *IfPresent methods to FilterBuilder, rename ilike → iLike
1.2.0
What's Changed
- feat(soft-delete): transparent soft-delete support by @sant1ago-da-hanoi in #17
- feat(expression): implement ExpressionField record with raw() and as() methods by @sant1ago-da-hanoi in #29
- feat(expression): add aggregate factory methods by @sant1ago-da-hanoi in #30
- feat(expression): add coalesce() and nullif() factory methods by @sant1ago-da-hanoi in #31
- feat(expression): add dateTrunc() and extract() factory methods by @sant1ago-da-hanoi in #32
- feat(expression): add concat() and toChar() factory methods by @sant1ago-da-hanoi in #33
- feat(expression): integrate ExpressionField into ReadContext and SqlCreatorTemplate by @sant1ago-da-hanoi in #34
Full Changelog: 1.1.0...1.2.0
1.1.0
What's Changed
- feat(jdbc): add RawQueryService for arbitrary SQL with routing and transaction support (#15, closes #4)
- feat(jdbc): add upsert support with INSERT ON CONFLICT (#16, closes #6)
New APIs
RawQueryService — execute arbitrary SQL while keeping connection routing and transaction management:
rawQueryService.queryOne(dbId, sql, params); // single row
rawQueryService.queryList(dbId, sql, params); // multiple rows
rawQueryService.execute(dbId, sql, params); // INSERT/UPDATE/DELETE in transactionCreationService.upsert() — INSERT ON CONFLICT with configurable conflict resolution:
var config = new UpsertConfig(List.of("email"), List.of("name", "age"));
creationService.upsert(dbId, schema, table, columns, data, config);
// DO NOTHING variant:
var doNothing = new UpsertConfig(List.of("email"), null);Full Changelog: 1.0.1...1.1.0
1.0.1
What's Changed
- feat(jdbc): add bulk update/delete operations (#14)
UpdateService.patchBulk()— multiple filter-scoped updates in a single transactionDeleteService.deleteBulk()— multiple filter-scoped deletes in a single transaction- Both roll back all changes on any failure
Full Changelog: 1.0.0...1.0.1
1.0.0
Initial Release
Type-safe dynamic SQL query builder for Spring Boot applications.
Features
- RSQL filtering — full operator set (comparison, pattern, JSONB, null checks)
- FilterBuilder — fluent, type-safe RSQL construction with nested Map/List serialization
- JoinBuilder — fluent JOIN construction with typed conditions and field aliases
- CRUD services — ReadService, CreationService, UpdateService, DeleteService
- JTE SQL templating — precompiled SQL templates for all operations
- Multi-tenant routing — RoutingDataSource with DatabaseContextHolder
- PostgreSQL dialect — full type processing, JSONB, arrays, vectors, UUID, TSID
- Spring Boot auto-configuration — zero-config setup with
db.enabled=true - Metadata extraction — automatic table/column discovery from database
Modules
| Module | ArtifactId |
|---|---|
| Core models & interfaces | core |
| RSQL parser & builders | rsql |
| Spring JDBC operations | jdbc |
| PostgreSQL dialect | postgresql |
| Auto-configuration | spring-boot-starter |
Installation
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependency>
<groupId>dev.suprim</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>1.0.0</version>
</dependency>