save: unsaved changes (loader.go + types.go)

This commit is contained in:
“Naeel”
2026-07-16 14:57:08 +04:00
parent 6929562fc9
commit ef72486bd7
2 changed files with 19 additions and 1 deletions
@@ -229,6 +229,15 @@ func ConvertParams(params []types.ParamSpec) []types.Param {
if p.RefSvcID != nil { if p.RefSvcID != nil {
ref = *p.RefSvcID ref = *p.RefSvcID
} }
isNested := len(p.SubParams) > 0
// Рекурсивно конвертируем SubParams для map-fixed/array-map-fixed.
subParams := make([]types.Param, 0, len(p.SubParams))
for _, sp := range p.SubParams {
sub := ConvertParams([]types.ParamSpec{sp})
if len(sub) > 0 {
subParams = append(subParams, sub[0])
}
}
out = append(out, types.Param{ out = append(out, types.Param{
ID: p.ID, ID: p.ID,
Code: p.Code, Code: p.Code,
@@ -240,14 +249,19 @@ func ConvertParams(params []types.ParamSpec) []types.Param {
Man: strings.TrimSpace(p.Man), Man: strings.TrimSpace(p.Man),
Sensitive: p.IsSensitive, Sensitive: p.IsSensitive,
IsJson: strings.EqualFold(strings.TrimSpace(p.DataType), "json"), IsJson: strings.EqualFold(strings.TrimSpace(p.DataType), "json"),
IsNested: isNested,
SubParams: subParams,
}) })
} }
return out return out
} }
// NormalizeParamType нормализует строку data_type → bool | int64 | string. // NormalizeParamType нормализует строку data_type → bool | int64 | string | map-fixed | array-map-fixed.
func NormalizeParamType(value string) string { func NormalizeParamType(value string) string {
v := strings.ToLower(strings.TrimSpace(value)) v := strings.ToLower(strings.TrimSpace(value))
if v == "map-fixed" || v == "array-map-fixed" {
return v
}
if strings.Contains(v, "bool") { if strings.Contains(v, "bool") {
return "bool" return "bool"
} }
@@ -53,6 +53,10 @@ type Param struct {
// При IsJson=true в схему добавляется JsonNormalize план-модификатор, // При IsJson=true в схему добавляется JsonNormalize план-модификатор,
// чтобы план и API-ответ (компактный JSON) всегда совпадали. // чтобы план и API-ответ (компактный JSON) всегда совпадали.
IsJson bool IsJson bool
// IsNested — параметр типа map-fixed/array-map-fixed с подполями.
IsNested bool
// SubParams — подполя для map-fixed/array-map-fixed параметров.
SubParams []Param
} }
// GenResource — ресурс инстанса (nubes_{service}). // GenResource — ресурс инстанса (nubes_{service}).