mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-29 10:57:44 +09:00 
			
		
		
		
	fix sqlite and mssql lock (#5214)
This commit is contained in:
		
				
					committed by
					
						 techknowlogick
						techknowlogick
					
				
			
			
				
	
			
			
			
						parent
						
							7694c99ab3
						
					
				
				
					commit
					70a80e31cf
				
			| @@ -460,21 +460,21 @@ func removeOrgUser(sess *xorm.Session, orgID, userID int64) error { | ||||
| 		return nil | ||||
| 	} | ||||
|  | ||||
| 	org, err := GetUserByID(orgID) | ||||
| 	org, err := getUserByID(sess, orgID) | ||||
| 	if err != nil { | ||||
| 		return fmt.Errorf("GetUserByID [%d]: %v", orgID, err) | ||||
| 	} | ||||
|  | ||||
| 	// Check if the user to delete is the last member in owner team. | ||||
| 	if isOwner, err := IsOrganizationOwner(orgID, userID); err != nil { | ||||
| 	if isOwner, err := isOrganizationOwner(sess, orgID, userID); err != nil { | ||||
| 		return err | ||||
| 	} else if isOwner { | ||||
| 		t, err := org.GetOwnerTeam() | ||||
| 		t, err := org.getOwnerTeam(sess) | ||||
| 		if err != nil { | ||||
| 			return err | ||||
| 		} | ||||
| 		if t.NumMembers == 1 { | ||||
| 			if err := t.GetMembers(); err != nil { | ||||
| 			if err := t.getMembers(sess); err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 			if t.Members[0].ID == userID { | ||||
| @@ -490,7 +490,7 @@ func removeOrgUser(sess *xorm.Session, orgID, userID int64) error { | ||||
| 	} | ||||
|  | ||||
| 	// Delete all repository accesses and unwatch them. | ||||
| 	env, err := org.AccessibleReposEnv(userID) | ||||
| 	env, err := org.accessibleReposEnv(sess, userID) | ||||
| 	if err != nil { | ||||
| 		return fmt.Errorf("AccessibleReposEnv: %v", err) | ||||
| 	} | ||||
| @@ -618,16 +618,26 @@ type accessibleReposEnv struct { | ||||
| 	org     *User | ||||
| 	userID  int64 | ||||
| 	teamIDs []int64 | ||||
| 	e       Engine | ||||
| } | ||||
|  | ||||
| // AccessibleReposEnv an AccessibleReposEnvironment for the repositories in `org` | ||||
| // that are accessible to the specified user. | ||||
| func (org *User) AccessibleReposEnv(userID int64) (AccessibleReposEnvironment, error) { | ||||
| 	teamIDs, err := org.GetUserTeamIDs(userID) | ||||
| 	return org.accessibleReposEnv(x, userID) | ||||
| } | ||||
|  | ||||
| func (org *User) accessibleReposEnv(e Engine, userID int64) (AccessibleReposEnvironment, error) { | ||||
| 	teamIDs, err := org.getUserTeamIDs(e, userID) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	return &accessibleReposEnv{org: org, userID: userID, teamIDs: teamIDs}, nil | ||||
| 	return &accessibleReposEnv{ | ||||
| 		org:     org, | ||||
| 		userID:  userID, | ||||
| 		teamIDs: teamIDs, | ||||
| 		e:       e, | ||||
| 	}, nil | ||||
| } | ||||
|  | ||||
| func (env *accessibleReposEnv) cond() builder.Cond { | ||||
| @@ -642,7 +652,7 @@ func (env *accessibleReposEnv) cond() builder.Cond { | ||||
| } | ||||
|  | ||||
| func (env *accessibleReposEnv) CountRepos() (int64, error) { | ||||
| 	repoCount, err := x. | ||||
| 	repoCount, err := env.e. | ||||
| 		Join("INNER", "team_repo", "`team_repo`.repo_id=`repository`.id"). | ||||
| 		Where(env.cond()). | ||||
| 		Distinct("`repository`.id"). | ||||
| @@ -659,7 +669,7 @@ func (env *accessibleReposEnv) RepoIDs(page, pageSize int) ([]int64, error) { | ||||
| 	} | ||||
|  | ||||
| 	repoIDs := make([]int64, 0, pageSize) | ||||
| 	return repoIDs, x. | ||||
| 	return repoIDs, env.e. | ||||
| 		Table("repository"). | ||||
| 		Join("INNER", "team_repo", "`team_repo`.repo_id=`repository`.id"). | ||||
| 		Where(env.cond()). | ||||
| @@ -681,14 +691,14 @@ func (env *accessibleReposEnv) Repos(page, pageSize int) ([]*Repository, error) | ||||
| 		return repos, nil | ||||
| 	} | ||||
|  | ||||
| 	return repos, x. | ||||
| 	return repos, env.e. | ||||
| 		In("`repository`.id", repoIDs). | ||||
| 		Find(&repos) | ||||
| } | ||||
|  | ||||
| func (env *accessibleReposEnv) MirrorRepoIDs() ([]int64, error) { | ||||
| 	repoIDs := make([]int64, 0, 10) | ||||
| 	return repoIDs, x. | ||||
| 	return repoIDs, env.e. | ||||
| 		Table("repository"). | ||||
| 		Join("INNER", "team_repo", "`team_repo`.repo_id=`repository`.id AND `repository`.is_mirror=?", true). | ||||
| 		Where(env.cond()). | ||||
| @@ -709,7 +719,7 @@ func (env *accessibleReposEnv) MirrorRepos() ([]*Repository, error) { | ||||
| 		return repos, nil | ||||
| 	} | ||||
|  | ||||
| 	return repos, x. | ||||
| 	return repos, env.e. | ||||
| 		In("`repository`.id", repoIDs). | ||||
| 		Find(&repos) | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user