mirror of
https://github.com/zitadel/zitadel.git
synced 2025-12-26 09:36:34 +00:00
This pull request fixes an issue where the repository would fail to scan organization or instance structs if the `domains` column was `NULL`. ## Which problems are solved If the `domains` column of `orgs` or `instances` was `NULL`, the repository failed scanning into the structs. This happened because the scanning mechanism did not correctly handle `NULL` JSONB columns. ## How the problems are solved A new generic type `JSONArray[T]` is introduced, which implements the `sql.Scanner` interface. This type can correctly scan JSON arrays from the database, including handling `NULL` values gracefully. The repositories for instances and organizations have been updated to use this new type for the domains field. The SQL queries have also been improved to use `FILTER` with `jsonb_agg` for better readability and performance when aggregating domains. ## Additional changes * An unnecessary cleanup step in the organization domain tests for already removed domains has been removed. * The `pgxscan` library has been replaced with `sqlscan` for scanning `database/sql`.Rows. * Minor cleanups in integration tests.
82 lines
2.3 KiB
YAML
82 lines
2.3 KiB
YAML
name: Build core
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
buf_version:
|
|
required: true
|
|
type: string
|
|
node_version:
|
|
required: true
|
|
type: string
|
|
outputs:
|
|
cache_key:
|
|
value: ${{ jobs.build.outputs.cache_key }}
|
|
cache_path:
|
|
value: ${{ jobs.build.outputs.cache_path }}
|
|
|
|
env:
|
|
cache_path: |
|
|
backend
|
|
internal/statik/statik.go
|
|
internal/notification/statik/statik.go
|
|
internal/api/ui/login/static/resources/themes/zitadel/css/zitadel.css*
|
|
internal/api/ui/login/statik/statik.go
|
|
internal/api/assets/authz.go
|
|
internal/api/assets/router.go
|
|
openapi/v2
|
|
pkg/grpc/**/*.pb.*
|
|
pkg/grpc/**/*.connect.go
|
|
|
|
jobs:
|
|
build:
|
|
runs-on:
|
|
group: zitadel-public
|
|
outputs:
|
|
cache_key: ${{ steps.cache.outputs.cache-primary-key }}
|
|
cache_path: ${{ env.cache_path }}
|
|
steps:
|
|
-
|
|
uses: actions/checkout@v4
|
|
-
|
|
uses: actions/cache/restore@v4
|
|
timeout-minutes: 1
|
|
continue-on-error: true
|
|
id: cache
|
|
with:
|
|
key: core-${{ hashFiles( 'go.*', 'openapi', 'cmd', 'pkg/grpc/**/*.go', 'proto', 'internal', 'backend/**') }}
|
|
restore-keys: |
|
|
core-
|
|
path: ${{ env.cache_path }}
|
|
-
|
|
if: ${{ steps.cache.outputs.cache-hit != 'true' }}
|
|
uses: bufbuild/buf-setup-action@v1
|
|
with:
|
|
github_token: ${{ github.token }}
|
|
version: ${{ inputs.buf_version }}
|
|
|
|
-
|
|
# node to install sass
|
|
if: ${{ steps.cache.outputs.cache-hit != 'true' }}
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: ${{ inputs.node_version }}
|
|
-
|
|
if: ${{ steps.cache.outputs.cache-hit != 'true' }}
|
|
run: npm install -g sass
|
|
|
|
-
|
|
if: ${{ steps.cache.outputs.cache-hit != 'true' }}
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
go-version-file: 'go.mod'
|
|
-
|
|
if: ${{ steps.cache.outputs.cache-hit != 'true' }}
|
|
run: make core_build
|
|
-
|
|
if: ${{ steps.cache.outputs.cache-hit != 'true' }}
|
|
uses: actions/cache/save@v4
|
|
with:
|
|
key: ${{ steps.cache.outputs.cache-primary-key }}
|
|
path: ${{ env.cache_path }}
|
|
|