Mercurial > gemma
diff pkg/controllers/importqueue.go @ 1315:24e4c60c2606
Simplified and fixed filtering of import queue listing.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Fri, 23 Nov 2018 19:41:31 +0100 |
parents | 486d66a9565c |
children | d753ce6cf588 |
line wrap: on
line diff
--- a/pkg/controllers/importqueue.go Fri Nov 23 15:19:24 2018 +0100 +++ b/pkg/controllers/importqueue.go Fri Nov 23 19:41:31 2018 +0100 @@ -14,7 +14,6 @@ package controllers import ( - "context" "database/sql" "fmt" "log" @@ -91,8 +90,7 @@ func queryImportListStmt( conn *sql.Conn, - ctx context.Context, - vars map[string]string, + req *http.Request, ) (*sql.Rows, error) { var ( @@ -102,11 +100,16 @@ kinds *pgtype.TextArray ) - if st, found := vars["states"]; found { + arg := func(format string, v interface{}) { + fmt.Fprintf(&stmt, format, len(args)+1) + args = append(args, v) + } + + if st := req.FormValue("states"); st != "" { states = toTextArray(st, imports.ImportStateNames) } - if ks, found := vars["kinds"]; found { + if ks := req.FormValue("kinds"); ks != "" { kinds = toTextArray(ks, imports.ImportKindNames) } @@ -116,8 +119,7 @@ } if states != nil { - fmt.Fprintf(&stmt, " states = ANY($%d) ", len(args)+1) - args = append(args, states) + arg(" state = ANY($%d) ", states) } if states != nil && kinds != nil { @@ -125,25 +127,28 @@ } if kinds != nil { - fmt.Fprintf(&stmt, " kind = ANY($%d) ", len(args)+1) - args = append(args, kinds) + arg(" kind = ANY($%d) ", kinds) } stmt.WriteString(" ORDER BY enqueued DESC ") - if lim, found := vars["limit"]; found { - fmt.Fprintf(&stmt, " LIMIT $%d ", len(args)+1) - limit, _ := strconv.ParseInt(lim, 10, 64) - args = append(args, limit) + if lim := req.FormValue("limit"); lim != "" { + limit, err := strconv.ParseInt(lim, 10, 64) + if err != nil { + return nil, err + } + arg(" LIMIT $%d ", limit) } - if ofs, found := vars["offset"]; found { - fmt.Fprintf(&stmt, " OFFSET $%d ", len(args)+1) - offset, _ := strconv.ParseInt(ofs, 10, 64) - args = append(args, offset) + if ofs := req.FormValue("offset"); ofs != "" { + offset, err := strconv.ParseInt(ofs, 10, 64) + if err != nil { + return nil, err + } + arg(" OFFSET $%d ", offset) } - return conn.QueryContext(ctx, stmt.String(), args...) + return conn.QueryContext(req.Context(), stmt.String(), args...) } func listImports( @@ -153,7 +158,7 @@ ) (jr JSONResult, err error) { var rows *sql.Rows - rows, err = queryImportListStmt(conn, req.Context(), mux.Vars(req)) + rows, err = queryImportListStmt(conn, req) if err != nil { return }