Mercurial > gemma
comparison pkg/controllers/gauges.go @ 4244:4394daeea96a json-handler-middleware
Moved JSONHandler into middleware package.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Thu, 22 Aug 2019 11:26:48 +0200 |
parents | d776110b4db0 |
children | 3b3cf2083730 |
comparison
equal
deleted
inserted
replaced
4243:d776110b4db0 | 4244:4394daeea96a |
---|---|
29 "github.com/gorilla/mux" | 29 "github.com/gorilla/mux" |
30 "github.com/jackc/pgx/pgtype" | 30 "github.com/jackc/pgx/pgtype" |
31 "gonum.org/v1/gonum/stat" | 31 "gonum.org/v1/gonum/stat" |
32 | 32 |
33 "gemma.intevation.de/gemma/pkg/common" | 33 "gemma.intevation.de/gemma/pkg/common" |
34 "gemma.intevation.de/gemma/pkg/middleware" | |
35 "gemma.intevation.de/gemma/pkg/models" | 34 "gemma.intevation.de/gemma/pkg/models" |
35 | |
36 mw "gemma.intevation.de/gemma/pkg/middleware" | |
36 ) | 37 ) |
37 | 38 |
38 const ( | 39 const ( |
39 selectPredictedObserveredSQL = ` | 40 selectPredictedObserveredSQL = ` |
40 SELECT | 41 SELECT |
190 return | 191 return |
191 } | 192 } |
192 | 193 |
193 year, _ := strconv.Atoi(mux.Vars(req)["year"]) | 194 year, _ := strconv.Atoi(mux.Vars(req)["year"]) |
194 | 195 |
195 conn := middleware.GetDBConn(req) | 196 conn := mw.GetDBConn(req) |
196 | 197 |
197 ctx := req.Context() | 198 ctx := req.Context() |
198 | 199 |
199 begin := time.Date(year, time.January, 1, 0, 0, 0, 0, time.UTC) | 200 begin := time.Date(year, time.January, 1, 0, 0, 0, 0, time.UTC) |
200 end := time.Date(year+1, time.January, 1, 0, 0, 0, 0, time.UTC).Add(-time.Microsecond) | 201 end := time.Date(year+1, time.January, 1, 0, 0, 0, 0, time.UTC).Add(-time.Microsecond) |
280 rw, fmt.Sprintf("error: Invalid ISRS code: %v", err), | 281 rw, fmt.Sprintf("error: Invalid ISRS code: %v", err), |
281 http.StatusBadRequest) | 282 http.StatusBadRequest) |
282 return | 283 return |
283 } | 284 } |
284 | 285 |
285 conn := middleware.GetDBConn(req) | 286 conn := mw.GetDBConn(req) |
286 | 287 |
287 ctx := req.Context() | 288 ctx := req.Context() |
288 | 289 |
289 var begin, end pgtype.Timestamp | 290 var begin, end pgtype.Timestamp |
290 | 291 |
444 } | 445 } |
445 | 446 |
446 func parseISRS(code string) (*models.Isrs, error) { | 447 func parseISRS(code string) (*models.Isrs, error) { |
447 isrs, err := models.IsrsFromString(code) | 448 isrs, err := models.IsrsFromString(code) |
448 if err != nil { | 449 if err != nil { |
449 return nil, JSONError{ | 450 return nil, mw.JSONError{ |
450 Code: http.StatusBadRequest, | 451 Code: http.StatusBadRequest, |
451 Message: fmt.Sprintf("error: Invalid ISRS code: %v", err), | 452 Message: fmt.Sprintf("error: Invalid ISRS code: %v", err), |
452 } | 453 } |
453 } | 454 } |
454 return isrs, nil | 455 return isrs, nil |
572 // } | 573 // } |
573 | 574 |
574 return values, nil | 575 return values, nil |
575 } | 576 } |
576 | 577 |
577 func nashSutcliffe(req *http.Request) (jr JSONResult, err error) { | 578 func nashSutcliffe(req *http.Request) (jr mw.JSONResult, err error) { |
578 | 579 |
579 gauge := mux.Vars(req)["gauge"] | 580 gauge := mux.Vars(req)["gauge"] |
580 | 581 |
581 var isrs *models.Isrs | 582 var isrs *models.Isrs |
582 if isrs, err = parseISRS(gauge); err != nil { | 583 if isrs, err = parseISRS(gauge); err != nil { |
584 } | 585 } |
585 | 586 |
586 var when time.Time | 587 var when time.Time |
587 if w := req.FormValue("when"); w != "" { | 588 if w := req.FormValue("when"); w != "" { |
588 if when, err = common.ParseTime(w); err != nil { | 589 if when, err = common.ParseTime(w); err != nil { |
589 err = JSONError{ | 590 err = mw.JSONError{ |
590 Code: http.StatusBadRequest, | 591 Code: http.StatusBadRequest, |
591 Message: fmt.Sprintf("error: wrong time format: %v", err), | 592 Message: fmt.Sprintf("error: wrong time format: %v", err), |
592 } | 593 } |
593 return | 594 return |
594 } | 595 } |
599 | 600 |
600 ctx := req.Context() | 601 ctx := req.Context() |
601 | 602 |
602 var values []observedPredictedValues | 603 var values []observedPredictedValues |
603 | 604 |
604 if values, err = loadNashSutcliffeData(ctx, JSONConn(req), isrs, when); err != nil { | 605 if values, err = loadNashSutcliffeData(ctx, mw.JSONConn(req), isrs, when); err != nil { |
605 return | 606 return |
606 } | 607 } |
607 | 608 |
608 log.Printf("info: found %d value(s) for Nash Sutcliffe.\n", len(values)) | 609 log.Printf("info: found %d value(s) for Nash Sutcliffe.\n", len(values)) |
609 | 610 |
638 | 639 |
639 predicted = predicted[:0] | 640 predicted = predicted[:0] |
640 observed = observed[:0] | 641 observed = observed[:0] |
641 } | 642 } |
642 | 643 |
643 jr = JSONResult{ | 644 jr = mw.JSONResult{ |
644 Result: &coeffs{ | 645 Result: &coeffs{ |
645 When: models.ImportTime{Time: when}, | 646 When: models.ImportTime{Time: when}, |
646 Coeffs: cs, | 647 Coeffs: cs, |
647 }, | 648 }, |
648 } | 649 } |
724 var args []interface{} | 725 var args []interface{} |
725 | 726 |
726 stmt.WriteString(selectWaterlevelsSQL) | 727 stmt.WriteString(selectWaterlevelsSQL) |
727 filters.serialize(&stmt, &args) | 728 filters.serialize(&stmt, &args) |
728 | 729 |
729 conn := middleware.GetDBConn(req) | 730 conn := mw.GetDBConn(req) |
730 | 731 |
731 ctx := req.Context() | 732 ctx := req.Context() |
732 | 733 |
733 rows, err := conn.QueryContext(ctx, stmt.String(), args...) | 734 rows, err := conn.QueryContext(ctx, stmt.String(), args...) |
734 if err != nil { | 735 if err != nil { |