Mercurial > gemma
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 }