@@ -12,7 +12,6 @@ import (
1212 actions_model "code.gitea.io/gitea/models/actions"
1313 "code.gitea.io/gitea/models/db"
1414 "code.gitea.io/gitea/models/perm"
15- repo_model "code.gitea.io/gitea/models/repo"
1615 secret_model "code.gitea.io/gitea/models/secret"
1716 "code.gitea.io/gitea/models/unit"
1817 user_model "code.gitea.io/gitea/models/user"
@@ -651,164 +650,3 @@ func (org *Organization) GetUserTeamIDs(ctx context.Context, userID int64) ([]in
651650func (org * Organization ) GetUserTeams (ctx context.Context , userID int64 ) ([]* Team , error ) {
652651 return org .getUserTeams (ctx , userID )
653652}
654-
655- // AccessibleReposEnvironment operations involving the repositories that are
656- // accessible to a particular user
657- type AccessibleReposEnvironment interface {
658- CountRepos () (int64 , error )
659- RepoIDs (page , pageSize int ) ([]int64 , error )
660- Repos (page , pageSize int ) (repo_model.RepositoryList , error )
661- MirrorRepos () (repo_model.RepositoryList , error )
662- AddKeyword (keyword string )
663- SetSort (db.SearchOrderBy )
664- }
665-
666- type accessibleReposEnv struct {
667- org * Organization
668- user * user_model.User
669- team * Team
670- teamIDs []int64
671- ctx context.Context
672- keyword string
673- orderBy db.SearchOrderBy
674- }
675-
676- // AccessibleReposEnv builds an AccessibleReposEnvironment for the repositories in `org`
677- // that are accessible to the specified user.
678- func AccessibleReposEnv (ctx context.Context , org * Organization , userID int64 ) (AccessibleReposEnvironment , error ) {
679- var user * user_model.User
680-
681- if userID > 0 {
682- u , err := user_model .GetUserByID (ctx , userID )
683- if err != nil {
684- return nil , err
685- }
686- user = u
687- }
688-
689- teamIDs , err := org .getUserTeamIDs (ctx , userID )
690- if err != nil {
691- return nil , err
692- }
693- return & accessibleReposEnv {
694- org : org ,
695- user : user ,
696- teamIDs : teamIDs ,
697- ctx : ctx ,
698- orderBy : db .SearchOrderByRecentUpdated ,
699- }, nil
700- }
701-
702- // AccessibleTeamReposEnv an AccessibleReposEnvironment for the repositories in `org`
703- // that are accessible to the specified team.
704- func (org * Organization ) AccessibleTeamReposEnv (ctx context.Context , team * Team ) AccessibleReposEnvironment {
705- return & accessibleReposEnv {
706- org : org ,
707- team : team ,
708- ctx : ctx ,
709- orderBy : db .SearchOrderByRecentUpdated ,
710- }
711- }
712-
713- func (env * accessibleReposEnv ) cond () builder.Cond {
714- cond := builder .NewCond ()
715- if env .team != nil {
716- cond = cond .And (builder.Eq {"team_repo.team_id" : env .team .ID })
717- } else {
718- if env .user == nil || ! env .user .IsRestricted {
719- cond = cond .Or (builder.Eq {
720- "`repository`.owner_id" : env .org .ID ,
721- "`repository`.is_private" : false ,
722- })
723- }
724- if len (env .teamIDs ) > 0 {
725- cond = cond .Or (builder .In ("team_repo.team_id" , env .teamIDs ))
726- }
727- }
728- if env .keyword != "" {
729- cond = cond .And (builder.Like {"`repository`.lower_name" , strings .ToLower (env .keyword )})
730- }
731- return cond
732- }
733-
734- func (env * accessibleReposEnv ) CountRepos () (int64 , error ) {
735- repoCount , err := db .GetEngine (env .ctx ).
736- Join ("INNER" , "team_repo" , "`team_repo`.repo_id=`repository`.id" ).
737- Where (env .cond ()).
738- Distinct ("`repository`.id" ).
739- Count (& repo_model.Repository {})
740- if err != nil {
741- return 0 , fmt .Errorf ("count user repositories in organization: %w" , err )
742- }
743- return repoCount , nil
744- }
745-
746- func (env * accessibleReposEnv ) RepoIDs (page , pageSize int ) ([]int64 , error ) {
747- if page <= 0 {
748- page = 1
749- }
750-
751- repoIDs := make ([]int64 , 0 , pageSize )
752- return repoIDs , db .GetEngine (env .ctx ).
753- Table ("repository" ).
754- Join ("INNER" , "team_repo" , "`team_repo`.repo_id=`repository`.id" ).
755- Where (env .cond ()).
756- GroupBy ("`repository`.id,`repository`." + strings .Fields (string (env .orderBy ))[0 ]).
757- OrderBy (string (env .orderBy )).
758- Limit (pageSize , (page - 1 )* pageSize ).
759- Cols ("`repository`.id" ).
760- Find (& repoIDs )
761- }
762-
763- func (env * accessibleReposEnv ) Repos (page , pageSize int ) (repo_model.RepositoryList , error ) {
764- repoIDs , err := env .RepoIDs (page , pageSize )
765- if err != nil {
766- return nil , fmt .Errorf ("GetUserRepositoryIDs: %w" , err )
767- }
768-
769- repos := make ([]* repo_model.Repository , 0 , len (repoIDs ))
770- if len (repoIDs ) == 0 {
771- return repos , nil
772- }
773-
774- return repos , db .GetEngine (env .ctx ).
775- In ("`repository`.id" , repoIDs ).
776- OrderBy (string (env .orderBy )).
777- Find (& repos )
778- }
779-
780- func (env * accessibleReposEnv ) MirrorRepoIDs () ([]int64 , error ) {
781- repoIDs := make ([]int64 , 0 , 10 )
782- return repoIDs , db .GetEngine (env .ctx ).
783- Table ("repository" ).
784- Join ("INNER" , "team_repo" , "`team_repo`.repo_id=`repository`.id AND `repository`.is_mirror=?" , true ).
785- Where (env .cond ()).
786- GroupBy ("`repository`.id, `repository`.updated_unix" ).
787- OrderBy (string (env .orderBy )).
788- Cols ("`repository`.id" ).
789- Find (& repoIDs )
790- }
791-
792- func (env * accessibleReposEnv ) MirrorRepos () (repo_model.RepositoryList , error ) {
793- repoIDs , err := env .MirrorRepoIDs ()
794- if err != nil {
795- return nil , fmt .Errorf ("MirrorRepoIDs: %w" , err )
796- }
797-
798- repos := make ([]* repo_model.Repository , 0 , len (repoIDs ))
799- if len (repoIDs ) == 0 {
800- return repos , nil
801- }
802-
803- return repos , db .GetEngine (env .ctx ).
804- In ("`repository`.id" , repoIDs ).
805- Find (& repos )
806- }
807-
808- func (env * accessibleReposEnv ) AddKeyword (keyword string ) {
809- env .keyword = keyword
810- }
811-
812- func (env * accessibleReposEnv ) SetSort (orderBy db.SearchOrderBy ) {
813- env .orderBy = orderBy
814- }
0 commit comments