@ -99,9 +99,9 @@ func applySorts(sess *xorm.Session, sortType string, priorityRepoID int64) {
}
}
}
}
func applyLimit ( sess * xorm . Session , opts * IssuesOptions ) * xorm . Session {
func applyLimit ( sess * xorm . Session , opts * IssuesOptions ) {
if opts . Paginator == nil || opts . Paginator . IsListAll ( ) {
if opts . Paginator == nil || opts . Paginator . IsListAll ( ) {
return sess
return
}
}
start := 0
start := 0
@ -109,11 +109,9 @@ func applyLimit(sess *xorm.Session, opts *IssuesOptions) *xorm.Session {
start = ( opts . Paginator . Page - 1 ) * opts . Paginator . PageSize
start = ( opts . Paginator . Page - 1 ) * opts . Paginator . PageSize
}
}
sess . Limit ( opts . Paginator . PageSize , start )
sess . Limit ( opts . Paginator . PageSize , start )
return sess
}
}
func applyLabelsCondition ( sess * xorm . Session , opts * IssuesOptions ) * xorm . Session {
func applyLabelsCondition ( sess * xorm . Session , opts * IssuesOptions ) {
if len ( opts . LabelIDs ) > 0 {
if len ( opts . LabelIDs ) > 0 {
if opts . LabelIDs [ 0 ] == 0 {
if opts . LabelIDs [ 0 ] == 0 {
sess . Where ( "issue.id NOT IN (SELECT issue_id FROM issue_label)" )
sess . Where ( "issue.id NOT IN (SELECT issue_id FROM issue_label)" )
@ -136,11 +134,9 @@ func applyLabelsCondition(sess *xorm.Session, opts *IssuesOptions) *xorm.Session
if len ( opts . ExcludedLabelNames ) > 0 {
if len ( opts . ExcludedLabelNames ) > 0 {
sess . And ( builder . NotIn ( "issue.id" , BuildLabelNamesIssueIDsCondition ( opts . ExcludedLabelNames ) ) )
sess . And ( builder . NotIn ( "issue.id" , BuildLabelNamesIssueIDsCondition ( opts . ExcludedLabelNames ) ) )
}
}
return sess
}
}
func applyMilestoneCondition ( sess * xorm . Session , opts * IssuesOptions ) * xorm . Session {
func applyMilestoneCondition ( sess * xorm . Session , opts * IssuesOptions ) {
if len ( opts . MilestoneIDs ) == 1 && opts . MilestoneIDs [ 0 ] == db . NoConditionID {
if len ( opts . MilestoneIDs ) == 1 && opts . MilestoneIDs [ 0 ] == db . NoConditionID {
sess . And ( "issue.milestone_id = 0" )
sess . And ( "issue.milestone_id = 0" )
} else if len ( opts . MilestoneIDs ) > 0 {
} else if len ( opts . MilestoneIDs ) > 0 {
@ -153,11 +149,9 @@ func applyMilestoneCondition(sess *xorm.Session, opts *IssuesOptions) *xorm.Sess
From ( "milestone" ) .
From ( "milestone" ) .
Where ( builder . In ( "name" , opts . IncludeMilestones ) ) )
Where ( builder . In ( "name" , opts . IncludeMilestones ) ) )
}
}
return sess
}
}
func applyProjectCondition ( sess * xorm . Session , opts * IssuesOptions ) * xorm . Session {
func applyProjectCondition ( sess * xorm . Session , opts * IssuesOptions ) {
if opts . ProjectID > 0 { // specific project
if opts . ProjectID > 0 { // specific project
sess . Join ( "INNER" , "project_issue" , "issue.id = project_issue.issue_id" ) .
sess . Join ( "INNER" , "project_issue" , "issue.id = project_issue.issue_id" ) .
And ( "project_issue.project_id=?" , opts . ProjectID )
And ( "project_issue.project_id=?" , opts . ProjectID )
@ -166,10 +160,9 @@ func applyProjectCondition(sess *xorm.Session, opts *IssuesOptions) *xorm.Sessio
}
}
// opts.ProjectID == 0 means all projects,
// opts.ProjectID == 0 means all projects,
// do not need to apply any condition
// do not need to apply any condition
return sess
}
}
func applyProjectColumnCondition ( sess * xorm . Session , opts * IssuesOptions ) * xorm . Session {
func applyProjectColumnCondition ( sess * xorm . Session , opts * IssuesOptions ) {
// opts.ProjectColumnID == 0 means all project columns,
// opts.ProjectColumnID == 0 means all project columns,
// do not need to apply any condition
// do not need to apply any condition
if opts . ProjectColumnID > 0 {
if opts . ProjectColumnID > 0 {
@ -177,10 +170,9 @@ func applyProjectColumnCondition(sess *xorm.Session, opts *IssuesOptions) *xorm.
} else if opts . ProjectColumnID == db . NoConditionID {
} else if opts . ProjectColumnID == db . NoConditionID {
sess . In ( "issue.id" , builder . Select ( "issue_id" ) . From ( "project_issue" ) . Where ( builder . Eq { "project_board_id" : 0 } ) )
sess . In ( "issue.id" , builder . Select ( "issue_id" ) . From ( "project_issue" ) . Where ( builder . Eq { "project_board_id" : 0 } ) )
}
}
return sess
}
}
func applyRepoConditions ( sess * xorm . Session , opts * IssuesOptions ) * xorm . Session {
func applyRepoConditions ( sess * xorm . Session , opts * IssuesOptions ) {
if len ( opts . RepoIDs ) == 1 {
if len ( opts . RepoIDs ) == 1 {
opts . RepoCond = builder . Eq { "issue.repo_id" : opts . RepoIDs [ 0 ] }
opts . RepoCond = builder . Eq { "issue.repo_id" : opts . RepoIDs [ 0 ] }
} else if len ( opts . RepoIDs ) > 1 {
} else if len ( opts . RepoIDs ) > 1 {
@ -195,10 +187,9 @@ func applyRepoConditions(sess *xorm.Session, opts *IssuesOptions) *xorm.Session
if opts . RepoCond != nil {
if opts . RepoCond != nil {
sess . And ( opts . RepoCond )
sess . And ( opts . RepoCond )
}
}
return sess
}
}
func applyConditions ( sess * xorm . Session , opts * IssuesOptions ) * xorm . Session {
func applyConditions ( sess * xorm . Session , opts * IssuesOptions ) {
if len ( opts . IssueIDs ) > 0 {
if len ( opts . IssueIDs ) > 0 {
sess . In ( "issue.id" , opts . IssueIDs )
sess . In ( "issue.id" , opts . IssueIDs )
}
}
@ -261,8 +252,6 @@ func applyConditions(sess *xorm.Session, opts *IssuesOptions) *xorm.Session {
if opts . User != nil {
if opts . User != nil {
sess . And ( issuePullAccessibleRepoCond ( "issue.repo_id" , opts . User . ID , opts . Org , opts . Team , opts . IsPull . Value ( ) ) )
sess . And ( issuePullAccessibleRepoCond ( "issue.repo_id" , opts . User . ID , opts . Org , opts . Team , opts . IsPull . Value ( ) ) )
}
}
return sess
}
}
// teamUnitsRepoCond returns query condition for those repo id in the special org team with special units access
// teamUnitsRepoCond returns query condition for those repo id in the special org team with special units access
@ -339,22 +328,22 @@ func issuePullAccessibleRepoCond(repoIDstr string, userID int64, org *organizati
return cond
return cond
}
}
func applyAssigneeCondition ( sess * xorm . Session , assigneeID int64 ) * xorm . Session {
func applyAssigneeCondition ( sess * xorm . Session , assigneeID int64 ) {
return sess . Join ( "INNER" , "issue_assignees" , "issue.id = issue_assignees.issue_id" ) .
sess . Join ( "INNER" , "issue_assignees" , "issue.id = issue_assignees.issue_id" ) .
And ( "issue_assignees.assignee_id = ?" , assigneeID )
And ( "issue_assignees.assignee_id = ?" , assigneeID )
}
}
func applyPosterCondition ( sess * xorm . Session , posterID int64 ) * xorm . Session {
func applyPosterCondition ( sess * xorm . Session , posterID int64 ) {
return sess . And ( "issue.poster_id=?" , posterID )
sess . And ( "issue.poster_id=?" , posterID )
}
}
func applyMentionedCondition ( sess * xorm . Session , mentionedID int64 ) * xorm . Session {
func applyMentionedCondition ( sess * xorm . Session , mentionedID int64 ) {
return sess . Join ( "INNER" , "issue_user" , "issue.id = issue_user.issue_id" ) .
sess . Join ( "INNER" , "issue_user" , "issue.id = issue_user.issue_id" ) .
And ( "issue_user.is_mentioned = ?" , true ) .
And ( "issue_user.is_mentioned = ?" , true ) .
And ( "issue_user.uid = ?" , mentionedID )
And ( "issue_user.uid = ?" , mentionedID )
}
}
func applyReviewRequestedCondition ( sess * xorm . Session , reviewRequestedID int64 ) * xorm . Session {
func applyReviewRequestedCondition ( sess * xorm . Session , reviewRequestedID int64 ) {
existInTeamQuery := builder . Select ( "team_user.team_id" ) .
existInTeamQuery := builder . Select ( "team_user.team_id" ) .
From ( "team_user" ) .
From ( "team_user" ) .
Where ( builder . Eq { "team_user.uid" : reviewRequestedID } )
Where ( builder . Eq { "team_user.uid" : reviewRequestedID } )
@ -375,11 +364,11 @@ func applyReviewRequestedCondition(sess *xorm.Session, reviewRequestedID int64)
) ,
) ,
builder . In ( "review.id" , maxReview ) ,
builder . In ( "review.id" , maxReview ) ,
) )
) )
return sess . Where ( "issue.poster_id <> ?" , reviewRequestedID ) .
sess . Where ( "issue.poster_id <> ?" , reviewRequestedID ) .
And ( builder . In ( "issue.id" , subQuery ) )
And ( builder . In ( "issue.id" , subQuery ) )
}
}
func applyReviewedCondition ( sess * xorm . Session , reviewedID int64 ) * xorm . Session {
func applyReviewedCondition ( sess * xorm . Session , reviewedID int64 ) {
// Query for pull requests where you are a reviewer or commenter, excluding
// Query for pull requests where you are a reviewer or commenter, excluding
// any pull requests already returned by the review requested filter.
// any pull requests already returned by the review requested filter.
notPoster := builder . Neq { "issue.poster_id" : reviewedID }
notPoster := builder . Neq { "issue.poster_id" : reviewedID }
@ -406,11 +395,11 @@ func applyReviewedCondition(sess *xorm.Session, reviewedID int64) *xorm.Session
builder . In ( "type" , CommentTypeComment , CommentTypeCode , CommentTypeReview ) ,
builder . In ( "type" , CommentTypeComment , CommentTypeCode , CommentTypeReview ) ,
) ) ,
) ) ,
)
)
return sess . And ( notPoster , builder . Or ( reviewed , commented ) )
sess . And ( notPoster , builder . Or ( reviewed , commented ) )
}
}
func applySubscribedCondition ( sess * xorm . Session , subscriberID int64 ) * xorm . Session {
func applySubscribedCondition ( sess * xorm . Session , subscriberID int64 ) {
return sess . And (
sess . And (
builder .
builder .
NotIn ( "issue.id" ,
NotIn ( "issue.id" ,
builder . Select ( "issue_id" ) .
builder . Select ( "issue_id" ) .