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 {