diff pkg/controllers/importqueue.go @ 3190:54a3e40cfbed

controllers: moved filter builder to a separate file.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Wed, 08 May 2019 10:50:14 +0200
parents 813309225e35
children eeff2cc4ff9d
line wrap: on
line diff
--- a/pkg/controllers/importqueue.go	Wed May 08 10:37:47 2019 +0200
+++ b/pkg/controllers/importqueue.go	Wed May 08 10:50:14 2019 +0200
@@ -132,30 +132,6 @@
 	return &ta
 }
 
-type filterBuilder struct {
-	stmt    strings.Builder
-	args    []interface{}
-	hasCond bool
-}
-
-func (fb *filterBuilder) arg(format string, v ...interface{}) {
-	indices := make([]interface{}, len(v))
-	for i := range indices {
-		indices[i] = len(fb.args) + i + 1
-	}
-	fmt.Fprintf(&fb.stmt, format, indices...)
-	fb.args = append(fb.args, v...)
-}
-
-func (fb *filterBuilder) cond(format string, v ...interface{}) {
-	if fb.hasCond {
-		fb.stmt.WriteString(" AND ")
-	} else {
-		fb.hasCond = true
-	}
-	fb.arg(format, v...)
-}
-
 func buildFilters(req *http.Request) (l, b, a *filterBuilder, err error) {
 
 	l = new(filterBuilder)
@@ -177,9 +153,9 @@
 	b.stmt.WriteString(selectBeforeSQL)
 
 	cond := func(format string, v ...interface{}) {
-		l.cond(format, v...)
-		a.cond(format, v...)
-		b.cond(format, v...)
+		l.and(format, v...)
+		a.and(format, v...)
+		b.and(format, v...)
 	}
 
 	if query := req.FormValue("query"); query != "" {
@@ -209,8 +185,8 @@
 		if fromTime, err = time.Parse(models.ImportTimeFormat, from); err != nil {
 			return
 		}
-		l.cond(" enqueued >= $%d ", fromTime)
-		b.cond(" enqueued < $%d", fromTime)
+		l.and(" enqueued >= $%d ", fromTime)
+		b.and(" enqueued < $%d", fromTime)
 	} else {
 		noBefore = true
 	}
@@ -220,8 +196,8 @@
 		if toTime, err = time.Parse(models.ImportTimeFormat, to); err != nil {
 			return
 		}
-		l.cond(" enqueued <= $%d ", toTime)
-		a.cond(" enqueued > $%d", toTime)
+		l.and(" enqueued <= $%d ", toTime)
+		a.and(" enqueued > $%d", toTime)
 	} else {
 		noAfter = true
 	}