diff pkg/controllers/importqueue.go @ 4244:4394daeea96a json-handler-middleware

Moved JSONHandler into middleware package.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Thu, 22 Aug 2019 11:26:48 +0200
parents d776110b4db0
children 47922c1a088d
line wrap: on
line diff
--- a/pkg/controllers/importqueue.go	Thu Aug 22 10:54:08 2019 +0200
+++ b/pkg/controllers/importqueue.go	Thu Aug 22 11:26:48 2019 +0200
@@ -30,6 +30,8 @@
 	"gemma.intevation.de/gemma/pkg/common"
 	"gemma.intevation.de/gemma/pkg/imports"
 	"gemma.intevation.de/gemma/pkg/models"
+
+	mw "gemma.intevation.de/gemma/pkg/middleware"
 )
 
 const (
@@ -228,7 +230,7 @@
 	return &models.ImportTime{Time: when.UTC()}
 }
 
-func listImports(req *http.Request) (jr JSONResult, err error) {
+func listImports(req *http.Request) (jr mw.JSONResult, err error) {
 
 	var list, before, after *filledStmt
 
@@ -238,7 +240,7 @@
 
 	ctx := req.Context()
 
-	conn := JSONConn(req)
+	conn := mw.JSONConn(req)
 
 	// Fast path for counting
 
@@ -252,7 +254,7 @@
 		case err != nil:
 			return
 		}
-		jr = JSONResult{Result: count}
+		jr = mw.JSONResult{Result: count}
 		return
 	}
 
@@ -305,7 +307,7 @@
 		next = neighbored(ctx, conn, after)
 	}
 
-	jr = JSONResult{
+	jr = mw.JSONResult{
 		Result: struct {
 			Prev    *models.ImportTime `json:"prev,omitempty"`
 			Next    *models.ImportTime `json:"next,omitempty"`
@@ -319,13 +321,13 @@
 	return
 }
 
-func importLogs(req *http.Request) (jr JSONResult, err error) {
+func importLogs(req *http.Request) (jr mw.JSONResult, err error) {
 
 	ctx := req.Context()
 
 	id, _ := strconv.ParseInt(mux.Vars(req)["id"], 10, 64)
 
-	conn := JSONConn(req)
+	conn := mw.JSONConn(req)
 
 	// Check if he have such a import job first.
 	var summary sql.NullString
@@ -336,7 +338,7 @@
 	)
 	switch {
 	case err == sql.ErrNoRows:
-		err = JSONError{
+		err = mw.JSONError{
 			Code:    http.StatusNotFound,
 			Message: fmt.Sprintf("Cannot find import #%d.", id),
 		}
@@ -378,7 +380,7 @@
 		return
 	}
 
-	jr = JSONResult{
+	jr = mw.JSONResult{
 		Result: struct {
 			Enqueued models.ImportTime        `json:"enqueued"`
 			Summary  interface{}              `json:"summary,omitempty"`
@@ -392,13 +394,13 @@
 	return
 }
 
-func deleteImport(req *http.Request) (jr JSONResult, err error) {
+func deleteImport(req *http.Request) (jr mw.JSONResult, err error) {
 
 	ctx := req.Context()
 	id, _ := strconv.ParseInt(mux.Vars(req)["id"], 10, 64)
 
 	var tx *sql.Tx
-	tx, err = JSONConn(req).BeginTx(ctx, nil)
+	tx, err = mw.JSONConn(req).BeginTx(ctx, nil)
 	if err != nil {
 		return
 	}
@@ -409,7 +411,7 @@
 	err = tx.QueryRowContext(ctx, selectHasNoRunningImportSQL, id).Scan(&dummy)
 	switch {
 	case err == sql.ErrNoRows:
-		err = JSONError{
+		err = mw.JSONError{
 			Code:    http.StatusNotFound,
 			Message: fmt.Sprintf("Cannot find import #%d.", id),
 		}
@@ -430,7 +432,7 @@
 		return
 	}
 
-	jr = JSONResult{Code: http.StatusNoContent}
+	jr = mw.JSONResult{Code: http.StatusNoContent}
 
 	return
 }
@@ -456,9 +458,9 @@
 INSERT INTO import.import_logs (import_id, msg) VALUES ($1, $2)`
 )
 
-func reviewImports(req *http.Request) (JSONResult, error) {
+func reviewImports(req *http.Request) (mw.JSONResult, error) {
 
-	rs := *JSONInput(req).(*[]models.Review)
+	rs := *mw.JSONInput(req).(*[]models.Review)
 
 	type reviewResult struct {
 		ID      int64  `json:"id"`
@@ -468,7 +470,7 @@
 
 	results := make([]reviewResult, len(rs))
 
-	conn := JSONConn(req)
+	conn := mw.JSONConn(req)
 
 	for i := range rs {
 		rev := &rs[i]
@@ -484,17 +486,17 @@
 		}
 	}
 
-	return JSONResult{Result: results}, nil
+	return mw.JSONResult{Result: results}, nil
 }
 
-func reviewImport(req *http.Request) (jr JSONResult, err error) {
+func reviewImport(req *http.Request) (jr mw.JSONResult, err error) {
 
 	vars := mux.Vars(req)
 	id, _ := strconv.ParseInt(vars["id"], 10, 64)
 	state := vars["state"]
 
 	var msg string
-	if msg, err = decideImport(req, JSONConn(req), id, state); err != nil {
+	if msg, err = decideImport(req, mw.JSONConn(req), id, state); err != nil {
 		return
 	}
 
@@ -504,7 +506,7 @@
 		Message: msg,
 	}
 
-	jr = JSONResult{Result: &result}
+	jr = mw.JSONResult{Result: &result}
 	return
 }
 
@@ -527,7 +529,7 @@
 	err = tx.QueryRowContext(ctx, isPendingSQL, id).Scan(&pending, &kind)
 	switch {
 	case err == sql.ErrNoRows:
-		err = JSONError{
+		err = mw.JSONError{
 			Code:    http.StatusNotFound,
 			Message: fmt.Sprintf("cannot find import #%d", id),
 		}
@@ -535,7 +537,7 @@
 	case err != nil:
 		return
 	case !pending:
-		err = JSONError{
+		err = mw.JSONError{
 			Code:    http.StatusConflict,
 			Message: fmt.Sprintf("import #%d is not pending", id),
 		}