fix(generator): destroy-guard в ModifyPlan + универсальный refSvc (имя или UUID)

This commit is contained in:
Repinoid
2026-09-21 19:57:48 +03:00
parent 7ecd2aaf44
commit 2286d34499
2 changed files with 11 additions and 5 deletions
@@ -150,7 +150,9 @@ func (r *{{ToCamel .Name}}Resource) ModifyPlan(ctx context.Context, req resource
if resp.Diagnostics.HasError() {
return
}
if req.State.Raw.IsNull() && req.Plan.Raw.IsNull() {
// Destroy-план (plan == null): create-time проверку «уже существует / adopt»
// запускать нельзя — удаление не валидируется через существование инстанса.
if req.Plan.Raw.IsNull() {
return
}
@@ -220,7 +222,7 @@ func (r *{{ToCamel .Name}}Resource) ModifyPlan(ctx context.Context, req resource
adoptExistingOnCreate = config.AdoptExistingOnCreate.ValueBool()
}
{{- if .HasRefSvcParams }}
{{- range .SchemaParams }}
{{- range .CreateParams }}
{{- if and (gt .RefSvcId 0) (eq (ParamType .) "types.String") }}
// refSvc-поле резолвим только для API-запроса.
// config не перезаписываем: пользовательский display name или UUID должен
@@ -280,7 +282,7 @@ func (r *{{ToCamel .Name}}Resource) Create(ctx context.Context, req resource.Cre
{{- end }}
{{- end }}
{{- if .HasRefSvcParams }}
{{- range .SchemaParams }}
{{- range .CreateParams }}
{{- if and (gt .RefSvcId 0) (eq (ParamType .) "types.String") }}
// refSvc-поле резолвим только для API-запроса.
// config не перезаписываем: пользовательский display name или UUID должен
@@ -315,9 +317,13 @@ func (r *{{ToCamel .Name}}Resource) Create(ctx context.Context, req resource.Cre
params := map[int]string{
{{- range .CreateParams }}
{{- if not (IsNested .) }}
{{- if and (gt .RefSvcId 0) (eq (ParamType .) "types.String") }}
{{.ID}}: resolved{{ToCamel .Code}},
{{- else }}
{{.ID}}: {{ParamFormat . (printf "data.%s" (ToCamel .Code))}},
{{- end }}
{{- end }}
{{- end }}
}
{{- range .CreateParams }}
{{- if (IsNested .) }}
@@ -99,7 +99,7 @@ func (r *{{ToCamel (printf "%s_%s" .ServiceName .SubName)}}Resource) Create(ctx
{{- end }}
{{- end }}
{{- if .HasRefSvcParams }}
{{- range .SchemaParams }}
{{- range .CreateParams }}
{{- if and (gt .RefSvcId 0) (eq (ParamType .) "types.String") }}
// Подресурсный refSvc-параметр резолвим только в локальную переменную.
// Сам plan не трогаем: UUID нужен лишь для backend-вызова, а в state
@@ -253,7 +253,7 @@ func (r *{{ToCamel (printf "%s_%s" .ServiceName .SubName)}}Resource) Update(ctx
return
}
{{- if .HasRefSvcParams }}
{{- range .SchemaParams }}
{{- range .ModifyParams }}
{{- if and (gt .RefSvcId 0) (eq (ParamType .) "types.String") }}
// Update для подресурса следует тому же правилу, что и Create:
// резолвим значение только в локальную переменную и не мутируем plan.