Skip to content

Releases: suprim-corp/suprim-query

1.2.5

12 Jun 04:57
b9c6b4a

Choose a tag to compare

What's new

  • feat(rsql): Add =arrayContains= / =ac= operator for PostgreSQL TEXT[] column filtering (#38)
    • Generates 'value' = ANY(column) SQL
    • New FilterBuilder.arrayContains() and arrayContainsIfPresent() convenience methods

1.2.4

29 May 12:01
e0780b7

Choose a tag to compare

Fixes

  • RootTableProcessor: fallback to defaultDatabaseId when ReadContext.dbId is null/blank
  • SimpleRowMapper: handle timestamptzOffsetDateTime, timestampLocalDateTime (no more string conversion)
  • RootTableFieldProcessor: default to all columns (SELECT *) when fields is null/blank

Tests

  • Added tests for all 3 fixes
  • spring-boot-starter coverage → 100%

1.2.3

29 May 11:16
0e524fa

Choose a tag to compare

feat(core): add FilterExpression interface — pass FilterBuilder directly to ReadContext.filter() without .build()

1.2.2

29 May 11:04
0d5307a

Choose a tag to compare

feat(starter): add SortConverter for Spring Sort to suprim-query format

1.2.1

29 May 10:29
a4344ca

Choose a tag to compare

feat(rsql): add *IfPresent methods to FilterBuilder, rename ilike → iLike

1.2.0

19 May 18:24
b61d156

Choose a tag to compare

What's Changed

Full Changelog: 1.1.0...1.2.0

1.1.0

07 May 09:40
889b0ec

Choose a tag to compare

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 transaction

CreationService.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

06 May 08:24
d1bef3e

Choose a tag to compare

What's Changed

  • feat(jdbc): add bulk update/delete operations (#14)
    • UpdateService.patchBulk() — multiple filter-scoped updates in a single transaction
    • DeleteService.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

05 May 00:08
4cecddc

Choose a tag to compare

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>