diff pkg/imports/scheduled.go @ 2043:58b77f6b8764 unify_imports

Imports: completed the starting of a scheduled job.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Fri, 25 Jan 2019 17:29:43 +0100
parents d29ac997eb34
children ea0b62b7656b
line wrap: on
line diff
--- 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
 }