summaryrefslogtreecommitdiffstats
path: root/models
diff options
context:
space:
mode:
Diffstat (limited to 'models')
-rw-r--r--models/issue_label.go25
-rw-r--r--models/issue_label_test.go2
2 files changed, 23 insertions, 4 deletions
diff --git a/models/issue_label.go b/models/issue_label.go
index 19bf01c6c7..5ecd355a6b 100644
--- a/models/issue_label.go
+++ b/models/issue_label.go
@@ -96,12 +96,31 @@ func (label *Label) ForegroundColor() template.CSS {
return template.CSS("#000")
}
-// NewLabels creates new label(s) for a repository.
-func NewLabels(labels ...*Label) error {
- _, err := x.Insert(labels)
+func newLabel(e Engine, label *Label) error {
+ _, err := e.Insert(label)
return err
}
+// NewLabel creates a new label for a repository
+func NewLabel(label *Label) error {
+ return newLabel(x, label)
+}
+
+// NewLabels creates new labels for a repository.
+func NewLabels(labels ...*Label) error {
+ sess := x.NewSession()
+ defer sess.Close()
+ if err := sess.Begin(); err != nil {
+ return err
+ }
+ for _, label := range labels {
+ if err := newLabel(sess, label); err != nil {
+ return err
+ }
+ }
+ return sess.Commit()
+}
+
// getLabelInRepoByName returns a label by Name in given repository.
// If pass repoID as 0, then ORM will ignore limitation of repository
// and can return arbitrary label with any valid ID.
diff --git a/models/issue_label_test.go b/models/issue_label_test.go
index 2ef396668a..33630cd901 100644
--- a/models/issue_label_test.go
+++ b/models/issue_label_test.go
@@ -52,7 +52,7 @@ func TestNewLabels(t *testing.T) {
}
assert.NoError(t, NewLabels(labels...))
for _, label := range labels {
- AssertExistsAndLoadBean(t, label)
+ AssertExistsAndLoadBean(t, label, Cond("id = ?", label.ID))
}
CheckConsistencyFor(t, &Label{}, &Repository{})
}