|
|
|
@ -5,6 +5,7 @@ |
|
|
|
|
package models |
|
|
|
|
|
|
|
|
|
import ( |
|
|
|
|
"errors" |
|
|
|
|
"fmt" |
|
|
|
|
"path" |
|
|
|
|
"regexp" |
|
|
|
@ -1015,9 +1016,35 @@ type NewIssueOptions struct { |
|
|
|
|
IsPull bool |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// GetMaxIndexOfIssue returns the max index on issue
|
|
|
|
|
func GetMaxIndexOfIssue(repoID int64) (int64, error) { |
|
|
|
|
return getMaxIndexOfIssue(x, repoID) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func getMaxIndexOfIssue(e Engine, repoID int64) (int64, error) { |
|
|
|
|
var ( |
|
|
|
|
maxIndex int64 |
|
|
|
|
has bool |
|
|
|
|
err error |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
has, err = e.SQL("SELECT COALESCE((SELECT MAX(`index`) FROM issue WHERE repo_id = ?),0)", repoID).Get(&maxIndex) |
|
|
|
|
if err != nil { |
|
|
|
|
return 0, err |
|
|
|
|
} else if !has { |
|
|
|
|
return 0, errors.New("Retrieve Max index from issue failed") |
|
|
|
|
} |
|
|
|
|
return maxIndex, nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func newIssue(e *xorm.Session, doer *User, opts NewIssueOptions) (err error) { |
|
|
|
|
opts.Issue.Title = strings.TrimSpace(opts.Issue.Title) |
|
|
|
|
opts.Issue.Index = opts.Repo.NextIssueIndex() |
|
|
|
|
|
|
|
|
|
maxIndex, err := getMaxIndexOfIssue(e, opts.Issue.RepoID) |
|
|
|
|
if err != nil { |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
opts.Issue.Index = maxIndex + 1 |
|
|
|
|
|
|
|
|
|
if opts.Issue.MilestoneID > 0 { |
|
|
|
|
milestone, err := getMilestoneByRepoID(e, opts.Issue.RepoID, opts.Issue.MilestoneID) |
|
|
|
|