Files
2026-09-10 16:32:41 +01:00

34 lines
780 B
Go

package controller
import (
"bytes"
"encoding/json"
"fmt"
"github.com/kandev/kandev/internal/workflow/models"
)
// SessionTargetPatch distinguishes an omitted request field from an explicit
// null, which clears a previously configured target.
type SessionTargetPatch struct {
Set bool
Target *models.WorkflowSessionTarget
}
func (p *SessionTargetPatch) UnmarshalJSON(data []byte) error {
p.Set = true
if bytes.Equal(bytes.TrimSpace(data), []byte("null")) {
p.Target = nil
return nil
}
var target models.WorkflowSessionTarget
if err := json.Unmarshal(data, &target); err != nil {
return fmt.Errorf("decode session_target: %w", err)
}
if err := models.ValidateWorkflowSessionTarget(&target); err != nil {
return err
}
p.Target = &target
return nil
}