diff pkg/controllers/scheduler.go @ 1583:caedd9b176f2

Added GET to /api/imports/scheduler.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Thu, 13 Dec 2018 18:37:35 +0100
parents dc727824183a
children e0bd82f6ee14
line wrap: on
line diff
--- a/pkg/controllers/scheduler.go	Thu Dec 13 18:08:17 2018 +0100
+++ b/pkg/controllers/scheduler.go	Thu Dec 13 18:37:35 2018 +0100
@@ -16,6 +16,22 @@
 import (
 	"database/sql"
 	"net/http"
+
+	"gemma.intevation.de/gemma/pkg/models"
+)
+
+const (
+	selectImportConfigurationSQL = `
+SELECT
+  id,
+  username,
+  kind,
+  send_email,
+  auto_accept,
+  cron,
+  url
+FROM waterway.import_configuration
+ORDER by id`
 )
 
 func listScheduler(
@@ -23,6 +39,48 @@
 	req *http.Request,
 	conn *sql.Conn,
 ) (jr JSONResult, err error) {
-	// TODO: Implement me!
+
+	ctx := req.Context()
+	var rows *sql.Rows
+
+	if rows, err = conn.QueryContext(ctx, selectImportConfigurationSQL); err != nil {
+		return
+	}
+	defer rows.Close()
+
+	list := []*models.IDImportConfig{}
+
+	for rows.Next() {
+		var (
+			entry models.IDImportConfig
+			kind  string
+			cron  sql.NullString
+			url   sql.NullString
+		)
+		if err = rows.Scan(
+			&entry.ID,
+			&kind,
+			&entry.SendEMail,
+			&entry.AutoAccept,
+			&cron,
+		); err != nil {
+			return
+		}
+		entry.Kind = models.ImportKind(kind)
+		if cron.Valid {
+			cs := models.CronSpec(cron.String)
+			entry.Cron = &cs
+		}
+		if url.Valid {
+			entry.URL = &url.String
+		}
+		list = append(list, &entry)
+	}
+
+	if err = rows.Err(); err != nil {
+		return
+	}
+
+	jr = JSONResult{Result: list}
 	return
 }