aboutsummaryrefslogtreecommitdiff
path: root/internal/db/issue_label.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/db/issue_label.go')
-rw-r--r--internal/db/issue_label.go32
1 files changed, 26 insertions, 6 deletions
diff --git a/internal/db/issue_label.go b/internal/db/issue_label.go
index b7a6029a..0eaa9b96 100644
--- a/internal/db/issue_label.go
+++ b/internal/db/issue_label.go
@@ -14,6 +14,7 @@ import (
api "github.com/gogs/go-gogs-client"
+ "gogs.io/gogs/internal/errutil"
"gogs.io/gogs/internal/lazyregexp"
"gogs.io/gogs/internal/tool"
)
@@ -103,23 +104,42 @@ func NewLabels(labels ...*Label) error {
return err
}
+var _ errutil.NotFound = (*ErrLabelNotExist)(nil)
+
+type ErrLabelNotExist struct {
+ args map[string]interface{}
+}
+
+func IsErrLabelNotExist(err error) bool {
+ _, ok := err.(ErrLabelNotExist)
+ return ok
+}
+
+func (err ErrLabelNotExist) Error() string {
+ return fmt.Sprintf("label does not exist: %v", err.args)
+}
+
+func (ErrLabelNotExist) NotFound() bool {
+ return true
+}
+
// getLabelOfRepoByName 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.
func getLabelOfRepoByName(e Engine, repoID int64, labelName string) (*Label, error) {
if len(labelName) <= 0 {
- return nil, ErrLabelNotExist{0, repoID}
+ return nil, ErrLabelNotExist{args: map[string]interface{}{"repoID": repoID}}
}
l := &Label{
Name: labelName,
RepoID: repoID,
}
- has, err := x.Get(l)
+ has, err := e.Get(l)
if err != nil {
return nil, err
} else if !has {
- return nil, ErrLabelNotExist{0, l.RepoID}
+ return nil, ErrLabelNotExist{args: map[string]interface{}{"repoID": repoID}}
}
return l, nil
}
@@ -129,18 +149,18 @@ func getLabelOfRepoByName(e Engine, repoID int64, labelName string) (*Label, err
// and can return arbitrary label with any valid ID.
func getLabelOfRepoByID(e Engine, repoID, labelID int64) (*Label, error) {
if labelID <= 0 {
- return nil, ErrLabelNotExist{labelID, repoID}
+ return nil, ErrLabelNotExist{args: map[string]interface{}{"repoID": repoID, "labelID": labelID}}
}
l := &Label{
ID: labelID,
RepoID: repoID,
}
- has, err := x.Get(l)
+ has, err := e.Get(l)
if err != nil {
return nil, err
} else if !has {
- return nil, ErrLabelNotExist{l.ID, l.RepoID}
+ return nil, ErrLabelNotExist{args: map[string]interface{}{"repoID": repoID, "labelID": labelID}}
}
return l, nil
}