Mercurial > gemma
changeset 1655:34315277f2d6
Added ids filter to importqueue listing.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Fri, 21 Dec 2018 08:29:40 +0100 |
parents | 85386ad17d34 |
children | 6dfad1ad59c8 |
files | pkg/controllers/importqueue.go |
diffstat | 1 files changed, 34 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/pkg/controllers/importqueue.go Thu Dec 20 18:39:19 2018 +0100 +++ b/pkg/controllers/importqueue.go Fri Dec 21 08:29:40 2018 +0100 @@ -66,6 +66,25 @@ DELETE FROM waterway.imports WHERE id = $1` ) +func toInt8Array(txt string) *pgtype.Int8Array { + parts := strings.Split(txt, ",") + var ints []int64 + for _, part := range parts { + part = strings.TrimSpace(part) + v, err := strconv.ParseInt(part, 10, 64) + if err != nil { + continue + } + ints = append(ints, v) + } + var ia pgtype.Int8Array + if err := ia.Set(ints); err != nil { + log.Printf("warn: %v\n", err) + return nil + } + return &ia +} + func toTextArray(txt string, allowed []string) *pgtype.TextArray { parts := strings.Split(txt, ",") var accepted []string @@ -101,6 +120,7 @@ args []interface{} states *pgtype.TextArray kinds *pgtype.TextArray + ids *pgtype.Int8Array ) arg := func(format string, v interface{}) { @@ -116,8 +136,12 @@ kinds = toTextArray(ks, imports.ImportKindNames()) } + if idss := req.FormValue("ids"); idss != "" { + ids = toInt8Array(idss) + } + stmt.WriteString(selectImportsSQL) - if states != nil || kinds != nil { + if states != nil || kinds != nil || ids != nil { stmt.WriteString(" WHERE ") } @@ -125,7 +149,7 @@ arg(" state = ANY($%d) ", states) } - if states != nil && kinds != nil { + if states != nil && (kinds != nil || ids != nil) { stmt.WriteString("AND") } @@ -133,6 +157,14 @@ arg(" kind = ANY($%d) ", kinds) } + if (states != nil || kinds != nil) && ids != nil { + stmt.WriteString("AND") + } + + if ids != nil { + arg(" id = ANY($%d) ", ids) + } + stmt.WriteString(" ORDER BY enqueued DESC ") if lim := req.FormValue("limit"); lim != "" {