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
 	}