Mercurial > gemma
diff pkg/controllers/common.go @ 3217:4c254651d80b
Added template types "map", "diagram", "report".
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Thu, 09 May 2019 12:08:02 +0200 |
parents | eeff2cc4ff9d |
children | 6521c962a7b6 |
line wrap: on
line diff
--- a/pkg/controllers/common.go Thu May 09 11:56:11 2019 +0200 +++ b/pkg/controllers/common.go Thu May 09 12:08:02 2019 +0200 @@ -15,7 +15,11 @@ import ( "fmt" + "log" + "strconv" "strings" + + "github.com/jackc/pgx/pgtype" ) type ( @@ -76,3 +80,47 @@ fn.filterNode.serialize(stmt, args) stmt.WriteByte(')') } + +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 + for _, part := range parts { + if part = strings.ToLower(strings.TrimSpace(part)); len(part) == 0 { + continue + } + for _, a := range allowed { + if part == a { + accepted = append(accepted, part) + break + } + } + } + if len(accepted) == 0 { + return nil + } + var ta pgtype.TextArray + if err := ta.Set(accepted); err != nil { + log.Printf("warn: %v\n", err) + return nil + } + return &ta +}