From ae59787ff5b5f2946f36356e214ce5c24d469368 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Thu, 22 Jan 2026 07:17:34 -0500 Subject: [PATCH] chore: remove `internal/database/errors` package (#8096) --- internal/database/errors/errors.go | 10 ------- internal/database/errors/repo.go | 44 ------------------------------ internal/database/issue.go | 4 +-- internal/database/mirror.go | 18 ++++++++++-- internal/database/org_team.go | 2 +- internal/database/repo.go | 18 ++++++++++-- internal/database/repo_editor.go | 18 ++++++++++-- internal/database/repo_test.go | 14 +++++++++- internal/route/repo/editor.go | 10 ++++--- internal/route/repo/issue.go | 6 ++-- internal/route/repo/setting.go | 2 +- internal/route/repo/webhook.go | 2 +- 12 files changed, 75 insertions(+), 73 deletions(-) delete mode 100644 internal/database/errors/errors.go delete mode 100644 internal/database/errors/repo.go diff --git a/internal/database/errors/errors.go b/internal/database/errors/errors.go deleted file mode 100644 index 2bbef15a1..000000000 --- a/internal/database/errors/errors.go +++ /dev/null @@ -1,10 +0,0 @@ -package errors - -import "errors" - -var ErrInternalServerError = errors.New("internal server error") - -// New is a wrapper of real errors.New function. -func New(text string) error { - return errors.New(text) -} diff --git a/internal/database/errors/repo.go b/internal/database/errors/repo.go deleted file mode 100644 index beda5bae6..000000000 --- a/internal/database/errors/repo.go +++ /dev/null @@ -1,44 +0,0 @@ -package errors - -import ( - "fmt" -) - -type InvalidRepoReference struct { - Ref string -} - -func IsInvalidRepoReference(err error) bool { - _, ok := err.(InvalidRepoReference) - return ok -} - -func (err InvalidRepoReference) Error() string { - return fmt.Sprintf("invalid repository reference [ref: %s]", err.Ref) -} - -type MirrorNotExist struct { - RepoID int64 -} - -func IsMirrorNotExist(err error) bool { - _, ok := err.(MirrorNotExist) - return ok -} - -func (err MirrorNotExist) Error() string { - return fmt.Sprintf("mirror does not exist [repo_id: %d]", err.RepoID) -} - -type BranchAlreadyExists struct { - Name string -} - -func IsBranchAlreadyExists(err error) bool { - _, ok := err.(BranchAlreadyExists) - return ok -} - -func (err BranchAlreadyExists) Error() string { - return fmt.Sprintf("branch already exists [name: %s]", err.Name) -} diff --git a/internal/database/issue.go b/internal/database/issue.go index 25b961bf0..0e5eded8f 100644 --- a/internal/database/issue.go +++ b/internal/database/issue.go @@ -2,6 +2,7 @@ package database import ( "context" + "errors" "fmt" "strings" "time" @@ -13,13 +14,12 @@ import ( api "github.com/gogs/go-gogs-client" "gogs.io/gogs/internal/conf" - "gogs.io/gogs/internal/database/errors" "gogs.io/gogs/internal/errutil" "gogs.io/gogs/internal/markup" "gogs.io/gogs/internal/tool" ) -var ErrMissingIssueNumber = errors.New("No issue number specified") +var ErrMissingIssueNumber = errors.New("no issue number specified") // Issue represents an issue or pull request of repository. type Issue struct { diff --git a/internal/database/mirror.go b/internal/database/mirror.go index ad34a3588..962fefce0 100644 --- a/internal/database/mirror.go +++ b/internal/database/mirror.go @@ -15,13 +15,27 @@ import ( "github.com/gogs/git-module" "gogs.io/gogs/internal/conf" - "gogs.io/gogs/internal/database/errors" "gogs.io/gogs/internal/process" "gogs.io/gogs/internal/sync" ) var MirrorQueue = sync.NewUniqueQueue(1000) +// MirrorNotExist represents an error when mirror does not exist. +type MirrorNotExist struct { + RepoID int64 +} + +// IsMirrorNotExist returns true if the error is MirrorNotExist. +func IsMirrorNotExist(err error) bool { + _, ok := err.(MirrorNotExist) + return ok +} + +func (err MirrorNotExist) Error() string { + return fmt.Sprintf("mirror does not exist [repo_id: %d]", err.RepoID) +} + // Mirror represents mirror information of a repository. type Mirror struct { ID int64 @@ -268,7 +282,7 @@ func getMirrorByRepoID(e Engine, repoID int64) (*Mirror, error) { if err != nil { return nil, err } else if !has { - return nil, errors.MirrorNotExist{RepoID: repoID} + return nil, MirrorNotExist{RepoID: repoID} } return m, nil } diff --git a/internal/database/org_team.go b/internal/database/org_team.go index 05a6fea24..d6b5cce2a 100644 --- a/internal/database/org_team.go +++ b/internal/database/org_team.go @@ -2,12 +2,12 @@ package database import ( "context" + "errors" "fmt" "strings" "xorm.io/xorm" - "gogs.io/gogs/internal/database/errors" "gogs.io/gogs/internal/errutil" ) diff --git a/internal/database/repo.go b/internal/database/repo.go index 0a9d4da6a..08aeb77ce 100644 --- a/internal/database/repo.go +++ b/internal/database/repo.go @@ -29,7 +29,6 @@ import ( embedConf "gogs.io/gogs/conf" "gogs.io/gogs/internal/avatar" "gogs.io/gogs/internal/conf" - dberrors "gogs.io/gogs/internal/database/errors" "gogs.io/gogs/internal/dbutil" "gogs.io/gogs/internal/errutil" "gogs.io/gogs/internal/markup" @@ -43,6 +42,21 @@ import ( // RepoAvatarURLPrefix is used to identify a URL is to access repository avatar. const RepoAvatarURLPrefix = "repo-avatars" +// InvalidRepoReference represents an error when repository reference is invalid. +type InvalidRepoReference struct { + Ref string +} + +// IsInvalidRepoReference returns true if the error is InvalidRepoReference. +func IsInvalidRepoReference(err error) bool { + _, ok := err.(InvalidRepoReference) + return ok +} + +func (err InvalidRepoReference) Error() string { + return fmt.Sprintf("invalid repository reference [ref: %s]", err.Ref) +} + var repoWorkingPool = sync.NewExclusivePool() var ( @@ -1751,7 +1765,7 @@ func DeleteRepository(ownerID, repoID int64) error { func GetRepositoryByRef(ref string) (*Repository, error) { n := strings.IndexByte(ref, byte('/')) if n < 2 { - return nil, dberrors.InvalidRepoReference{Ref: ref} + return nil, InvalidRepoReference{Ref: ref} } userName, repoName := ref[:n], ref[n+1:] diff --git a/internal/database/repo_editor.go b/internal/database/repo_editor.go index 8878b51d6..7226882ca 100644 --- a/internal/database/repo_editor.go +++ b/internal/database/repo_editor.go @@ -19,7 +19,6 @@ import ( "gogs.io/gogs/internal/conf" "gogs.io/gogs/internal/cryptoutil" - dberrors "gogs.io/gogs/internal/database/errors" "gogs.io/gogs/internal/gitutil" "gogs.io/gogs/internal/osutil" "gogs.io/gogs/internal/pathutil" @@ -27,6 +26,21 @@ import ( "gogs.io/gogs/internal/tool" ) +// BranchAlreadyExists represents an error when branch already exists. +type BranchAlreadyExists struct { + Name string +} + +// IsBranchAlreadyExists returns true if the error is BranchAlreadyExists. +func IsBranchAlreadyExists(err error) bool { + _, ok := err.(BranchAlreadyExists) + return ok +} + +func (err BranchAlreadyExists) Error() string { + return fmt.Sprintf("branch already exists [name: %s]", err.Name) +} + const ( EnvAuthUserID = "GOGS_AUTH_USER_ID" EnvAuthUserName = "GOGS_AUTH_USER_NAME" @@ -154,7 +168,7 @@ func (r *Repository) UpdateRepoFile(doer *User, opts UpdateRepoFileOptions) erro if opts.OldBranch != opts.NewBranch { // Directly return error if new branch already exists in the server if git.RepoHasBranch(repoPath, opts.NewBranch) { - return dberrors.BranchAlreadyExists{Name: opts.NewBranch} + return BranchAlreadyExists{Name: opts.NewBranch} } // Otherwise, delete branch from local copy in case out of sync diff --git a/internal/database/repo_test.go b/internal/database/repo_test.go index e5d6f43bf..725dadd63 100644 --- a/internal/database/repo_test.go +++ b/internal/database/repo_test.go @@ -8,6 +8,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "gogs.io/gogs/internal/conf" "gogs.io/gogs/internal/markup" "gogs.io/gogs/internal/osutil" ) @@ -58,6 +59,17 @@ func TestRepository_ComposeMetas(t *testing.T) { } func Test_CreateRepository_PreventDeletion(t *testing.T) { + tempRepositoryRoot := filepath.Join(os.TempDir(), "createRepository-tempRepositoryRoot") + conf.SetMockRepository( + t, + conf.RepositoryOpts{ + Root: tempRepositoryRoot, + }, + ) + err := os.RemoveAll(tempRepositoryRoot) + require.NoError(t, err) + defer func() { _ = os.RemoveAll(tempRepositoryRoot) }() + owner := &User{Name: "testuser"} opts := CreateRepoOptionsLegacy{Name: "safety-test"} repoPath := RepoPath(owner.Name, opts.Name) @@ -66,7 +78,7 @@ func Test_CreateRepository_PreventDeletion(t *testing.T) { canary := filepath.Join(repoPath, "canary.txt") require.NoError(t, os.WriteFile(canary, []byte("should survive"), 0o644)) - _, err := CreateRepository(owner, owner, opts) + _, err = CreateRepository(owner, owner, opts) require.Error(t, err) assert.Contains(t, err.Error(), "repository directory already exists") assert.True(t, osutil.Exist(canary)) diff --git a/internal/route/repo/editor.go b/internal/route/repo/editor.go index 4a5bcd0ba..7b753f6d9 100644 --- a/internal/route/repo/editor.go +++ b/internal/route/repo/editor.go @@ -1,6 +1,7 @@ package repo import ( + "errors" "fmt" "net/http" "path" @@ -11,7 +12,6 @@ import ( "gogs.io/gogs/internal/conf" "gogs.io/gogs/internal/context" "gogs.io/gogs/internal/database" - "gogs.io/gogs/internal/database/errors" "gogs.io/gogs/internal/form" "gogs.io/gogs/internal/gitutil" "gogs.io/gogs/internal/pathutil" @@ -26,6 +26,8 @@ const ( tmplEditorUpload = "repo/editor/upload" ) +var errInternalServerError = errors.New("internal server error") + // getParentTreeFields returns list of parent tree names and corresponding tree paths // based on given tree path. func getParentTreeFields(treePath string) (treeNames, treePaths []string) { @@ -278,7 +280,7 @@ func editFilePost(c *context.Context, f form.EditRepoFile, isNewFile bool) { }); err != nil { log.Error("Failed to update repo file: %v", err) c.FormErr("TreePath") - c.RenderWithErr(c.Tr("repo.editor.fail_to_update_file", f.TreePath, errors.ErrInternalServerError), tmplEditorEdit, &f) + c.RenderWithErr(c.Tr("repo.editor.fail_to_update_file", f.TreePath, errInternalServerError), tmplEditorEdit, &f) return } @@ -386,7 +388,7 @@ func DeleteFilePost(c *context.Context, f form.DeleteRepoFile) { Message: message, }); err != nil { log.Error("Failed to delete repo file: %v", err) - c.RenderWithErr(c.Tr("repo.editor.fail_to_delete_file", c.Repo.TreePath, errors.ErrInternalServerError), tmplEditorDelete, &f) + c.RenderWithErr(c.Tr("repo.editor.fail_to_delete_file", c.Repo.TreePath, errInternalServerError), tmplEditorDelete, &f) return } @@ -508,7 +510,7 @@ func UploadFilePost(c *context.Context, f form.UploadRepoFile) { }); err != nil { log.Error("Failed to upload files: %v", err) c.FormErr("TreePath") - c.RenderWithErr(c.Tr("repo.editor.unable_to_upload_files", f.TreePath, errors.ErrInternalServerError), tmplEditorUpload, &f) + c.RenderWithErr(c.Tr("repo.editor.unable_to_upload_files", f.TreePath, errInternalServerError), tmplEditorUpload, &f) return } diff --git a/internal/route/repo/issue.go b/internal/route/repo/issue.go index 5decd6959..a4fd5d066 100644 --- a/internal/route/repo/issue.go +++ b/internal/route/repo/issue.go @@ -1,6 +1,7 @@ package repo import ( + "errors" "fmt" "net/http" "net/url" @@ -14,7 +15,6 @@ import ( "gogs.io/gogs/internal/conf" "gogs.io/gogs/internal/context" "gogs.io/gogs/internal/database" - "gogs.io/gogs/internal/database/errors" "gogs.io/gogs/internal/form" "gogs.io/gogs/internal/markup" "gogs.io/gogs/internal/tool" @@ -33,8 +33,8 @@ const ( ) var ( - ErrFileTypeForbidden = errors.New("File type is not allowed") - ErrTooManyFiles = errors.New("Maximum number of files to upload exceeded") + ErrFileTypeForbidden = errors.New("file type is not allowed") + ErrTooManyFiles = errors.New("maximum number of files to upload exceeded") IssueTemplateCandidates = []string{ "ISSUE_TEMPLATE.md", diff --git a/internal/route/repo/setting.go b/internal/route/repo/setting.go index a9e496392..1e6d2abb9 100644 --- a/internal/route/repo/setting.go +++ b/internal/route/repo/setting.go @@ -1,6 +1,7 @@ package repo import ( + "errors" "fmt" "io" "strings" @@ -13,7 +14,6 @@ import ( "gogs.io/gogs/internal/conf" "gogs.io/gogs/internal/context" "gogs.io/gogs/internal/database" - "gogs.io/gogs/internal/database/errors" "gogs.io/gogs/internal/email" "gogs.io/gogs/internal/form" "gogs.io/gogs/internal/osutil" diff --git a/internal/route/repo/webhook.go b/internal/route/repo/webhook.go index 75785496c..d64e29eee 100644 --- a/internal/route/repo/webhook.go +++ b/internal/route/repo/webhook.go @@ -1,6 +1,7 @@ package repo import ( + "errors" "fmt" "net/http" "net/url" @@ -15,7 +16,6 @@ import ( "gogs.io/gogs/internal/conf" "gogs.io/gogs/internal/context" "gogs.io/gogs/internal/database" - "gogs.io/gogs/internal/database/errors" "gogs.io/gogs/internal/form" "gogs.io/gogs/internal/netutil" )