From 5733f14124dbff573a3b23c3e0b480a15e8d40ed Mon Sep 17 00:00:00 2001 From: AlexBob Date: Mon, 23 Dec 2024 11:24:00 +0800 Subject: [PATCH 01/12] =?UTF-8?q?=E2=9C=A8=20feat(`QueryFragment.java`,=20?= =?UTF-8?q?`QueryHelper.java`,=20`AbstractEntity.java`):=20Add=20full-text?= =?UTF-8?q?=20search=20functionality=20with=20ranking=20support.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/plate/boot/commons/base/AbstractEntity.java | 5 +++++ .../plate/boot/commons/utils/query/QueryFragment.java | 11 +++++++++++ .../plate/boot/commons/utils/query/QueryHelper.java | 6 +----- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/boot/platform/src/main/java/com/plate/boot/commons/base/AbstractEntity.java b/boot/platform/src/main/java/com/plate/boot/commons/base/AbstractEntity.java index a1a7ff44..35616d93 100644 --- a/boot/platform/src/main/java/com/plate/boot/commons/base/AbstractEntity.java +++ b/boot/platform/src/main/java/com/plate/boot/commons/base/AbstractEntity.java @@ -80,6 +80,11 @@ public abstract class AbstractEntity implements BaseEntity { @InsertOnlyProperty protected LocalDateTime createdTime; + /** + * Data full text search entity sort + */ + protected Double rank; + /** * Support query for json column */ diff --git a/boot/platform/src/main/java/com/plate/boot/commons/utils/query/QueryFragment.java b/boot/platform/src/main/java/com/plate/boot/commons/utils/query/QueryFragment.java index 406d0eb0..0590b4ca 100644 --- a/boot/platform/src/main/java/com/plate/boot/commons/utils/query/QueryFragment.java +++ b/boot/platform/src/main/java/com/plate/boot/commons/utils/query/QueryFragment.java @@ -1,5 +1,6 @@ package com.plate.boot.commons.utils.query; +import com.google.common.base.CaseFormat; import com.plate.boot.commons.exception.QueryException; import lombok.Getter; @@ -182,6 +183,16 @@ public QueryFragment limit(int size, long offset) { return this; } + public QueryFragment ts(String column, Object value) { + String lowerCamelCol = CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, column); + String queryTable = "ts_" + lowerCamelCol; + columns("TS_RANK_CD(" + lowerCamelCol + ", " + queryTable + ") AS rank"); + query(",TO_TSQUERY('chinese',:" + column + ") AS " + queryTable); + where(queryTable + " @@ " + lowerCamelCol); + put(column, value); + return this; + } + public String whereSql() { if (this.where.length() > 0) { return " WHERE " + this.where; diff --git a/boot/platform/src/main/java/com/plate/boot/commons/utils/query/QueryHelper.java b/boot/platform/src/main/java/com/plate/boot/commons/utils/query/QueryHelper.java index 1e87a4a8..32a4d5fc 100644 --- a/boot/platform/src/main/java/com/plate/boot/commons/utils/query/QueryHelper.java +++ b/boot/platform/src/main/java/com/plate/boot/commons/utils/query/QueryHelper.java @@ -271,12 +271,8 @@ private static void processSecurityCodeKey(QueryFragment queryFragment, Map objectMap, String prefix) { if (objectMap.containsKey("search") && !ObjectUtils.isEmpty(objectMap.get("search"))) { - var textSearch = (String) objectMap.get("search"); var column = StringUtils.hasLength(prefix) ? prefix + ".text_search" : "text_search"; - queryFragment.columns("TS_RANK_CD(" + column + ", queryTextSearch) AS rank"); - queryFragment.query(",TO_TSQUERY('chinese',:textSearch) queryTextSearch"); - queryFragment.where(column + "@@TO_TSQUERY('chinese',:textSearch)"); - queryFragment.put("textSearch", textSearch); + queryFragment.ts(column, objectMap.get("search")); } } From 5bc3ed3d967e455b6b6266ae0fe8c6e909ca02a8 Mon Sep 17 00:00:00 2001 From: AlexBob Date: Mon, 23 Dec 2024 16:32:01 +0800 Subject: [PATCH 02/12] =?UTF-8?q?=E2=9C=A8=20feat(`.github/workflows/gradl?= =?UTF-8?q?e-build.yml`):=20Add=20Gradle=20build=20scan=20and=20improve=20?= =?UTF-8?q?CI=20workflow?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/gradle-build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/gradle-build.yml b/.github/workflows/gradle-build.yml index 29bb1b7e..70542992 100644 --- a/.github/workflows/gradle-build.yml +++ b/.github/workflows/gradle-build.yml @@ -60,6 +60,7 @@ jobs: #linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64 run: | chmod +x ./gradlew + ./gradlew gradle build --scan ./gradlew bootBuildImage --imagePlatform=linux/amd64 --network=host --publishImage ./gradlew bootBuildImage --imagePlatform=linux/arm64 --network=host --publishImage - name: Inspect From 81f65735d672d6a2fbfb1b4322b3c19e896003c3 Mon Sep 17 00:00:00 2001 From: AlexBob Date: Mon, 23 Dec 2024 16:33:49 +0800 Subject: [PATCH 03/12] =?UTF-8?q?=F0=9F=94=A7=20refactor(`.github/workflow?= =?UTF-8?q?s/gradle-build.yml`):=20Simplify=20Gradle=20build=20command=20a?= =?UTF-8?q?nd=20streamline=20image=20building=20process.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/gradle-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/gradle-build.yml b/.github/workflows/gradle-build.yml index 70542992..463281d8 100644 --- a/.github/workflows/gradle-build.yml +++ b/.github/workflows/gradle-build.yml @@ -60,7 +60,7 @@ jobs: #linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64 run: | chmod +x ./gradlew - ./gradlew gradle build --scan + ./gradlew build --scan ./gradlew bootBuildImage --imagePlatform=linux/amd64 --network=host --publishImage ./gradlew bootBuildImage --imagePlatform=linux/arm64 --network=host --publishImage - name: Inspect From dd5b42c4ec8dd2a4758e4fb202eaf046f5a45c1e Mon Sep 17 00:00:00 2001 From: AlexBob Date: Mon, 23 Dec 2024 16:34:53 +0800 Subject: [PATCH 04/12] =?UTF-8?q?=E2=9C=A8=20feat(`.github/workflows/gradl?= =?UTF-8?q?e-tests.yml`):=20Add=20`--scan`=20flag=20to=20Gradle=20build=20?= =?UTF-8?q?for=20better=20insights.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/gradle-tests.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/gradle-tests.yml b/.github/workflows/gradle-tests.yml index 78438047..ac3a3eed 100644 --- a/.github/workflows/gradle-tests.yml +++ b/.github/workflows/gradle-tests.yml @@ -32,6 +32,7 @@ jobs: - name: Build with Gradle Wrapper run: | chmod +x ./gradlew + ./gradlew build --scan ./gradlew test dependency-submission: runs-on: ubuntu-latest From 784a4b58418d8aa9ca70abad08620114539d93a8 Mon Sep 17 00:00:00 2001 From: AlexBob Date: Mon, 23 Dec 2024 16:46:58 +0800 Subject: [PATCH 05/12] =?UTF-8?q?=E2=9C=A8=20feat(`.github/workflows/clean?= =?UTF-8?q?up-caches.yml`):=20Add=20GitHub=20workflow=20to=20clean=20up=20?= =?UTF-8?q?caches=20when=20a=20pull=20request=20is=20closed.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🔧 refactor(`.github/workflows/gradle-tests.yml`, `.github/workflows/gradle-build.yml`): Update Gradle setup steps in workflows and remove unused comments. --- .github/workflows/cleanup-caches.yml | 27 +++++++++++++++++++++++++++ .github/workflows/gradle-build.yml | 1 - .github/workflows/gradle-tests.yml | 2 ++ 3 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/cleanup-caches.yml diff --git a/.github/workflows/cleanup-caches.yml b/.github/workflows/cleanup-caches.yml new file mode 100644 index 00000000..4c025196 --- /dev/null +++ b/.github/workflows/cleanup-caches.yml @@ -0,0 +1,27 @@ +name: cleanup caches by a branch +on: + pull_request: + types: + - closed + +jobs: + cleanup: + runs-on: ubuntu-latest + steps: + - name: Cleanup + run: | + echo "Fetching list of cache key" + cacheKeysForPR=$(gh cache list --ref $BRANCH --limit 100 --json id --jq '.[].id') + + ## Setting this to not fail the workflow while deleting cache keys. + set +e + echo "Deleting caches..." + for cacheKey in $cacheKeysForPR + do + gh cache delete $cacheKey + done + echo "Done" + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GH_REPO: ${{ github.repository }} + BRANCH: refs/pull/${{ github.event.pull_request.number }}/merge \ No newline at end of file diff --git a/.github/workflows/gradle-build.yml b/.github/workflows/gradle-build.yml index 463281d8..6bbee49e 100644 --- a/.github/workflows/gradle-build.yml +++ b/.github/workflows/gradle-build.yml @@ -57,7 +57,6 @@ jobs: - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 - name: Execute Gradle Plate bootBuildImage - #linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64 run: | chmod +x ./gradlew ./gradlew build --scan diff --git a/.github/workflows/gradle-tests.yml b/.github/workflows/gradle-tests.yml index ac3a3eed..9c368ed0 100644 --- a/.github/workflows/gradle-tests.yml +++ b/.github/workflows/gradle-tests.yml @@ -29,6 +29,8 @@ jobs: distribution: 'liberica' check-latest: true cache: 'gradle' + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 - name: Build with Gradle Wrapper run: | chmod +x ./gradlew From 0425beb2d0d5c0b636e46581af780da77a04be3c Mon Sep 17 00:00:00 2001 From: AlexBob Date: Mon, 23 Dec 2024 16:52:48 +0800 Subject: [PATCH 06/12] =?UTF-8?q?=E2=9A=99=EF=B8=8F=20refactor(`.github/wo?= =?UTF-8?q?rkflows/gradle-build.yml`):=20Combine=20and=20optimize=20Gradle?= =?UTF-8?q?=20commands=20for=20building=20images.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/gradle-build.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/gradle-build.yml b/.github/workflows/gradle-build.yml index 6bbee49e..434ba762 100644 --- a/.github/workflows/gradle-build.yml +++ b/.github/workflows/gradle-build.yml @@ -59,9 +59,8 @@ jobs: - name: Execute Gradle Plate bootBuildImage run: | chmod +x ./gradlew - ./gradlew build --scan - ./gradlew bootBuildImage --imagePlatform=linux/amd64 --network=host --publishImage - ./gradlew bootBuildImage --imagePlatform=linux/arm64 --network=host --publishImage + ./gradlew bootBuildImage --imagePlatform=linux/amd64 --network=host --publishImage --scan + ./gradlew bootBuildImage --imagePlatform=linux/arm64 --network=host --publishImage --scan - name: Inspect run: | docker buildx imagetools inspect localhost:5000/plate-oauth2:latest From 7fc924707b055599eaa9d357e602ab2a7bb8845d Mon Sep 17 00:00:00 2001 From: AlexBob Date: Mon, 23 Dec 2024 16:55:42 +0800 Subject: [PATCH 07/12] =?UTF-8?q?=E2=9C=A8=20feat(`.github/workflows/gradl?= =?UTF-8?q?e-tests.yml`):=20Add=20`--scan`=20flag=20to=20gradle=20test=20c?= =?UTF-8?q?ommand.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/gradle-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/gradle-tests.yml b/.github/workflows/gradle-tests.yml index 9c368ed0..7240c5b0 100644 --- a/.github/workflows/gradle-tests.yml +++ b/.github/workflows/gradle-tests.yml @@ -35,7 +35,7 @@ jobs: run: | chmod +x ./gradlew ./gradlew build --scan - ./gradlew test + ./gradlew test --scan dependency-submission: runs-on: ubuntu-latest permissions: From 47cf72931692cbf65a6e256e7ceeddeafb98c03f Mon Sep 17 00:00:00 2001 From: AlexBob Date: Mon, 23 Dec 2024 17:53:20 +0800 Subject: [PATCH 08/12] =?UTF-8?q?=E2=9C=A8=20feat(`.github/workflows`):=20?= =?UTF-8?q?Add=20Gradle=20Wrapper=20Validation=20to=20CI=20workflows.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/gradle-build.yml | 2 +- .github/workflows/gradle-tests.yml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/gradle-build.yml b/.github/workflows/gradle-build.yml index 434ba762..52a6d3d7 100644 --- a/.github/workflows/gradle-build.yml +++ b/.github/workflows/gradle-build.yml @@ -39,7 +39,7 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v4 - + - uses: gradle/wrapper-validation-action@v3 - name: Set up java 21 for x64 uses: actions/setup-java@v4 with: diff --git a/.github/workflows/gradle-tests.yml b/.github/workflows/gradle-tests.yml index 7240c5b0..32e77dbc 100644 --- a/.github/workflows/gradle-tests.yml +++ b/.github/workflows/gradle-tests.yml @@ -21,6 +21,7 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v4 + - uses: gradle/wrapper-validation-action@v3 - name: Set up JDK 21 for x64 uses: actions/setup-java@v4 with: From 4dea7a347f63224735ec0c6b43f2d7eff87d766a Mon Sep 17 00:00:00 2001 From: AlexBob Date: Mon, 23 Dec 2024 17:56:10 +0800 Subject: [PATCH 09/12] =?UTF-8?q?=E2=9C=A8=20feat(`.github/workflows/gradl?= =?UTF-8?q?e-tests.yml`):=20Add=20dependency=20submission=20and=20scan=20o?= =?UTF-8?q?ptions=20for=20Gradle=20tests.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/gradle-tests.yml | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/.github/workflows/gradle-tests.yml b/.github/workflows/gradle-tests.yml index 32e77dbc..79d6ee19 100644 --- a/.github/workflows/gradle-tests.yml +++ b/.github/workflows/gradle-tests.yml @@ -35,22 +35,10 @@ jobs: - name: Build with Gradle Wrapper run: | chmod +x ./gradlew - ./gradlew build --scan - ./gradlew test --scan - dependency-submission: - runs-on: ubuntu-latest - permissions: - contents: write - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - name: Set up JDK 21 for x64 - uses: actions/setup-java@v4 - with: - version: 'latest' - java-version: '21' - distribution: 'liberica' - check-latest: true - cache: 'gradle' + ./gradlew test - name: Generate and submit dependency graph - uses: gradle/actions/dependency-submission@v4 \ No newline at end of file + uses: gradle/actions/dependency-submission@v4 + with: + build-scan-publish: true + build-scan-terms-of-use-url: "https://gradle.com/help/legal-terms-of-use" + build-scan-terms-of-use-agree: "yes" \ No newline at end of file From 5b36409b927a411a97a15076b8bfd36d240e8d3c Mon Sep 17 00:00:00 2001 From: AlexBob Date: Mon, 23 Dec 2024 17:58:26 +0800 Subject: [PATCH 10/12] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor(`.github/wo?= =?UTF-8?q?rkflows`):=20Update=20Gradle=20wrapper=20validation=20action=20?= =?UTF-8?q?version=20from=20v3=20to=20v4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/gradle-build.yml | 2 +- .github/workflows/gradle-tests.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/gradle-build.yml b/.github/workflows/gradle-build.yml index 52a6d3d7..c8b502b2 100644 --- a/.github/workflows/gradle-build.yml +++ b/.github/workflows/gradle-build.yml @@ -39,7 +39,7 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v4 - - uses: gradle/wrapper-validation-action@v3 + - uses: gradle/actions/wrapper-validation@v4 - name: Set up java 21 for x64 uses: actions/setup-java@v4 with: diff --git a/.github/workflows/gradle-tests.yml b/.github/workflows/gradle-tests.yml index 79d6ee19..261db208 100644 --- a/.github/workflows/gradle-tests.yml +++ b/.github/workflows/gradle-tests.yml @@ -21,7 +21,7 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v4 - - uses: gradle/wrapper-validation-action@v3 + - uses: gradle/actions/wrapper-validation@v4 - name: Set up JDK 21 for x64 uses: actions/setup-java@v4 with: From 55717222d252222657a40b3972c4b178bf128e4b Mon Sep 17 00:00:00 2001 From: AlexBob Date: Mon, 23 Dec 2024 18:01:18 +0800 Subject: [PATCH 11/12] =?UTF-8?q?=E2=9A=99=EF=B8=8F=20refactor(`.github/wo?= =?UTF-8?q?rkflows/gradle-tests.yml`):=20Simplify=20and=20optimize=20Gradl?= =?UTF-8?q?e=20test=20workflow=20configuration.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/gradle-tests.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/workflows/gradle-tests.yml b/.github/workflows/gradle-tests.yml index 261db208..dc552a76 100644 --- a/.github/workflows/gradle-tests.yml +++ b/.github/workflows/gradle-tests.yml @@ -38,7 +38,3 @@ jobs: ./gradlew test - name: Generate and submit dependency graph uses: gradle/actions/dependency-submission@v4 - with: - build-scan-publish: true - build-scan-terms-of-use-url: "https://gradle.com/help/legal-terms-of-use" - build-scan-terms-of-use-agree: "yes" \ No newline at end of file From e6252e2a84c1152d3d3dab08672940314df4ec99 Mon Sep 17 00:00:00 2001 From: AlexBob Date: Mon, 23 Dec 2024 18:05:38 +0800 Subject: [PATCH 12/12] =?UTF-8?q?=E2=9C=A8=20feat(`.github/workflows/gradl?= =?UTF-8?q?e-tests.yml`):=20Update=20GitHub=20Workflow=20to=20allow=20writ?= =?UTF-8?q?e=20access=20to=20repository=20contents.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/gradle-tests.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/gradle-tests.yml b/.github/workflows/gradle-tests.yml index dc552a76..0f022600 100644 --- a/.github/workflows/gradle-tests.yml +++ b/.github/workflows/gradle-tests.yml @@ -15,7 +15,7 @@ jobs: boot-build-test: runs-on: ubuntu-latest permissions: - contents: read + contents: write env: SEGMENT_DOWNLOAD_TIMEOUT_MINS: '5' steps: @@ -38,3 +38,7 @@ jobs: ./gradlew test - name: Generate and submit dependency graph uses: gradle/actions/dependency-submission@v4 + with: + build-scan-publish: true + build-scan-terms-of-use-url: "https://gradle.com/help/legal-terms-of-use" + build-scan-terms-of-use-agree: "yes" \ No newline at end of file