mirror of
https://github.com/zitadel/zitadel.git
synced 2025-12-24 00:46:42 +00:00
fix(repo): correct mapping for domains (#10653)
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.
This commit is contained in:
@@ -45,13 +45,13 @@ func TestServer_TestInstanceReduces(t *testing.T) {
|
||||
})
|
||||
|
||||
retryDuration, tick := integration.WaitForAndTickWithMaxDuration(CTX, time.Minute)
|
||||
assert.EventuallyWithT(t, func(ttt *assert.CollectT) {
|
||||
assert.EventuallyWithT(t, func(t *assert.CollectT) {
|
||||
instance, err := instanceRepo.Get(CTX,
|
||||
database.WithCondition(instanceRepo.IDCondition(instance.GetInstanceId())),
|
||||
)
|
||||
require.NoError(ttt, err)
|
||||
require.NoError(t, err)
|
||||
// event instance.added
|
||||
assert.Equal(ttt, instanceName, instance.Name)
|
||||
assert.Equal(t, instanceName, instance.Name)
|
||||
// event instance.default.org.set
|
||||
assert.NotNil(t, instance.DefaultOrgID)
|
||||
// event instance.iam.project.set
|
||||
|
||||
Reference in New Issue
Block a user