fix(generator): destroy-guard в ModifyPlan + универсальный refSvc (имя или UUID)
This commit is contained in:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user