Skip to content

Commit 4170a3c

Browse files
committed
Improve performance of gitea_api.IssueTimelineEntry by listing and caching requests instead of fetching them one by one
1 parent 141157e commit 4170a3c

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

osc/gitea_api/issue_timeline_entry.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@
99

1010

1111
class IssueTimelineEntry(GiteaModel):
12+
def __init__(self, *args, **kwargs):
13+
super().__init__(*args, **kwargs)
14+
self._pull_request_review_cache = None
15+
1216
@property
1317
def type(self) -> str:
1418
return self._data["type"]
@@ -50,9 +54,12 @@ def review_obj(self) -> Optional[PullRequestReview]:
5054

5155
if not self.review_id:
5256
return None
57+
if self._pull_request_review_cache is None:
58+
review_obj_list = PullRequestReview.list(self._conn, self.pr_owner, self.pr_repo, self.pr_number)
59+
self._pull_request_review_cache = {i._data["id"]: i for i in review_obj_list}
5360
try:
54-
return PullRequestReview.get(self._conn, self.pr_owner, self.pr_repo, self.pr_number, str(self.review_id))
55-
except PullRequestReviewDoesNotExist:
61+
return self._pull_request_review_cache[self.review_id]
62+
except KeyError:
5663
# reviews can be removed from the database, but their IDs remain in other places
5764
return None
5865

0 commit comments

Comments
 (0)