mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-30 06:38:37 -04:00 
			
		
		
		
	fix code review on mssql (#5502)
This commit is contained in:
		| @@ -9,6 +9,7 @@ import ( | |||||||
|  |  | ||||||
| 	"code.gitea.io/gitea/modules/log" | 	"code.gitea.io/gitea/modules/log" | ||||||
| 	"code.gitea.io/gitea/modules/util" | 	"code.gitea.io/gitea/modules/util" | ||||||
|  | 	"github.com/go-xorm/core" | ||||||
| 	"github.com/go-xorm/xorm" | 	"github.com/go-xorm/xorm" | ||||||
|  |  | ||||||
| 	"github.com/go-xorm/builder" | 	"github.com/go-xorm/builder" | ||||||
| @@ -266,13 +267,24 @@ type PullReviewersWithType struct { | |||||||
| // GetReviewersByPullID gets all reviewers for a pull request with the statuses | // GetReviewersByPullID gets all reviewers for a pull request with the statuses | ||||||
| func GetReviewersByPullID(pullID int64) (issueReviewers []*PullReviewersWithType, err error) { | func GetReviewersByPullID(pullID int64) (issueReviewers []*PullReviewersWithType, err error) { | ||||||
| 	irs := []*PullReviewersWithType{} | 	irs := []*PullReviewersWithType{} | ||||||
|  | 	if x.Dialect().DBType() == core.MSSQL { | ||||||
|  | 		err = x.SQL(`SELECT [user].*, review.type, review.review_updated_unix FROM  | ||||||
|  | (SELECT review.id, review.type, review.reviewer_id, max(review.updated_unix) as review_updated_unix  | ||||||
|  | FROM review WHERE review.issue_id=? AND (review.type = ? OR review.type = ?)  | ||||||
|  | GROUP BY review.id, review.type, review.reviewer_id) as review  | ||||||
|  | INNER JOIN [user] ON review.reviewer_id = [user].id ORDER BY review_updated_unix DESC`, | ||||||
|  | 			pullID, ReviewTypeApprove, ReviewTypeReject). | ||||||
|  | 			Find(&irs) | ||||||
|  | 	} else { | ||||||
| 		err = x.Select("`user`.*, review.type, max(review.updated_unix) as review_updated_unix"). | 		err = x.Select("`user`.*, review.type, max(review.updated_unix) as review_updated_unix"). | ||||||
| 			Table("review"). | 			Table("review"). | ||||||
| 			Join("INNER", "`user`", "review.reviewer_id = `user`.id"). | 			Join("INNER", "`user`", "review.reviewer_id = `user`.id"). | ||||||
| 		Where("review.issue_id = ? AND (review.type = ? OR review.type = ?)", pullID, ReviewTypeApprove, ReviewTypeReject). | 			Where("review.issue_id = ? AND (review.type = ? OR review.type = ?)", | ||||||
|  | 				pullID, ReviewTypeApprove, ReviewTypeReject). | ||||||
| 			GroupBy("`user`.id, review.type"). | 			GroupBy("`user`.id, review.type"). | ||||||
| 			OrderBy("review_updated_unix DESC"). | 			OrderBy("review_updated_unix DESC"). | ||||||
| 			Find(&irs) | 			Find(&irs) | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	// We need to group our results by user id _and_ review type, otherwise the query fails when using postgresql. | 	// We need to group our results by user id _and_ review type, otherwise the query fails when using postgresql. | ||||||
| 	// But becaus we're doing this, we need to manually filter out multiple reviews of different types by the | 	// But becaus we're doing this, we need to manually filter out multiple reviews of different types by the | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user