plan_my_stuff 0.15.0 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/lib/plan_my_stuff/issue.rb +31 -0
- data/lib/plan_my_stuff/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 782add7d506a645b1f2c19c413de0ef21c91d31a91e07280c003523767a48368
|
|
4
|
+
data.tar.gz: c20c6aa1e5f98d297cfbcbae5c57c7c5d13dd24b746d26374294196e50b983a5
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: bfcd02d86fa108d59ba15c75b3a7741c0d5c6c2cac701ac785d5d73aeee57025926910785383f5eac0f0c9fdb63ef32a9f72e2174e55ce0cf0c69dcac0c96f00
|
|
7
|
+
data.tar.gz: 8439a857e4d4a170b3802cbe34e040e940915c2b07dca61ea0cf9cd2e9a2995f7b02d447318ecda24ad8891ec080b6b2317a9b9e4b471dd11862002064b3ea19
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.16.0
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- `PlanMyStuff::Issue.count(repo:, state:, labels:)` returns the total count of matching issues via the
|
|
8
|
+
GitHub Search API in a single request, without paginating full issue payloads. Mirrors `Issue.list`
|
|
9
|
+
kwargs (minus `page`/`per_page`); returns an `Integer`. Excludes PRs server-side via the `is:issue`
|
|
10
|
+
qualifier.
|
|
11
|
+
|
|
3
12
|
## 0.15.0
|
|
4
13
|
|
|
5
14
|
### Breaking
|
data/lib/plan_my_stuff/issue.rb
CHANGED
|
@@ -312,6 +312,37 @@ module PlanMyStuff
|
|
|
312
312
|
filtered.map { |gi| build(gi, repo: resolved_repo) }
|
|
313
313
|
end
|
|
314
314
|
|
|
315
|
+
# Counts GitHub issues matching the given filters without paginating full payloads.
|
|
316
|
+
#
|
|
317
|
+
# Uses GitHub's Search API (+search/issues+), which returns +total_count+ in a single
|
|
318
|
+
# request. The +is:issue+ qualifier excludes PRs server-side.
|
|
319
|
+
#
|
|
320
|
+
# Caveats:
|
|
321
|
+
# - The search index lags writes by up to ~1 minute, so freshly created/closed issues
|
|
322
|
+
# may not be reflected immediately.
|
|
323
|
+
# - The Search API has its own rate limit (30 req/min authenticated) separate from
|
|
324
|
+
# the core REST API.
|
|
325
|
+
#
|
|
326
|
+
# @param repo [Symbol, String, nil] defaults to config.default_repo
|
|
327
|
+
# @param state [Symbol] :open, :closed, or :all
|
|
328
|
+
# @param labels [Array<String>]
|
|
329
|
+
#
|
|
330
|
+
# @return [Integer]
|
|
331
|
+
#
|
|
332
|
+
def count(repo: nil, state: :open, labels: [])
|
|
333
|
+
client = PlanMyStuff.client
|
|
334
|
+
resolved_repo = client.resolve_repo!(repo)
|
|
335
|
+
|
|
336
|
+
normalized_state = state.to_s
|
|
337
|
+
qualifiers = ["repo:#{resolved_repo}", 'is:issue']
|
|
338
|
+
qualifiers << "is:#{normalized_state}" unless normalized_state == 'all'
|
|
339
|
+
labels_to_use = Array.wrap(labels).sort
|
|
340
|
+
qualifiers += labels_to_use.map do |label|
|
|
341
|
+
"label:\"#{label}\""
|
|
342
|
+
end
|
|
343
|
+
client.rest(:search_issues, qualifiers.join(' '), per_page: 1).total_count
|
|
344
|
+
end
|
|
345
|
+
|
|
315
346
|
# Submits one or more pre-built payloads to GitHub's "Import Issues" preview endpoint
|
|
316
347
|
# (+POST /repos/:repo/import/issues+). One request per payload: the endpoint only accepts a single
|
|
317
348
|
# +{issue:, comments:}+ payload at a time.
|