@@ -22,6 +22,7 @@ class LogContext:
22
22
_populated_from_db = False
23
23
owner_username : str | None = None
24
24
owner_service : str | None = None
25
+ owner_plan : str | None = None
25
26
owner_id : int | None = None
26
27
repo_name : str | None = None
27
28
repo_id : int | None = None
@@ -54,73 +55,77 @@ def populate_from_sqlalchemy(self, dbsession):
54
55
return
55
56
56
57
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
-
65
58
can_identify_commit = self .commit_id is not None or (
66
59
self .commit_sha is not None and self .repo_id is not None
67
60
)
68
61
69
62
# 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 ,
78
74
)
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 )
79
81
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 ,
87
85
)
88
86
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 ()
100
97
101
98
# 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 )
105
109
.filter (Repository .repoid == self .repo_id )
106
- .first ()
107
110
)
108
- self .repo_name = repo .name
109
111
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 ()
114
119
115
120
# 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 ()
121
128
)
122
- self .owner_username = owner .username
123
- self .owner_service = owner .service
124
129
125
130
except Exception :
126
131
log .exception ("Failed to populate log context" )
0 commit comments