From b76e0d1086c2c87cecc9a9f8ae9f8d57ff39ddc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Thu, 3 Sep 2026 10:54:59 +0300 Subject: [PATCH] fix(generator): inherit nested schema across operation params --- .../internal/params/params.go | 10 +++-- .../internal/params/params_test.go | 37 +++++++++++++++++++ 2 files changed, 44 insertions(+), 3 deletions(-) create mode 100644 TOOLS/resource-generator/internal/params/params_test.go diff --git a/TOOLS/resource-generator/internal/params/params.go b/TOOLS/resource-generator/internal/params/params.go index 4f3d65a..46abd93 100644 --- a/TOOLS/resource-generator/internal/params/params.go +++ b/TOOLS/resource-generator/internal/params/params.go @@ -94,11 +94,15 @@ func AlignParamTypes(params []types.Param, schema []types.Param) []types.Param { schemaByCode[strings.ToLower(strings.TrimSpace(p.Code))] = p } for i, p := range params { - if !p.HasSubParams { + key := strings.ToLower(strings.TrimSpace(p.Code)) + sp, ok := schemaByCode[key] + if !ok || !sp.HasSubParams { continue } - key := strings.ToLower(strings.TrimSpace(p.Code)) - if sp, ok := schemaByCode[key]; ok && len(sp.SubParams) > 0 { + params[i].HasSubParams = true + if len(p.SubParams) == 0 { + params[i].SubParams = append([]types.Param(nil), sp.SubParams...) + } else if len(sp.SubParams) > 0 { params[i].SubParams = AlignParamTypes(p.SubParams, sp.SubParams) } } diff --git a/TOOLS/resource-generator/internal/params/params_test.go b/TOOLS/resource-generator/internal/params/params_test.go new file mode 100644 index 0000000..be1f260 --- /dev/null +++ b/TOOLS/resource-generator/internal/params/params_test.go @@ -0,0 +1,37 @@ +package params + +import ( + "testing" + + "resource-generator/internal/types" +) + +func TestAlignParamTypesInheritsNestedStructure(t *testing.T) { + schema := []types.Param{{ + Code: "jsonEnv", + Type: "string", + HasSubParams: true, + SubParams: []types.Param{{ + Code: "DB_PASS", + Type: "string", + }}, + }} + modify := []types.Param{{ + Code: "jsonEnv", + Type: "map", + }} + + got := AlignParamTypes(modify, schema) + if len(got) != 1 { + t.Fatalf("expected one parameter, got %d", len(got)) + } + if !got[0].HasSubParams { + t.Fatal("expected nested structure to be inherited") + } + if len(got[0].SubParams) != 1 || got[0].SubParams[0].Code != "DB_PASS" { + t.Fatalf("expected schema sub-params to be inherited, got %#v", got[0].SubParams) + } + if got[0].Type != "string" { + t.Fatalf("expected type to align with schema, got %q", got[0].Type) + } +}