comparison pkg/controllers/importqueue.go @ 1031:c0f5dedf5753

Check first if we have a import before generating log import entries list.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Wed, 24 Oct 2018 15:32:38 +0200
parents 3de54d7b7d30
children a04126989d91
comparison
equal deleted inserted replaced
1030:bf10a7f990cc 1031:c0f5dedf5753
13 13
14 package controllers 14 package controllers
15 15
16 import ( 16 import (
17 "database/sql" 17 "database/sql"
18 "fmt"
18 "net/http" 19 "net/http"
19 "strconv" 20 "strconv"
20 21
21 "gemma.intevation.de/gemma/pkg/models" 22 "gemma.intevation.de/gemma/pkg/models"
22 "github.com/gorilla/mux" 23 "github.com/gorilla/mux"
33 FROM waterway.imports 34 FROM waterway.imports
34 ORDER BY id` 35 ORDER BY id`
35 36
36 selectImportPagedSQL = selectImportsUnpagedSQL + ` 37 selectImportPagedSQL = selectImportsUnpagedSQL + `
37 LIMIT $1 OFFSET $2` 38 LIMIT $1 OFFSET $2`
39
40 selectHasImportSQL = `
41 SELECT true FROM Waterway.imports WHERE id = $1`
38 42
39 selectImportLogsSQL = ` 43 selectImportLogsSQL = `
40 SELECT 44 SELECT
41 time, 45 time,
42 kind::varchar, 46 kind::varchar,
105 func importLogs( 109 func importLogs(
106 _ interface{}, 110 _ interface{},
107 req *http.Request, 111 req *http.Request,
108 conn *sql.Conn, 112 conn *sql.Conn,
109 ) (jr JSONResult, err error) { 113 ) (jr JSONResult, err error) {
114
115 ctx := req.Context()
116
110 id, _ := strconv.ParseInt(mux.Vars(req)["id"], 10, 64) 117 id, _ := strconv.ParseInt(mux.Vars(req)["id"], 10, 64)
111 118
119 // Check if he have such a import job first.
120 var dummy bool
121 err = conn.QueryRowContext(ctx, selectHasImportSQL, id).Scan(&dummy)
122 switch {
123 case err == sql.ErrNoRows:
124 err = JSONError{
125 Code: http.StatusNotFound,
126 Message: fmt.Sprintf("Cannot find import #%d.", id),
127 }
128 return
129 case err != nil:
130 return
131 }
132
133 // We have it -> generate log entries.
112 var rows *sql.Rows 134 var rows *sql.Rows
113 135 rows, err = conn.QueryContext(ctx, selectImportLogsSQL, id)
114 rows, err = conn.QueryContext(req.Context(), selectImportLogsSQL, id)
115 if err != nil { 136 if err != nil {
116 return 137 return
117 } 138 }
118 defer rows.Close() 139 defer rows.Close()
119 140