Skip to content
This repository was archived by the owner on May 5, 2025. It is now read-only.

Commit b3f2710

Browse files
authored
Add owner_plan to more focussed LogContext queries (#919)
1 parent ae39d3f commit b3f2710

File tree

2 files changed

+64
-51
lines changed

2 files changed

+64
-51
lines changed

helpers/log_context.py

Lines changed: 55 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ class LogContext:
2222
_populated_from_db = False
2323
owner_username: str | None = None
2424
owner_service: str | None = None
25+
owner_plan: str | None = None
2526
owner_id: int | None = None
2627
repo_name: str | None = None
2728
repo_id: int | None = None
@@ -54,73 +55,77 @@ def populate_from_sqlalchemy(self, dbsession):
5455
return
5556

5657
try:
57-
incomplete_sha = self.commit_id is None or self.commit_sha is None
58-
incomplete_repo = self.repo_name is None or self.repo_id is None
59-
incomplete_owner = (
60-
self.owner_id is None
61-
or self.owner_username is None
62-
or self.owner_service is None
63-
)
64-
6558
can_identify_commit = self.commit_id is not None or (
6659
self.commit_sha is not None and self.repo_id is not None
6760
)
6861

6962
# commit_id or (commit_sha + repo_id) is enough to get everything else
70-
if can_identify_commit and (
71-
incomplete_sha or incomplete_repo or incomplete_owner
72-
):
73-
if self.commit_id is not None:
74-
commit = (
75-
dbsession.query(Commit)
76-
.filter(Commit.id_ == self.commit_id)
77-
.first()
63+
if can_identify_commit:
64+
query = (
65+
dbsession.query(
66+
Commit.id_,
67+
Commit.commitid,
68+
Repository.repoid,
69+
Repository.name,
70+
Owner.ownerid,
71+
Owner.username,
72+
Owner.service,
73+
Owner.plan,
7874
)
75+
.join(Commit.repository)
76+
.join(Repository.owner)
77+
)
78+
79+
if self.commit_id is not None:
80+
query = query.filter(Commit.id_ == self.commit_id)
7981
else:
80-
commit = (
81-
dbsession.query(Commit)
82-
.filter(
83-
Commit.commitid == self.commit_sha,
84-
Commit.repoid == self.repo_id,
85-
)
86-
.first()
82+
query = query.filter(
83+
Commit.commitid == self.commit_sha,
84+
Commit.repoid == self.repo_id,
8785
)
8886

89-
self.commit_id = commit.id_
90-
self.commit_sha = commit.commitid
91-
92-
if incomplete_repo:
93-
self.repo_id = commit.repository.repoid
94-
self.repo_name = commit.repository.name
95-
96-
if incomplete_owner:
97-
self.owner_id = commit.repository.owner.ownerid
98-
self.owner_username = commit.repository.owner.username
99-
self.owner_service = commit.repository.owner.service
87+
(
88+
self.commit_id,
89+
self.commit_sha,
90+
self.repo_id,
91+
self.repo_name,
92+
self.owner_id,
93+
self.owner_username,
94+
self.owner_service,
95+
self.owner_plan,
96+
) = query.first()
10097

10198
# repo_id is enough to get repo and owner
102-
elif self.repo_id and (incomplete_repo or incomplete_owner):
103-
repo = (
104-
dbsession.query(Repository)
99+
elif self.repo_id:
100+
query = (
101+
dbsession.query(
102+
Repository.name,
103+
Owner.ownerid,
104+
Owner.username,
105+
Owner.service,
106+
Owner.plan,
107+
)
108+
.join(Repository.owner)
105109
.filter(Repository.repoid == self.repo_id)
106-
.first()
107110
)
108-
self.repo_name = repo.name
109111

110-
if incomplete_owner:
111-
self.owner_id = repo.owner.ownerid
112-
self.owner_username = repo.owner.username
113-
self.owner_service = repo.owner.service
112+
(
113+
self.repo_name,
114+
self.owner_id,
115+
self.owner_username,
116+
self.owner_service,
117+
self.owner_plan,
118+
) = query.first()
114119

115120
# owner_id is just enough for owner
116-
elif self.owner_id and incomplete_owner:
117-
owner = (
118-
dbsession.query(Owner)
119-
.filter(Owner.ownerid == self.owner_id)
120-
.first()
121+
elif self.owner_id:
122+
query = dbsession.query(
123+
Owner.username, Owner.service, Owner.plan
124+
).filter(Owner.ownerid == self.owner_id)
125+
126+
(self.owner_username, self.owner_service, self.owner_plan) = (
127+
query.first()
121128
)
122-
self.owner_username = owner.username
123-
self.owner_service = owner.service
124129

125130
except Exception:
126131
log.exception("Failed to populate log context")

helpers/tests/unit/test_log_context.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ def create_db_records(dbsession):
1212
service="github",
1313
username="codecove2e",
1414
unencrypted_oauth_token="test76zow6xgh7modd88noxr245j2z25t4ustoff",
15+
plan="users-basic",
1516
)
1617
dbsession.add(owner)
1718

@@ -43,7 +44,10 @@ def test_populate_just_owner(dbsession):
4344
log_context.populate_from_sqlalchemy(dbsession)
4445

4546
assert log_context == LogContext(
46-
owner_id=owner.ownerid, owner_username="codecove2e", owner_service="github"
47+
owner_id=owner.ownerid,
48+
owner_username="codecove2e",
49+
owner_service="github",
50+
owner_plan="users-basic",
4751
)
4852

4953

@@ -58,6 +62,7 @@ def test_populate_just_repo(dbsession):
5862
owner_id=owner.ownerid,
5963
owner_username="codecove2e",
6064
owner_service="github",
65+
owner_plan="users-basic",
6166
)
6267

6368

@@ -80,6 +85,7 @@ def test_populate_just_commit_id(dbsession):
8085
owner_id=owner.ownerid,
8186
owner_username="codecove2e",
8287
owner_service="github",
88+
owner_plan="users-basic",
8389
commit_sha=commit.commitid,
8490
commit_id=commit.id_,
8591
)
@@ -96,6 +102,7 @@ def test_populate_repo_and_commit_sha(dbsession):
96102
owner_id=owner.ownerid,
97103
owner_username="codecove2e",
98104
owner_service="github",
105+
owner_plan="users-basic",
99106
commit_sha=commit.commitid,
100107
commit_id=commit.id_,
101108
)
@@ -147,6 +154,7 @@ def test_as_dict(dbsession, mocker):
147154
"owner_id": owner.ownerid,
148155
"owner_username": owner.username,
149156
"owner_service": owner.service,
157+
"owner_plan": owner.plan,
150158
"sentry_trace_id": 123,
151159
"checkpoints_data": {},
152160
}

0 commit comments

Comments
 (0)