Mercurial > gemma
changeset 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 | 5d9e0adf73d1 |
files | pkg/controllers/routes.go pkg/controllers/scheduler.go pkg/models/scheduler.go schema/gemma.sql |
diffstat | 4 files changed, 77 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/pkg/controllers/routes.go Thu Dec 13 18:08:17 2018 +0100 +++ b/pkg/controllers/routes.go Thu Dec 13 18:37:35 2018 +0100 @@ -175,6 +175,12 @@ Handle: importBottleneck, })).Methods(http.MethodPost) + // Import scheduler configuration + api.Handle("/imports/scheduler", + waterwayAdmin(&JSONHandler{ + Handle: listScheduler, + })).Methods(http.MethodGet) + // Import queue lsImports := waterwayAdmin(&JSONHandler{ Handle: listImports, @@ -202,12 +208,6 @@ Handle: reviewImport, })).Methods(http.MethodPut) - // Import scheduler configuration - api.Handle("/imports/scheduler}", - waterwayAdmin(&JSONHandler{ - Handle: listScheduler, - })).Methods(http.MethodGet) - // Token handling: Login/Logout. api.HandleFunc("/login", login). Methods(http.MethodPost)
--- 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 }
--- a/pkg/models/scheduler.go Thu Dec 13 18:08:17 2018 +0100 +++ b/pkg/models/scheduler.go Thu Dec 13 18:37:35 2018 +0100 @@ -28,11 +28,20 @@ ImportConfig struct { Kind ImportKind `json:"kind"` - Cron CronSpec `json:"cron"` SendEMail bool `json:"send-email"` AutoAccept bool `json:"auto-accept"` + Cron *CronSpec `json:"cron"` URL *string `json:"url"` } + + IDImportConfig struct { + ID int64 `json:"id"` + Kind ImportKind `json:"kind"` + SendEMail bool `json:"send-email"` + AutoAccept bool `json:"auto-accept"` + Cron *CronSpec `json:"cron,omitempty"` + URL *string `json:"url,omitempty"` + } ) func (ik *ImportKind) UnmarshalJSON(data []byte) error {
--- a/schema/gemma.sql Thu Dec 13 18:08:17 2018 +0100 +++ b/schema/gemma.sql Thu Dec 13 18:37:35 2018 +0100 @@ -550,6 +550,8 @@ ON DELETE CASCADE ON UPDATE CASCADE, kind varchar NOT NULL, + send_email boolean NOT NULL DEFAULT false, + auto_accept boolean NOT NULL DEFAULT false, cron varchar, url varchar )