fix(generator): inherit nested schema across operation params

This commit is contained in:
“Naeel”
2026-09-03 10:54:59 +03:00
parent 9ebe5b19d6
commit b76e0d1086
2 changed files with 44 additions and 3 deletions
@@ -94,11 +94,15 @@ func AlignParamTypes(params []types.Param, schema []types.Param) []types.Param {
schemaByCode[strings.ToLower(strings.TrimSpace(p.Code))] = p schemaByCode[strings.ToLower(strings.TrimSpace(p.Code))] = p
} }
for i, p := range params { for i, p := range params {
if !p.HasSubParams { key := strings.ToLower(strings.TrimSpace(p.Code))
sp, ok := schemaByCode[key]
if !ok || !sp.HasSubParams {
continue continue
} }
key := strings.ToLower(strings.TrimSpace(p.Code)) params[i].HasSubParams = true
if sp, ok := schemaByCode[key]; ok && len(sp.SubParams) > 0 { 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) params[i].SubParams = AlignParamTypes(p.SubParams, sp.SubParams)
} }
} }
@@ -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)
}
}