@@ -202,6 +202,39 @@ func DeletePullsByBaseRepoID(ctx context.Context, repoID int64) error {
202
202
return err
203
203
}
204
204
205
+ // ColorFormat writes a colored string to identify this struct
206
+ func (pr * PullRequest ) ColorFormat (s fmt.State ) {
207
+ if pr == nil {
208
+ log .ColorFprintf (s , "PR[%d][%s:%s...%s:%s]" ,
209
+ log .NewColoredIDValue (0 ),
210
+ log .NewColoredValue ("<nil>/<nil>" ),
211
+ log .NewColoredValue ("<nil>" ),
212
+ log .NewColoredValue ("<nil>/<nil>" ),
213
+ log .NewColoredValue ("<nil>" ),
214
+ )
215
+ return
216
+ }
217
+
218
+ log .ColorFprintf (s , "PR[%d][" , log .NewColoredIDValue (pr .ID ))
219
+ if pr .BaseRepo != nil {
220
+ log .ColorFprintf (s , "%s:%s..." , log .NewColoredValue (pr .BaseRepo .FullName ()), log .NewColoredValue (pr .BaseBranch ))
221
+ } else {
222
+ log .ColorFprintf (s , "Repo[%d]:%s..." , log .NewColoredIDValue (pr .BaseRepoID ), log .NewColoredValue (pr .BaseBranch ))
223
+ }
224
+ if pr .HeadRepoID == pr .BaseRepoID {
225
+ log .ColorFprintf (s , "%s]" , log .NewColoredValue (pr .HeadBranch ))
226
+ } else if pr .HeadRepo != nil {
227
+ log .ColorFprintf (s , "%s:%s]" , log .NewColoredValue (pr .HeadRepo .FullName ()), log .NewColoredValue (pr .HeadBranch ))
228
+ } else {
229
+ log .ColorFprintf (s , "Repo[%d]:%s]" , log .NewColoredIDValue (pr .HeadRepoID ), log .NewColoredValue (pr .HeadBranch ))
230
+ }
231
+ }
232
+
233
+ // String represents the pr as a simple string
234
+ func (pr * PullRequest ) String () string {
235
+ return log .ColorFormatAsString (pr )
236
+ }
237
+
205
238
// MustHeadUserName returns the HeadRepo's username if failed return blank
206
239
func (pr * PullRequest ) MustHeadUserName (ctx context.Context ) string {
207
240
if err := pr .LoadHeadRepo (ctx ); err != nil {
@@ -234,7 +267,8 @@ func (pr *PullRequest) LoadAttributes(ctx context.Context) (err error) {
234
267
return nil
235
268
}
236
269
237
- // LoadHeadRepo loads the head repository
270
+ // LoadHeadRepo loads the head repository, pr.HeadRepo will remain nil if it does not exist
271
+ // and thus ErrRepoNotExist will never be returned
238
272
func (pr * PullRequest ) LoadHeadRepo (ctx context.Context ) (err error ) {
239
273
if ! pr .isHeadRepoLoaded && pr .HeadRepo == nil && pr .HeadRepoID > 0 {
240
274
if pr .HeadRepoID == pr .BaseRepoID {
@@ -249,14 +283,14 @@ func (pr *PullRequest) LoadHeadRepo(ctx context.Context) (err error) {
249
283
250
284
pr .HeadRepo , err = repo_model .GetRepositoryByID (ctx , pr .HeadRepoID )
251
285
if err != nil && ! repo_model .IsErrRepoNotExist (err ) { // Head repo maybe deleted, but it should still work
252
- return fmt .Errorf ("GetRepositoryByID(head) : %w" , err )
286
+ return fmt .Errorf ("pr[%d].LoadHeadRepo[%d] : %w" , pr . ID , pr . HeadRepoID , err )
253
287
}
254
288
pr .isHeadRepoLoaded = true
255
289
}
256
290
return nil
257
291
}
258
292
259
- // LoadBaseRepo loads the target repository
293
+ // LoadBaseRepo loads the target repository. ErrRepoNotExist may be returned.
260
294
func (pr * PullRequest ) LoadBaseRepo (ctx context.Context ) (err error ) {
261
295
if pr .BaseRepo != nil {
262
296
return nil
@@ -274,7 +308,7 @@ func (pr *PullRequest) LoadBaseRepo(ctx context.Context) (err error) {
274
308
275
309
pr .BaseRepo , err = repo_model .GetRepositoryByID (ctx , pr .BaseRepoID )
276
310
if err != nil {
277
- return fmt .Errorf ("repo_model.GetRepositoryByID(base) : %w" , err )
311
+ return fmt .Errorf ("pr[%d].LoadBaseRepo[%d] : %w" , pr . ID , pr . BaseRepoID , err )
278
312
}
279
313
return nil
280
314
}
0 commit comments