Mercurial > gemma
comparison pkg/controllers/importqueue.go @ 2662:f90557a8c960 import-overview-rework
Moved summary from /api/imports overview to /api/imports/{id} details.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Thu, 14 Mar 2019 11:31:22 +0100 |
parents | 3a242e6aa56d |
children | 386ff766dfcd |
comparison
equal
deleted
inserted
replaced
2640:4bcb26542767 | 2662:f90557a8c960 |
---|---|
44 state::varchar, | 44 state::varchar, |
45 enqueued, | 45 enqueued, |
46 kind, | 46 kind, |
47 username, | 47 username, |
48 signer, | 48 signer, |
49 summary, | 49 summary IS NOT NULL, |
50 EXISTS ( | 50 EXISTS ( |
51 SELECT true FROM warned | 51 SELECT true FROM warned |
52 WHERE warned.id = imports.id | 52 WHERE warned.id = imports.id |
53 ) AS has_warnings | 53 ) AS has_warnings |
54 ` | 54 ` |
57 ` | 57 ` |
58 withWarningsSQL = ` | 58 withWarningsSQL = ` |
59 FROM import.imports JOIN warned ON imports.id = warned.id | 59 FROM import.imports JOIN warned ON imports.id = warned.id |
60 ` | 60 ` |
61 | 61 |
62 selectHasImportSQL = ` | 62 selectImportSummaySQL = ` |
63 SELECT true FROM import.imports WHERE id = $1` | 63 SELECT summary FROM import.imports WHERE id = $1` |
64 | 64 |
65 selectHasNoRunningImportSQL = ` | 65 selectHasNoRunningImportSQL = ` |
66 SELECT true FROM import.imports | 66 SELECT true FROM import.imports |
67 WHERE id = $1 AND state <> 'running'::import_state` | 67 WHERE id = $1 AND state <> 'running'::import_state` |
68 | 68 |
228 } | 228 } |
229 defer rows.Close() | 229 defer rows.Close() |
230 | 230 |
231 imports := make([]*models.Import, 0, 20) | 231 imports := make([]*models.Import, 0, 20) |
232 | 232 |
233 var signer, summary sql.NullString | 233 var signer sql.NullString |
234 | 234 |
235 for rows.Next() { | 235 for rows.Next() { |
236 var it models.Import | 236 var it models.Import |
237 if err = rows.Scan( | 237 if err = rows.Scan( |
238 &it.ID, | 238 &it.ID, |
239 &it.State, | 239 &it.State, |
240 &it.Enqueued, | 240 &it.Enqueued, |
241 &it.Kind, | 241 &it.Kind, |
242 &it.User, | 242 &it.User, |
243 &signer, | 243 &signer, |
244 &summary, | 244 &it.Summary, |
245 &it.Warnings, | 245 &it.Warnings, |
246 ); err != nil { | 246 ); err != nil { |
247 return | 247 return |
248 } | 248 } |
249 if signer.Valid { | 249 if signer.Valid { |
250 it.Signer = signer.String | 250 it.Signer = signer.String |
251 } | |
252 if summary.Valid { | |
253 if err = json.NewDecoder( | |
254 strings.NewReader(summary.String)).Decode(&it.Summary); err != nil { | |
255 return | |
256 } | |
257 } | 251 } |
258 imports = append(imports, &it) | 252 imports = append(imports, &it) |
259 } | 253 } |
260 | 254 |
261 if err = rows.Err(); err != nil { | 255 if err = rows.Err(); err != nil { |
281 ctx := req.Context() | 275 ctx := req.Context() |
282 | 276 |
283 id, _ := strconv.ParseInt(mux.Vars(req)["id"], 10, 64) | 277 id, _ := strconv.ParseInt(mux.Vars(req)["id"], 10, 64) |
284 | 278 |
285 // Check if he have such a import job first. | 279 // Check if he have such a import job first. |
286 var dummy bool | 280 var summary sql.NullString |
287 err = conn.QueryRowContext(ctx, selectHasImportSQL, id).Scan(&dummy) | 281 err = conn.QueryRowContext(ctx, selectImportSummaySQL, id).Scan(&summary) |
288 switch { | 282 switch { |
289 case err == sql.ErrNoRows: | 283 case err == sql.ErrNoRows: |
290 err = JSONError{ | 284 err = JSONError{ |
291 Code: http.StatusNotFound, | 285 Code: http.StatusNotFound, |
292 Message: fmt.Sprintf("Cannot find import #%d.", id), | 286 Message: fmt.Sprintf("Cannot find import #%d.", id), |
294 return | 288 return |
295 case err != nil: | 289 case err != nil: |
296 return | 290 return |
297 } | 291 } |
298 | 292 |
293 var sum interface{} | |
294 if summary.Valid { | |
295 if err = json.NewDecoder( | |
296 strings.NewReader(summary.String)).Decode(&sum); err != nil { | |
297 return | |
298 } | |
299 } | |
300 | |
299 // We have it -> generate log entries. | 301 // We have it -> generate log entries. |
300 var rows *sql.Rows | 302 var rows *sql.Rows |
301 rows, err = conn.QueryContext(ctx, selectImportLogsSQL, id) | 303 rows, err = conn.QueryContext(ctx, selectImportLogsSQL, id) |
302 if err != nil { | 304 if err != nil { |
303 return | 305 return |
318 return | 320 return |
319 } | 321 } |
320 | 322 |
321 jr = JSONResult{ | 323 jr = JSONResult{ |
322 Result: struct { | 324 Result: struct { |
325 Summary interface{} `json:"summary,omitempty"` | |
323 Entries []*models.ImportLogEntry `json:"entries"` | 326 Entries []*models.ImportLogEntry `json:"entries"` |
324 }{ | 327 }{ |
328 Summary: sum, | |
325 Entries: entries, | 329 Entries: entries, |
326 }, | 330 }, |
327 } | 331 } |
328 return | 332 return |
329 } | 333 } |