Mercurial > gemma
diff pkg/controllers/importqueue.go @ 5564:aaa9e658cabd
Log export: Added marker interface to JobCreators that log messages should be loaded at export.
Removes the hard coded SR export SQL logic.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Sat, 12 Feb 2022 18:56:55 +0100 |
parents | 3be1d79ad3a3 |
children | ceecc205011c |
line wrap: on
line diff
--- a/pkg/controllers/importqueue.go Sat Feb 12 17:36:20 2022 +0100 +++ b/pkg/controllers/importqueue.go Sat Feb 12 18:56:55 2022 +0100 @@ -75,7 +75,7 @@ EXISTS(SELECT 1 FROM import.import_logs WHERE kind = 'warn'::log_type and import_id = id) AS has_warnings, data, - CASE WHEN kind = 'sr' THEN ARRAY(SELECT msg FROM import.import_logs WHERE import_id = id) + CASE WHEN kind = ANY($1) THEN ARRAY(SELECT msg FROM import.import_logs WHERE import_id = id) ELSE NULL END AS msgs FROM import.imports @@ -113,7 +113,12 @@ args []interface{} } -func buildFilters(projection string, req *http.Request) (*filledStmt, *filledStmt, *filledStmt, error) { +func buildFilters(projection string, req *http.Request, args ...interface{}) ( + *filledStmt, + *filledStmt, + *filledStmt, + error, +) { var l, a, b filterAnd @@ -197,6 +202,10 @@ fa := &filledStmt{} fb := &filledStmt{} + fl.args = append(fl.args, args...) + fa.args = append(fa.args, args...) + fb.args = append(fb.args, args...) + fa.stmt.WriteString(selectEnqueuedSQL) fb.stmt.WriteString(selectEnqueuedSQL) @@ -264,7 +273,26 @@ func exportImports(rw http.ResponseWriter, req *http.Request) { - list, _, _, err := buildFilters(selectExportSQL, req) + type LogLoader interface{ LoadingLogs() bool } + + var lls []string + + imports.All(func(k imports.JobKind, jc imports.JobCreator) { + if ll, ok := jc.(LogLoader); ok && ll.LoadingLogs() { + lls = append(lls, string(k)) + } + }) + + var loaders pgtype.TextArray + if err := loaders.Set(lls); err != nil { + http.Error( + rw, fmt.Sprintf("error: %v", err), + http.StatusInternalServerError) + return + } + + list, _, _, err := buildFilters(selectExportSQL, req, &loaders) + if err != nil { http.Error(rw, "error: "+err.Error(), http.StatusBadRequest) return