mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 21:28:11 +09:00 
			
		
		
		
	This reverts commit 78438d310b.
			
			
This commit is contained in:
		| @@ -615,35 +615,50 @@ func (u *User) GetRepositories(page, pageSize int) (err error) { | ||||
| 	return err | ||||
| } | ||||
|  | ||||
| // UnitRepositoriesSubQuery returns repositories query builder according units | ||||
| func (u *User) UnitRepositoriesSubQuery(units ...UnitType) *builder.Builder { | ||||
| 	b := builder.Select("repository.id").From("repository") | ||||
| // GetRepositoryIDs returns repositories IDs where user owned and has unittypes | ||||
| func (u *User) GetRepositoryIDs(units ...UnitType) ([]int64, error) { | ||||
| 	var ids []int64 | ||||
|  | ||||
| 	sess := x.Table("repository").Cols("repository.id") | ||||
|  | ||||
| 	if len(units) > 0 { | ||||
| 		b.Join("INNER", "repo_unit", builder.Expr("repository.id = repo_unit.repo_id"). | ||||
| 			And(builder.In("repo_unit.type", units)), | ||||
| 		) | ||||
| 		sess = sess.Join("INNER", "repo_unit", "repository.id = repo_unit.repo_id") | ||||
| 		sess = sess.In("repo_unit.type", units) | ||||
| 	} | ||||
| 	return b.Where(builder.Eq{"repository.owner_id": u.ID}) | ||||
|  | ||||
| 	return ids, sess.Where("owner_id = ?", u.ID).Find(&ids) | ||||
| } | ||||
|  | ||||
| // OrgUnitRepositoriesSubQuery returns repositories query builder according orgnizations and units | ||||
| func (u *User) OrgUnitRepositoriesSubQuery(userID int64, units ...UnitType) *builder.Builder { | ||||
| 	b := builder. | ||||
| 		Select("team_repo.repo_id"). | ||||
| 		From("team_repo"). | ||||
| 		Join("INNER", "team_user", builder.Eq{"team_user.uid": userID}.And( | ||||
| 			builder.Expr("team_user.team_id = team_repo.team_id"), | ||||
| 		)) | ||||
| // GetOrgRepositoryIDs returns repositories IDs where user's team owned and has unittypes | ||||
| func (u *User) GetOrgRepositoryIDs(units ...UnitType) ([]int64, error) { | ||||
| 	var ids []int64 | ||||
|  | ||||
| 	sess := x.Table("repository"). | ||||
| 		Cols("repository.id"). | ||||
| 		Join("INNER", "team_user", "repository.owner_id = team_user.org_id"). | ||||
| 		Join("INNER", "team_repo", "repository.is_private != ? OR (team_user.team_id = team_repo.team_id AND repository.id = team_repo.repo_id)", true) | ||||
|  | ||||
| 	if len(units) > 0 { | ||||
| 		b.Join("INNER", "team_unit", builder.Eq{"team_unit.org_id": u.ID}.And( | ||||
| 			builder.Expr("team_unit.team_id = team_repo.team_id").And( | ||||
| 				builder.In("`type`", units), | ||||
| 			), | ||||
| 		)) | ||||
| 		sess = sess.Join("INNER", "team_unit", "team_unit.team_id = team_user.team_id") | ||||
| 		sess = sess.In("team_unit.type", units) | ||||
| 	} | ||||
| 	return b.Where(builder.Eq{"team_repo.org_id": u.ID}). | ||||
| 		GroupBy("team_repo.repo_id") | ||||
|  | ||||
| 	return ids, sess. | ||||
| 		Where("team_user.uid = ?", u.ID). | ||||
| 		GroupBy("repository.id").Find(&ids) | ||||
| } | ||||
|  | ||||
| // GetAccessRepoIDs returns all repositories IDs where user's or user is a team member organizations | ||||
| func (u *User) GetAccessRepoIDs(units ...UnitType) ([]int64, error) { | ||||
| 	ids, err := u.GetRepositoryIDs(units...) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	ids2, err := u.GetOrgRepositoryIDs(units...) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	return append(ids, ids2...), nil | ||||
| } | ||||
|  | ||||
| // GetMirrorRepositories returns mirror repositories that user owns, including private repositories. | ||||
|   | ||||
		Reference in New Issue
	
	Block a user