Mercurial > gemma
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 |