# HG changeset patch # User Sascha L. Teichmann # Date 1552649352 -3600 # Node ID 9a493d27bf3f985d51cdefc9168cf6de9fbbc677 # Parent 097b4b964ed975540bbcf6392fc86b61e2eb5dbe Added /api/imports?count=true to only count the results. diff -r 097b4b964ed9 -r 9a493d27bf3f pkg/controllers/importqueue.go --- a/pkg/controllers/importqueue.go Fri Mar 15 12:15:37 2019 +0100 +++ b/pkg/controllers/importqueue.go Fri Mar 15 12:29:12 2019 +0100 @@ -39,6 +39,11 @@ FROM import.import_logs WHERE kind = 'warn'::log_type )` + selectImportsCountSQL = warningSQLPrefix + ` +SELECT count(*) +FROM import.imports +WHERE +` selectImportsSQL = warningSQLPrefix + ` SELECT imports.id AS id, @@ -159,7 +164,15 @@ var noBefore, noAfter bool - l.stmt.WriteString(selectImportsSQL) + var counting bool + + switch count := strings.ToLower(req.FormValue("count")); count { + case "1", "t", "true": + counting = true + l.stmt.WriteString(selectImportsCountSQL) + default: + l.stmt.WriteString(selectImportsSQL) + } a.stmt.WriteString(selectAfterSQL) b.stmt.WriteString(selectBeforeSQL) @@ -228,9 +241,11 @@ a.stmt.WriteString(" TRUE ") } - l.stmt.WriteString(" ORDER BY enqueued DESC ") - a.stmt.WriteString(" ORDER BY enqueued LIMIT 1") - b.stmt.WriteString(" ORDER BY enqueued LIMIT 1") + if !counting { + l.stmt.WriteString(" ORDER BY enqueued DESC ") + a.stmt.WriteString(" ORDER BY enqueued LIMIT 1") + b.stmt.WriteString(" ORDER BY enqueued LIMIT 1") + } if noBefore { b = nil @@ -269,6 +284,24 @@ ctx := req.Context() + // Fast path for counting + + switch count := strings.ToLower(req.FormValue("count")); count { + case "1", "t", "true": + var count int64 + err = conn.QueryRowContext(ctx, list.stmt.String(), list.args...).Scan(&count) + switch { + case err == sql.ErrNoRows: + count, err = 0, nil + case err != nil: + return + } + jr = JSONResult{Result: count} + return + } + + // Generate the list + var rows *sql.Rows if rows, err = conn.QueryContext(ctx, list.stmt.String(), list.args...); err != nil { return