From 716fcfcf72be6af854d800f3e2c885b9806577e6 Mon Sep 17 00:00:00 2001 From: zeripath Date: Tue, 18 Oct 2022 06:50:37 +0100 Subject: Make every not exist error unwrappable to a fs.ErrNotExist (#20891) A lot of our code is repeatedly testing if individual errors are specific types of Not Exist errors. This is repetitative and unnecesary. `Unwrap() error` provides a common way of labelling an error as a NotExist error and we can/should use this. This PR has chosen to use the common `io/fs` errors e.g. `fs.ErrNotExist` for our errors. This is in some ways not completely correct as these are not filesystem errors but it seems like a reasonable thing to do and would allow us to simplify a lot of our code to `errors.Is(err, fs.ErrNotExist)` instead of `package.IsErr...NotExist(err)` I am open to suggestions to use a different base error - perhaps `models/db.ErrNotExist` if that would be felt to be better. Signed-off-by: Andrew Thornton Co-authored-by: delvh --- models/admin/task.go | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'models/admin') diff --git a/models/admin/task.go b/models/admin/task.go index 07eb61decc..4fa0f10394 100644 --- a/models/admin/task.go +++ b/models/admin/task.go @@ -167,6 +167,10 @@ func (err ErrTaskDoesNotExist) Error() string { err.ID, err.RepoID, err.Type) } +func (err ErrTaskDoesNotExist) Unwrap() error { + return util.ErrNotExist +} + // GetMigratingTask returns the migrating task by repo's id func GetMigratingTask(repoID int64) (*Task, error) { task := Task{ -- cgit v1.2.3