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 {