Skip to content

Commit 028c847

Browse files
authored
Merge pull request #24 from EzFramework/dev/1.0.5
Dev/1.0.5
2 parents f30e892 + 6f51730 commit 028c847

29 files changed

Lines changed: 3341 additions & 39 deletions

‎.github/workflows/code-quality.yml‎

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,6 @@ jobs:
4747
java-version: '25'
4848
- name: Build with coverage
4949
run: mvn --batch-mode clean verify
50-
- name: Upload JaCoCo coverage report
51-
uses: actions/upload-artifact@v7
52-
with:
53-
name: jacoco-report
54-
path: target/site/jacoco/
5550
- name: Upload coverage to Codecov
5651
uses: codecov/codecov-action@v5
5752
with:

‎.github/workflows/docs.yml‎

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
name: Documentation
2+
3+
on:
4+
release:
5+
types: [published]
6+
workflow_dispatch:
7+
8+
permissions:
9+
contents: read
10+
pages: write
11+
id-token: write
12+
13+
concurrency:
14+
group: "pages"
15+
cancel-in-progress: false
16+
17+
jobs:
18+
build-and-deploy:
19+
name: Build and Deploy
20+
runs-on: ubuntu-latest
21+
environment:
22+
name: github-pages
23+
url: ${{ steps.deployment.outputs.page_url }}
24+
steps:
25+
- name: Checkout
26+
uses: actions/checkout@v4
27+
28+
- name: Setup Pages
29+
uses: actions/configure-pages@v5
30+
31+
- name: Build with Jekyll
32+
uses: actions/jekyll-build-pages@v1
33+
with:
34+
source: ./docs
35+
destination: ./_site
36+
37+
- name: Upload artifact
38+
uses: actions/upload-pages-artifact@v3
39+
40+
- name: Deploy to GitHub Pages
41+
id: deployment
42+
uses: actions/deploy-pages@v4

‎.github/workflows/lint.yml‎

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
name: Lint
2+
3+
on:
4+
pull_request:
5+
paths:
6+
- "docs/**/*.md"
7+
- ".markdownlint.yml"
8+
9+
jobs:
10+
markdown:
11+
name: Validate Markdown
12+
runs-on: ubuntu-latest
13+
steps:
14+
- name: Checkout
15+
uses: actions/checkout@v4
16+
17+
- name: Lint Markdown
18+
uses: DavidAnson/markdownlint-cli2-action@v16
19+
with:
20+
globs: "docs/**/*.md"
21+
config: ".markdownlint.yml"

‎.github/workflows/unit-tests.yml‎

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
name: Unit Tests
22

33
permissions:
4-
checks: write
5-
pull-requests: write
64
contents: read
75

86
on:
@@ -32,11 +30,6 @@ jobs:
3230
with:
3331
name: java-query-builder-jar
3432
path: target/*.jar
35-
- name: Publish JUnit test results
36-
uses: EnricoMi/publish-unit-test-result-action@v2
37-
if: (!cancelled())
38-
with:
39-
files: target/surefire-reports/*.xml
4033

4134
feature-tests:
4235
runs-on: ubuntu-latest
@@ -53,8 +46,3 @@ jobs:
5346
java-version: ${{ matrix.java-version }}
5447
- name: Run feature tests
5548
run: mvn --batch-mode -Dtest='feature.**.*Test' test
56-
- name: Publish Feature Test Results
57-
uses: EnricoMi/publish-unit-test-result-action@v2
58-
if: (!cancelled())
59-
with:
60-
files: target/surefire-reports/*.xml

‎.markdownlint.yml‎

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
default: true
2+
MD013: false
3+
MD022: false
4+
MD025:
5+
front_matter_title: ""
6+
MD033: false
7+
MD036: false
8+
MD041: false
9+
MD024:
10+
siblings_only: true
11+
MD007:
12+
indent: 2

‎README.md‎

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
# JavaQueryBuilder
22

3+
[![JitPack](https://jitpack.io/v/EzFramework/JavaQueryBuilder.svg)](https://jitpack.io/#EzFramework/JavaQueryBuilder)
4+
[![GitHub Packages](https://img.shields.io/github/v/release/EzFramework/JavaQueryBuilder?label=GitHub%20Packages&logo=github)](https://github.com/EzFramework/JavaQueryBuilder/packages)
5+
[![codecov](https://codecov.io/gh/EzFramework/JavaQueryBuilder/branch/main/graph/badge.svg)](https://codecov.io/gh/EzFramework/JavaQueryBuilder)
6+
37
A lightweight, fluent Java library for building parameterized SQL queries and filtering in-memory data, no runtime dependencies required.
48

9+
510
## Features
611

712
- Fluent, readable builder API for SELECT, INSERT, UPDATE, DELETE, and CREATE TABLE
@@ -10,6 +15,7 @@ A lightweight, fluent Java library for building parameterized SQL queries and fi
1015
- Subquery support: `WHERE col IN (SELECT ...)`, `WHERE EXISTS (SELECT ...)`, `WHERE NOT EXISTS`, derived-table `FROM (SELECT ...) AS alias`, JOIN subqueries, and scalar `(SELECT ...) AS alias` in SELECT
1116
- Column selection, `DISTINCT`, `GROUP BY`, `ORDER BY`, `LIMIT`, and `OFFSET`
1217
- SQL dialect support: Standard, MySQL, SQLite
18+
- **Global and per-query configuration of defaults (e.g., dialect, columns, limit, LIKE wrapping) via `QueryBuilderDefaults`**
1319
- In-memory filtering via `QueryableStorage`
1420
- Zero runtime dependencies, pure Java 21+
1521

@@ -21,7 +27,7 @@ Add the dependency to your `pom.xml`:
2127
<dependency>
2228
<groupId>com.github.EzFramework</groupId>
2329
<artifactId>JavaQueryBuilder</artifactId>
24-
<version>1.0.4</version>
30+
<version>1.0.5</version>
2531
</dependency>
2632
```
2733

@@ -387,6 +393,48 @@ new SelectBuilder()
387393
.build(); // → SqlResult
388394
```
389395

396+
397+
## Global and Per-Query Configuration
398+
399+
You can preset the default SQL dialect, default columns, limit, offset, and LIKE wrapping for all queries using `QueryBuilderDefaults`. This is useful for enforcing a project-wide dialect (e.g., always use SQLite) or customizing builder defaults.
400+
401+
### Set SQLite as the default dialect for all queries
402+
403+
```java
404+
import com.github.ezframework.javaquerybuilder.query.QueryBuilderDefaults;
405+
import com.github.ezframework.javaquerybuilder.query.sql.SqlDialect;
406+
407+
// Set at application startup:
408+
QueryBuilderDefaults.setGlobal(
409+
QueryBuilderDefaults.builder()
410+
.dialect(SqlDialect.SQLITE)
411+
.build()
412+
);
413+
414+
// All new QueryBuilder, SelectBuilder, and DeleteBuilder instances will use SQLite quoting by default:
415+
SqlResult result = new QueryBuilder()
416+
.select("id", "name")
417+
.from("users")
418+
.buildSql();
419+
// → SELECT id, name FROM "users"
420+
```
421+
422+
### Override per query
423+
424+
You can override the defaults for a single query using `.withDefaults()`:
425+
426+
```java
427+
SqlResult result = new QueryBuilder()
428+
.withDefaults(QueryBuilderDefaults.builder(QueryBuilderDefaults.global())
429+
.dialect(SqlDialect.MYSQL)
430+
.build())
431+
.from("users")
432+
.buildSql();
433+
// → SELECT * FROM `users`
434+
```
435+
436+
See the Javadoc for [`QueryBuilderDefaults`](src/main/java/com/github/ezframework/javaquerybuilder/query/QueryBuilderDefaults.java) for all configurable options.
437+
390438
## SQL Dialects
391439

392440
By default, `buildSql(table)` uses `SqlDialect.STANDARD` (no identifier quoting). Pass a second argument to use a different dialect:

‎docs/Gemfile‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
source "https://rubygems.org"
2+
3+
gem "github-pages", group: :jekyll_plugins
4+
gem "just-the-docs"

‎docs/_config.yml‎

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
title: JavaQueryBuilder
2+
description: >-
3+
A lightweight, fluent Java library for building parameterized SQL queries
4+
and filtering in-memory data. No runtime dependencies required.
5+
6+
url: "https://ezframework.github.io"
7+
baseurl: "/JavaQueryBuilder"
8+
9+
# ── Appearance ────────────────────────────────────────────────────────────────
10+
color_scheme: javaquerybuilder
11+
heading_anchors: true
12+
13+
# ── Header links ──────────────────────────────────────────────────────────────
14+
aux_links:
15+
"GitHub":
16+
- "https://github.com/EzFramework/JavaQueryBuilder"
17+
"JitPack":
18+
- "https://jitpack.io/#EzFramework/JavaQueryBuilder"
19+
20+
aux_links_new_tab: true
21+
22+
# ── Navigation ────────────────────────────────────────────────────────────────
23+
nav_sort: case_insensitive
24+
nav_external_links:
25+
- title: Changelog
26+
url: "https://github.com/EzFramework/JavaQueryBuilder/releases"
27+
hide_icon: false
28+
29+
# ── Search ────────────────────────────────────────────────────────────────────
30+
search_enabled: true
31+
search:
32+
heading_level: 2
33+
previews: 3
34+
preview_words_before: 5
35+
preview_words_after: 10
36+
tokenizer_separator: /[\s/]+/
37+
38+
# ── Footer ────────────────────────────────────────────────────────────────────
39+
back_to_top: true
40+
back_to_top_text: "Back to top"
41+
42+
footer_content: >-
43+
Copyright &copy; 2024&ndash;2026 Gyvex.
44+
Distributed under the
45+
<a href="https://github.com/EzFramework/JavaQueryBuilder/blob/main/LICENSE">MIT License</a>.
46+
47+
# ── Kramdown ──────────────────────────────────────────────────────────────────
48+
kramdown:
49+
syntax_highlighter_opts:
50+
block:
51+
line_numbers: false
52+
53+
# ── Plugins ───────────────────────────────────────────────────────────────────
54+
plugins:
55+
- jekyll-remote-theme
56+
- jekyll-seo-tag
57+
58+
# ── Build exclusions ──────────────────────────────────────────────────────────
59+
exclude:
60+
- Gemfile
61+
- Gemfile.lock
62+
63+
remote_theme: just-the-docs/just-the-docs
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
// JavaQueryBuilder — dark/blue/white color scheme for just-the-docs
2+
//
3+
// Palette:
4+
// Background #141414 (body)
5+
// Surface #1c1c1c (sidebar, cards)
6+
// Elevated #222222 (code blocks, search, table rows)
7+
// Border #2e2e2e
8+
// Text #d0d0d0 (body) / #ffffff (headings)
9+
// Accent #4d9de0 (blue — links, nav highlight, buttons)
10+
// Accent dim #3a7bbf (hover state)
11+
12+
$color-scheme: dark;
13+
14+
// ── Surfaces ─────────────────────────────────────────────────────────────────
15+
$body-background-color: #141414;
16+
$sidebar-color: #1c1c1c;
17+
$feedback-color: #181818;
18+
19+
// ── Typography ────────────────────────────────────────────────────────────────
20+
$body-text-color: #d0d0d0;
21+
$body-heading-color: #ffffff;
22+
23+
// ── Links & accent ───────────────────────────────────────────────────────────
24+
$link-color: #4d9de0;
25+
$btn-primary-color: #4d9de0;
26+
27+
// ── Borders ───────────────────────────────────────────────────────────────────
28+
$border-color: #2e2e2e;
29+
30+
// ── Code ──────────────────────────────────────────────────────────────────────
31+
$code-background-color: #222222;
32+
33+
// ── Tables ────────────────────────────────────────────────────────────────────
34+
$table-background-color: #1a1a1a;
35+
36+
// ── Search ────────────────────────────────────────────────────────────────────
37+
$search-background-color: #222222;
38+
$search-foreground-color: #c0c0c0;
39+
$search-border-color: #333333;
40+
41+
// ── Buttons ───────────────────────────────────────────────────────────────────
42+
$base-button-color: #252525;

0 commit comments

Comments
 (0)