From a6ea7a79e89e50ec60744609db409db6be5a02df Mon Sep 17 00:00:00 2001 From: bel Date: Sun, 15 Mar 2020 16:41:41 +0000 Subject: [PATCH] implement upsert, list in UI --- scheduler/job.go | 2 -- server/list.go | 49 ++++++++++++++++++++++++++++++++++++++++++++++ server/routes.go | 50 ----------------------------------------------- server/upserts.go | 12 ++++++++++++ 4 files changed, 61 insertions(+), 52 deletions(-) create mode 100755 server/list.go diff --git a/scheduler/job.go b/scheduler/job.go index 4833d6d..6414b9f 100755 --- a/scheduler/job.go +++ b/scheduler/job.go @@ -6,7 +6,6 @@ import ( "fmt" "local/firestormy/config" "local/firestormy/config/ns" - "local/firestormy/logger" "os/exec" "strings" "time" @@ -58,7 +57,6 @@ func newBashJob(schedule, sh string) (*Job, error) { if cmd != nil && cmd.ProcessState != nil { j.LastStatus = cmd.ProcessState.ExitCode() } - logger.New().Info(fmt.Sprintf("%+v", j)) b, err := j.Encode() if err == nil { // TODO webpage doenst load post SET despite this returning nil diff --git a/server/list.go b/server/list.go new file mode 100755 index 0000000..2be8ec0 --- /dev/null +++ b/server/list.go @@ -0,0 +1,49 @@ +package server + +import ( + "encoding/json" + "local/firestormy/config" + "local/firestormy/config/ns" + "local/firestormy/scheduler" + "net/http" + "sort" + "time" +) + +func (s *Server) list(w http.ResponseWriter, r *http.Request) { + jobs, err := config.Store.List(ns.Jobs) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + sort.Strings(jobs) + out := make([]map[string]interface{}, len(jobs)) + for i, job := range jobs { + out[i] = make(map[string]interface{}) + b, err := config.Store.Get(job, ns.Jobs...) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + j := &scheduler.Job{} + if err := j.Decode(b); err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + tz, err := time.LoadLocation("America/Denver") + if err != nil { + panic(err) + } + out[i]["id"] = j.Name + out[i]["cron"] = j.Schedule + out[i]["language"] = j.Runner.String() + out[i]["script"] = j.Raw + out[i]["last"] = map[string]interface{}{ + "run": j.LastRun.In(tz).Format(`2006-01-02 15:04:05 MST`), + "runtime": j.LastRuntime.String(), + "output": string(j.LastOutput), + "status": j.LastStatus, + } + } + json.NewEncoder(w).Encode(out) +} diff --git a/server/routes.go b/server/routes.go index bca37c1..097b7c0 100755 --- a/server/routes.go +++ b/server/routes.go @@ -1,15 +1,9 @@ package server import ( - "encoding/json" "fmt" - "local/firestormy/config" - "local/firestormy/config/ns" - "local/firestormy/scheduler" "local/router" - "log" "net/http" - "sort" ) func (s *Server) Routes() error { @@ -43,47 +37,3 @@ func (s *Server) Routes() error { func (s *Server) static(w http.ResponseWriter, r *http.Request) { s.fileServer.ServeHTTP(w, r) } - -func (s *Server) upserts(w http.ResponseWriter, r *http.Request) { - upsert, err := newUpsertRequest(r.Body) - if err != nil { - http.Error(w, err.Error(), http.StatusBadRequest) - return - } - log.Println("received", upsert) - http.Error(w, "not impl", http.StatusNotImplemented) -} - -func (s *Server) list(w http.ResponseWriter, r *http.Request) { - jobs, err := config.Store.List(ns.Jobs) - if err != nil { - http.Error(w, err.Error(), http.StatusInternalServerError) - return - } - sort.Strings(jobs) - out := make([]map[string]interface{}, len(jobs)) - for i, job := range jobs { - out[i] = make(map[string]interface{}) - b, err := config.Store.Get(job, ns.Jobs...) - if err != nil { - http.Error(w, err.Error(), http.StatusInternalServerError) - return - } - j := &scheduler.Job{} - if err := j.Decode(b); err != nil { - http.Error(w, err.Error(), http.StatusInternalServerError) - return - } - out[i]["id"] = j.Name - out[i]["cron"] = j.Schedule - out[i]["language"] = j.Runner.String() - out[i]["script"] = j.Raw - out[i]["last"] = map[string]interface{}{ - "run": j.LastRun, - "runtime": j.LastRuntime, - "output": j.LastOutput, - "status": j.LastStatus, - } - } - json.NewEncoder(w).Encode(out) -} diff --git a/server/upserts.go b/server/upserts.go index c3674a5..babda4c 100755 --- a/server/upserts.go +++ b/server/upserts.go @@ -7,6 +7,8 @@ import ( "io" "local/firestormy/config" "local/firestormy/config/ns" + "log" + "net/http" "github.com/google/uuid" ) @@ -44,3 +46,13 @@ func (u *upsertRequest) validate() error { } return nil } + +func (s *Server) upserts(w http.ResponseWriter, r *http.Request) { + upsert, err := newUpsertRequest(r.Body) + if err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + log.Println("received", upsert) + http.Error(w, "not impl", http.StatusNotImplemented) +}