Mercurial > gemma
comparison pkg/controllers/importqueue.go @ 2627:3a242e6aa56d
Import log: Add filter for log entries with warnings only: GET /api/imports?warnings=true
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Wed, 13 Mar 2019 16:26:51 +0100 |
parents | 20d9b71f4125 |
children | f90557a8c960 |
comparison
equal
deleted
inserted
replaced
2624:9dbaf69c7a66 | 2627:3a242e6aa56d |
---|---|
29 "gemma.intevation.de/gemma/pkg/imports" | 29 "gemma.intevation.de/gemma/pkg/imports" |
30 "gemma.intevation.de/gemma/pkg/models" | 30 "gemma.intevation.de/gemma/pkg/models" |
31 ) | 31 ) |
32 | 32 |
33 const ( | 33 const ( |
34 warningSQLPrefix = ` | |
35 ` | |
34 selectImportsSQL = ` | 36 selectImportsSQL = ` |
37 WITH warned AS ( | |
38 SELECT distinct(import_id) AS id | |
39 FROM import.import_logs | |
40 WHERE kind = 'warn'::log_type | |
41 ) | |
35 SELECT | 42 SELECT |
36 id, | 43 imports.id AS id, |
37 state::varchar, | 44 state::varchar, |
38 enqueued, | 45 enqueued, |
39 kind, | 46 kind, |
40 username, | 47 username, |
41 signer, | 48 signer, |
42 summary, | 49 summary, |
43 EXISTS ( | 50 EXISTS ( |
44 SELECT true FROM import.import_logs | 51 SELECT true FROM warned |
45 WHERE kind = 'warn'::log_type AND | 52 WHERE warned.id = imports.id |
46 import_id = import.imports.id | |
47 ) AS has_warnings | 53 ) AS has_warnings |
54 ` | |
55 withoutWarningsSQL = ` | |
48 FROM import.imports | 56 FROM import.imports |
57 ` | |
58 withWarningsSQL = ` | |
59 FROM import.imports JOIN warned ON imports.id = warned.id | |
49 ` | 60 ` |
50 | 61 |
51 selectHasImportSQL = ` | 62 selectHasImportSQL = ` |
52 SELECT true FROM import.imports WHERE id = $1` | 63 SELECT true FROM import.imports WHERE id = $1` |
53 | 64 |
131 arg := func(format string, v interface{}) { | 142 arg := func(format string, v interface{}) { |
132 fmt.Fprintf(&stmt, format, len(args)+1) | 143 fmt.Fprintf(&stmt, format, len(args)+1) |
133 args = append(args, v) | 144 args = append(args, v) |
134 } | 145 } |
135 | 146 |
147 var warnings bool | |
148 | |
149 switch warn := strings.ToLower(req.FormValue("warnings")); warn { | |
150 case "1", "t", "true": | |
151 warnings = true | |
152 } | |
153 | |
136 if st := req.FormValue("states"); st != "" { | 154 if st := req.FormValue("states"); st != "" { |
137 states = toTextArray(st, imports.ImportStateNames) | 155 states = toTextArray(st, imports.ImportStateNames) |
138 } | 156 } |
139 | 157 |
140 if ks := req.FormValue("kinds"); ks != "" { | 158 if ks := req.FormValue("kinds"); ks != "" { |
144 if idss := req.FormValue("ids"); idss != "" { | 162 if idss := req.FormValue("ids"); idss != "" { |
145 ids = toInt8Array(idss) | 163 ids = toInt8Array(idss) |
146 } | 164 } |
147 | 165 |
148 stmt.WriteString(selectImportsSQL) | 166 stmt.WriteString(selectImportsSQL) |
167 if warnings { | |
168 stmt.WriteString(withWarningsSQL) | |
169 } else { | |
170 stmt.WriteString(withoutWarningsSQL) | |
171 } | |
172 | |
149 if states != nil || kinds != nil || ids != nil { | 173 if states != nil || kinds != nil || ids != nil { |
150 stmt.WriteString(" WHERE ") | 174 stmt.WriteString(" WHERE ") |
151 } | 175 } |
152 | 176 |
153 if states != nil { | 177 if states != nil { |