summaryrefslogtreecommitdiffstats
path: root/models
diff options
context:
space:
mode:
Diffstat (limited to 'models')
-rw-r--r--models/issue.go10
-rw-r--r--models/issue_test.go16
2 files changed, 26 insertions, 0 deletions
diff --git a/models/issue.go b/models/issue.go
index eab494bdea..347598300e 100644
--- a/models/issue.go
+++ b/models/issue.go
@@ -1002,6 +1002,16 @@ func GetIssueByID(id int64) (*Issue, error) {
return getIssueByID(x, id)
}
+func getIssuesByIDs(e Engine, issueIDs []int64) ([]*Issue, error) {
+ issues := make([]*Issue, 0, 10)
+ return issues, e.In("id", issueIDs).Find(&issues)
+}
+
+// GetIssuesByIDs return issues with the given IDs.
+func GetIssuesByIDs(issueIDs []int64) ([]*Issue, error) {
+ return getIssuesByIDs(x, issueIDs)
+}
+
// IssuesOptions represents options of an issue.
type IssuesOptions struct {
RepoID int64
diff --git a/models/issue_test.go b/models/issue_test.go
index a6da80917e..7c80258c2b 100644
--- a/models/issue_test.go
+++ b/models/issue_test.go
@@ -42,3 +42,19 @@ func TestIssueAPIURL(t *testing.T) {
assert.NoError(t, err)
assert.Equal(t, "https://try.gitea.io/api/v1/repos/user2/repo1/issues/1", issue.APIURL())
}
+
+func TestGetIssuesByIDs(t *testing.T) {
+ assert.NoError(t, PrepareTestDatabase())
+ testSuccess := func(expectedIssueIDs []int64, nonExistentIssueIDs []int64) {
+ issues, err := GetIssuesByIDs(append(expectedIssueIDs, nonExistentIssueIDs...))
+ assert.NoError(t, err)
+ actualIssueIDs := make([]int64, len(issues))
+ for i, issue := range issues {
+ actualIssueIDs[i] = issue.ID
+ }
+ assert.Equal(t, expectedIssueIDs, actualIssueIDs)
+
+ }
+ testSuccess([]int64{1, 2, 3}, []int64{})
+ testSuccess([]int64{1, 2, 3}, []int64{NonexistentID})
+}