From 48534d5af3c7724217e35f57e02834dcea737c61 Mon Sep 17 00:00:00 2001 From: Haruko386 Date: Wed, 24 Jun 2026 19:08:56 +0800 Subject: [PATCH] fix: new dataset can not update configuration (#16291) --- internal/service/dataset.go | 11 +++++++++-- internal/service/dataset_update_test.go | 26 +++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/internal/service/dataset.go b/internal/service/dataset.go index 62baef3133..20536048e0 100644 --- a/internal/service/dataset.go +++ b/internal/service/dataset.go @@ -1512,7 +1512,7 @@ func (s *DatasetService) GetDataset(datasetID, userID string) (map[string]interf if err != nil { return nil, common.CodeServerError, errors.New("Database operation failed") } - data["connectors"] = connectors + data["connectors"] = datasetConnectorsOrEmpty(connectors) return data, common.CodeSuccess, nil } @@ -1759,10 +1759,17 @@ func (s *DatasetService) UpdateDataset(datasetID, tenantID string, req UpdateDat if err != nil { return nil, common.CodeServerError, errors.New("Database operation failed") } - data["connectors"] = linkedConnectors + data["connectors"] = datasetConnectorsOrEmpty(linkedConnectors) return data, common.CodeSuccess, nil } +func datasetConnectorsOrEmpty(connectors []*dao.ConnectorDatasetListItem) []*dao.ConnectorDatasetListItem { + if connectors == nil { + return make([]*dao.ConnectorDatasetListItem, 0) + } + return connectors +} + func datasetUpdateParserID(req UpdateDatasetRequest) (string, bool, error) { parserID := "" provided := false diff --git a/internal/service/dataset_update_test.go b/internal/service/dataset_update_test.go index 0377da1b3c..a3910c7e9e 100644 --- a/internal/service/dataset_update_test.go +++ b/internal/service/dataset_update_test.go @@ -115,6 +115,31 @@ func TestDatasetServiceUpdateDatasetUpdatesFields(t *testing.T) { } } +func TestDatasetServiceGetDatasetReturnsEmptyConnectorList(t *testing.T) { + db := setupDatasetUpdateTestDB(t) + pushServiceDB(t, db) + datasetID := "11111111111141118111111111111111" + insertDatasetUpdateKB(t, datasetID, "tenant-1", "Original") + + result, code, err := testDatasetUpdateService(t).GetDataset("11111111-1111-4111-8111-111111111111", "tenant-1") + if err != nil { + t.Fatalf("GetDataset failed: %v", err) + } + if code != common.CodeSuccess { + t.Fatalf("expected success code, got %d", code) + } + connectors, ok := result["connectors"].([]*dao.ConnectorDatasetListItem) + if !ok { + t.Fatalf("expected connector list, got %#v", result["connectors"]) + } + if connectors == nil { + t.Fatal("expected empty connector list, got nil") + } + if len(connectors) != 0 { + t.Fatalf("expected empty connector list, got %#v", connectors) + } +} + func TestDatasetServiceUpdateDatasetRejectsMissingDataset(t *testing.T) { db := setupDatasetUpdateTestDB(t) pushServiceDB(t, db) @@ -313,6 +338,7 @@ func testDatasetUpdateService(t *testing.T) *DatasetService { return &DatasetService{ kbDAO: dao.NewKnowledgebaseDAO(), + documentDAO: dao.NewDocumentDAO(), connectorDAO: dao.NewConnectorDAO(), } }