# HG changeset patch # User Sascha L. Teichmann # Date 1548433783 -3600 # Node ID 58b77f6b8764dd0f667e46e98fb31a7ce7c247d1 # Parent d29ac997eb34c429f710a020d9bdbcd1f57eccd7 Imports: completed the starting of a scheduled job. diff -r d29ac997eb34 -r 58b77f6b8764 pkg/imports/scheduled.go --- a/pkg/imports/scheduled.go Fri Jan 25 16:07:09 2019 +0100 +++ b/pkg/imports/scheduled.go Fri Jan 25 17:29:43 2019 +0100 @@ -18,7 +18,9 @@ "database/sql" "fmt" "log" + "time" + "gemma.intevation.de/gemma/pkg/common" "gemma.intevation.de/gemma/pkg/models" "gemma.intevation.de/gemma/pkg/scheduler" ) @@ -68,63 +70,56 @@ what := ctor() + // Fill the data structure + if um, ok := what.(common.AttributesUnmarshaler); ok { + if err := um.UnmarshalAttributes(cfg.Attributes); err != nil { + return 0, err + } + } + + converted := ConvertToInternal(kind, what) + if converted == nil { + return 0, fmt.Errorf("Conversion of model for kind '%s' failed.", kind) + } + + var serialized string + if serialized, err = common.ToJSONString(converted); err != nil { + return 0, err + } + + // Extract the job runtime parameters. + var ( + email bool + due time.Time + trys *int + waitRetry *time.Duration + ) + if gqc, ok := what.(models.QueueConfigurationGetter); ok { qc := gqc.GetQueueConfiguration() - _ = qc - // TODO: More. + if qc.Due != nil { + due = *qc.Due + } + trys = qc.Trys + waitRetry = qc.WaitRetry } if ge, ok := what.(models.EmailTypeGetter); ok { - e := ge.GetEmailType() - _ = e - // TODO: More. + email = ge.GetEmailType().Email } - /* - - setup := JobKindSetups[kind] - if setup == nil { - return 0, fmt.Errorf("unknown job kind: %s", cfg.Kind) - } - - what, err := setup(cfg) - if err != nil { - return 0, err - } - - var serialized string - if serialized, err = common.ToJSONString(what); err != nil { - return 0, err - } - - due, _ := cfg.Attributes.Time("due") + var jobID int64 + if jobID, err = AddJob( + kind, + due, + trys, + waitRetry, + cfg.User, + email, + serialized, + ); err != nil { + return 0, err + } - ret, found := cfg.Attributes.Int("retries") - var retries *int - if found { - retries = &ret - } - - dur, found := cfg.Attributes.Duration("wait-retry") - var waitRetry *time.Duration - if found { - waitRetry = &dur - } - - var jobID int64 - if jobID, err = AddJob( - kind, - due, - retries, - waitRetry, - cfg.User, - cfg.SendEMail, - serialized, - ); err != nil { - return 0, err - } - - return jobID, nil - */ - return 0, nil + return jobID, nil }