Skip to content

Commit

Permalink
👻 Task.Data revert back to any. (#646)
Browse files Browse the repository at this point in the history
Signed-off-by: Jeff Ortel <jortel@redhat.com>
  • Loading branch information
jortel authored Jun 8, 2024
1 parent 662db45 commit 6e91e64
Show file tree
Hide file tree
Showing 6 changed files with 48 additions and 20 deletions.
2 changes: 1 addition & 1 deletion addon/task.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ func (h *Task) Addon(inject bool) (r *api.Addon, err error) {
}

// Data returns the addon data.
func (h *Task) Data() (d api.Map) {
func (h *Task) Data() (d any) {
d = h.task.Data
return
}
Expand Down
22 changes: 11 additions & 11 deletions api/task.go
Original file line number Diff line number Diff line change
Expand Up @@ -586,7 +586,7 @@ type Task struct {
Priority int `json:"priority,omitempty" yaml:",omitempty"`
Policy TaskPolicy `json:"policy,omitempty" yaml:",omitempty"`
TTL TTL `json:"ttl,omitempty" yaml:",omitempty"`
Data Map `json:"data,omitempty" yaml:",omitempty"`
Data any `json:"data,omitempty" yaml:",omitempty"`
Application *Ref `json:"application,omitempty" yaml:",omitempty"`
Actions []string `json:"actions,omitempty" yaml:",omitempty"`
Bucket *Ref `json:"bucket,omitempty" yaml:",omitempty"`
Expand All @@ -612,16 +612,16 @@ func (r *Task) With(m *model.Task) {
r.Priority = m.Priority
r.Policy = TaskPolicy(m.Policy)
r.TTL = TTL(m.TTL)
r.Data = m.Data
r.Data = m.Data.Any
r.Application = r.refPtr(m.ApplicationID, m.Application)
r.Bucket = r.refPtr(m.BucketID, m.Bucket)
r.Pod = m.Pod
r.Retries = m.Retries
r.Started = m.Started
r.Terminated = m.Terminated
r.Events = nil
r.Errors = nil
r.Attached = nil
r.Events = make([]TaskEvent, 0)
r.Errors = make([]TaskError, 0)
r.Attached = make([]Attachment, 0)
for _, event := range m.Events {
r.Events = append(r.Events, TaskEvent(event))
}
Expand Down Expand Up @@ -662,10 +662,10 @@ func (r *Task) Model() (m *model.Task) {
Priority: r.Priority,
Policy: model.TaskPolicy(r.Policy),
TTL: model.TTL(r.TTL),
Data: r.Data,
ApplicationID: r.idPtr(r.Application),
}
m.ID = r.ID
m.Data.Any = r.Data
return
}

Expand Down Expand Up @@ -717,7 +717,7 @@ type TaskReport struct {
Completed int `json:"completed,omitempty" yaml:",omitempty"`
Activity []string `json:"activity,omitempty" yaml:",omitempty"`
Attached []Attachment `json:"attached,omitempty" yaml:",omitempty"`
Result Map `json:"result,omitempty" yaml:",omitempty"`
Result any `json:"result,omitempty" yaml:",omitempty"`
TaskID uint `json:"task"`
}

Expand All @@ -729,9 +729,9 @@ func (r *TaskReport) With(m *model.TaskReport) {
r.Completed = m.Completed
r.TaskID = m.TaskID
r.Activity = m.Activity
r.Result = m.Result
r.Errors = nil
r.Attached = nil
r.Result = m.Result.Any
r.Errors = make([]TaskError, 0)
r.Attached = make([]Attachment, 0)
for _, err := range m.Errors {
r.Errors = append(r.Errors, TaskError(err))
}
Expand All @@ -750,10 +750,10 @@ func (r *TaskReport) Model() (m *model.TaskReport) {
Total: r.Total,
Completed: r.Completed,
Activity: r.Activity,
Result: r.Result,
TaskID: r.TaskID,
}
m.ID = r.ID
m.Result.Any = r.Result
for _, err := range r.Errors {
m.Errors = append(m.Errors, model.TaskError(err))
}
Expand Down
6 changes: 3 additions & 3 deletions api/taskgroup.go
Original file line number Diff line number Diff line change
Expand Up @@ -477,7 +477,7 @@ type TaskGroup struct {
State string `json:"state"`
Priority int `json:"priority,omitempty" yaml:",omitempty"`
Policy TaskPolicy `json:"policy,omitempty" yaml:",omitempty"`
Data Map `json:"data" swaggertype:"object" binding:"required"`
Data any `json:"data" swaggertype:"object" binding:"required"`
Bucket *Ref `json:"bucket,omitempty"`
Tasks []Task `json:"tasks"`
}
Expand All @@ -492,7 +492,7 @@ func (r *TaskGroup) With(m *model.TaskGroup) {
r.State = m.State
r.Priority = m.Priority
r.Policy = TaskPolicy(m.Policy)
r.Data = m.Data
r.Data = m.Data.Any
r.Bucket = r.refPtr(m.BucketID, m.Bucket)
r.Tasks = []Task{}
switch m.State {
Expand Down Expand Up @@ -525,9 +525,9 @@ func (r *TaskGroup) Model() (m *model.TaskGroup) {
State: r.State,
Priority: r.Priority,
Policy: model.TaskPolicy(r.Policy),
Data: r.Data,
}
m.ID = r.ID
m.Data.Any = r.Data
for _, task := range r.Tasks {
m.List = append(m.List, *task.Model())
}
Expand Down
24 changes: 19 additions & 5 deletions migration/v13/model/core.go
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ type Task struct {
Priority int
Policy TaskPolicy `gorm:"type:json;serializer:json"`
TTL TTL `gorm:"type:json;serializer:json"`
Data Map `gorm:"type:json;serializer:json"`
Data Data `gorm:"type:json;serializer:json"`
Started *time.Time
Terminated *time.Time
Errors []TaskError `gorm:"type:json;serializer:json"`
Expand Down Expand Up @@ -157,6 +157,14 @@ type TaskEvent struct {
// Map alias.
type Map = map[string]any

// Any alias.
type Any any

// Data json any field.
type Data struct {
Any
}

// TTL time-to-live.
type TTL struct {
Created int `json:"created,omitempty" yaml:",omitempty"`
Expand Down Expand Up @@ -200,7 +208,7 @@ type TaskReport struct {
Activity []string `gorm:"type:json;serializer:json"`
Errors []TaskError `gorm:"type:json;serializer:json"`
Attached []Attachment `gorm:"type:json;serializer:json" ref:"[]file"`
Result Map `gorm:"type:json;serializer:json"`
Result Data `gorm:"type:json;serializer:json"`
TaskID uint `gorm:"<-:create;uniqueIndex"`
Task *Task
}
Expand All @@ -215,7 +223,7 @@ type TaskGroup struct {
State string
Priority int
Policy TaskPolicy `gorm:"type:json;serializer:json"`
Data Map `gorm:"type:json;serializer:json"`
Data Data `gorm:"type:json;serializer:json"`
List []Task `gorm:"type:json;serializer:json"`
Tasks []Task `gorm:"constraint:OnDelete:CASCADE"`
}
Expand All @@ -231,8 +239,14 @@ func (m *TaskGroup) Propagate() (err error) {
task.Policy = m.Policy
task.State = m.State
task.SetBucket(m.BucketID)
if m.Data != nil {
task.Data = m.merge(m.Data, task.Data)
if m.Data.Any != nil {
mA, castA := m.Data.Any.(map[string]any)
mB, castB := task.Data.Any.(map[string]any)
if castA && castB {
task.Data.Any = m.merge(mA, mB)
} else {
task.Data.Any = m.Data
}
}
}

Expand Down
1 change: 1 addition & 0 deletions model/pkg.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ type Tracker = model.Tracker
type TTL = model.TTL
type Ref = model.Ref
type Map = model.Map
type Data = model.Data

type TaskError = model.TaskError
type TaskEvent = model.TaskEvent
Expand Down
13 changes: 13 additions & 0 deletions model/serializer.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,15 @@ func (r jsonSerializer) Scan(ctx context.Context, field *schema.Field, dst refle
}
if len(b) > 0 {
ptr := fieldValue.Interface()
switch d := ptr.(type) {
case *Data:
ptr = &d.Any
default:
}
err = json.Unmarshal(b, ptr)
if err != nil {
return
}
}
}
v := fieldValue.Elem()
Expand All @@ -43,6 +51,11 @@ func (r jsonSerializer) Scan(ctx context.Context, field *schema.Field, dst refle
// Value implements serializer.
func (r jsonSerializer) Value(_ context.Context, _ *schema.Field, _ reflect.Value, fieldValue any) (v any, err error) {
mp := r.jMap(fieldValue)
switch d := mp.(type) {
case Data:
mp = d.Any
default:
}
v, err = json.Marshal(mp)
return
}
Expand Down

0 comments on commit 6e91e64

Please sign in to comment.