@@ -25,6 +25,7 @@ import (
2525 "code.gitea.io/gitea/modules/translation"
2626
2727 "xorm.io/builder"
28+ "xorm.io/xorm"
2829)
2930
3031// CommitStatus holds a single Status of a single Commit
@@ -269,10 +270,12 @@ type CommitStatusIndex struct {
269270
270271// GetLatestCommitStatus returns all statuses with a unique context for a given commit.
271272func GetLatestCommitStatus (ctx context.Context , repoID int64 , sha string , listOptions db.ListOptions ) ([]* CommitStatus , int64 , error ) {
272- base := db .GetEngine (ctx ).Table (& CommitStatus {}).
273- Where ("repo_id = ?" , repoID ).And ("sha = ?" , sha )
273+ getBase := func () * xorm.Session {
274+ return db .GetEngine (ctx ).Table (& CommitStatus {}).
275+ Where ("repo_id = ?" , repoID ).And ("sha = ?" , sha )
276+ }
274277 indices := make ([]int64 , 0 , 10 )
275- sess := base .Select ("max( `index` ) as `index`" ).
278+ sess := getBase () .Select ("max( `index` ) as `index`" ).
276279 GroupBy ("context_hash" ).OrderBy ("max( `index` ) desc" )
277280 if ! listOptions .IsListAll () {
278281 sess = db .SetSessionPagination (sess , & listOptions )
@@ -285,7 +288,7 @@ func GetLatestCommitStatus(ctx context.Context, repoID int64, sha string, listOp
285288 if len (indices ) == 0 {
286289 return statuses , count , nil
287290 }
288- return statuses , count , base .And (builder .In ("`index`" , indices )).Find (& statuses )
291+ return statuses , count , getBase () .And (builder .In ("`index`" , indices )).Find (& statuses )
289292}
290293
291294// GetLatestCommitStatusForPairs returns all statuses with a unique context for a given list of repo-sha pairs
@@ -297,14 +300,16 @@ func GetLatestCommitStatusForPairs(ctx context.Context, repoIDsToLatestCommitSHA
297300
298301 results := make ([]result , 0 , len (repoIDsToLatestCommitSHAs ))
299302
300- base := db .GetEngine (ctx ).Table (& CommitStatus {})
303+ getBase := func () * xorm.Session {
304+ return db .GetEngine (ctx ).Table (& CommitStatus {})
305+ }
301306
302307 // Create a disjunction of conditions for each repoID and SHA pair
303308 conds := make ([]builder.Cond , 0 , len (repoIDsToLatestCommitSHAs ))
304309 for repoID , sha := range repoIDsToLatestCommitSHAs {
305310 conds = append (conds , builder.Eq {"repo_id" : repoID , "sha" : sha })
306311 }
307- sess := base .Where (builder .Or (conds ... )).
312+ sess := getBase () .Where (builder .Or (conds ... )).
308313 Select ("max( `index` ) as `index`, repo_id" ).
309314 GroupBy ("context_hash, repo_id" ).OrderBy ("max( `index` ) desc" )
310315
@@ -331,7 +336,7 @@ func GetLatestCommitStatusForPairs(ctx context.Context, repoIDsToLatestCommitSHA
331336 }
332337 conds = append (conds , cond )
333338 }
334- err = base .Where (builder .Or (conds ... )).Find (& statuses )
339+ err = getBase () .Where (builder .Or (conds ... )).Find (& statuses )
335340 if err != nil {
336341 return nil , err
337342 }
@@ -351,14 +356,17 @@ func GetLatestCommitStatusForRepoCommitIDs(ctx context.Context, repoID int64, co
351356 Index int64
352357 SHA string
353358 }
354- base := db .GetEngine (ctx ).Table (& CommitStatus {}).Where ("repo_id = ?" , repoID )
359+
360+ getBase := func () * xorm.Session {
361+ return db .GetEngine (ctx ).Table (& CommitStatus {}).Where ("repo_id = ?" , repoID )
362+ }
355363 results := make ([]result , 0 , len (commitIDs ))
356364
357365 conds := make ([]builder.Cond , 0 , len (commitIDs ))
358366 for _ , sha := range commitIDs {
359367 conds = append (conds , builder.Eq {"sha" : sha })
360368 }
361- sess := base .And (builder .Or (conds ... )).
369+ sess := getBase () .And (builder .Or (conds ... )).
362370 Select ("max( `index` ) as `index`, sha" ).
363371 GroupBy ("context_hash, sha" ).OrderBy ("max( `index` ) desc" )
364372
@@ -376,7 +384,7 @@ func GetLatestCommitStatusForRepoCommitIDs(ctx context.Context, repoID int64, co
376384 for _ , result := range results {
377385 conds = append (conds , builder.Eq {"`index`" : result .Index , "sha" : result .SHA })
378386 }
379- err = base .And (builder .Or (conds ... )).Find (& statuses )
387+ err = getBase () .And (builder .Or (conds ... )).Find (& statuses )
380388 if err != nil {
381389 return nil , err
382390 }
@@ -396,11 +404,14 @@ func FindRepoRecentCommitStatusContexts(ctx context.Context, repoID int64, befor
396404 Index int64
397405 SHA string
398406 }
407+ getBase := func () * xorm.Session {
408+ return db .GetEngine (ctx ).Table (& CommitStatus {}).Where ("repo_id = ?" , repoID )
409+ }
410+
399411 start := timeutil .TimeStampNow ().AddDuration (- before )
400- base := db .GetEngine (ctx ).Table (& CommitStatus {}).Where ("repo_id = ?" , repoID )
401412 results := make ([]result , 0 , 10 )
402413
403- sess := base .And ("updated_unix >= ?" , start ).
414+ sess := getBase () .And ("updated_unix >= ?" , start ).
404415 Select ("max( `index` ) as `index`, sha" ).
405416 GroupBy ("context_hash, sha" ).OrderBy ("max( `index` ) desc" )
406417
@@ -418,7 +429,7 @@ func FindRepoRecentCommitStatusContexts(ctx context.Context, repoID int64, befor
418429 for _ , result := range results {
419430 conds = append (conds , builder.Eq {"`index`" : result .Index , "sha" : result .SHA })
420431 }
421- return contexts , base .And (builder .Or (conds ... )).Select ("context" ).Find (& contexts )
432+ return contexts , getBase () .And (builder .Or (conds ... )).Select ("context" ).Find (& contexts )
422433}
423434
424435// NewCommitStatusOptions holds options for creating a CommitStatus
0 commit comments