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
+}