From 35db5b016b9a0daaf1b3827d6275dcdf75367a81 Mon Sep 17 00:00:00 2001 From: "tristan-mihai.radulescu" Date: Fri, 15 Nov 2024 09:54:59 +0100 Subject: [PATCH] fix(GIST-104): replace 500 by 404 --- gists/controller.go | 28 ++++++++++++++++++++++++++++ gists/model.go | 16 +++++++++------- user/user_controller.go | 5 +++++ user/user_model.go | 12 +++++++----- 4 files changed, 49 insertions(+), 12 deletions(-) diff --git a/gists/controller.go b/gists/controller.go index 5873ecb..3a5c15e 100644 --- a/gists/controller.go +++ b/gists/controller.go @@ -133,6 +133,9 @@ func (g *GistControllerImpl) FindAll() fiber.Handler { gists, err := GistService.FindAll(owner_id, limit, offset, short) if err != nil { + if errors.Is(err, GistNotFound) { + return c.Status(404).SendString(err.Error()) + } return c.Status(500).SendString(err.Error()) } @@ -162,6 +165,10 @@ func (g *GistControllerImpl) FindByID() fiber.Handler { can_read, err := g.gist_guard.CanRead(c.Params("id"), owner_id) if err != nil { + + if errors.Is(err, GistNotFound) { + return c.Status(404).SendString(err.Error()) + } return c.Status(500).SendString(err.Error()) } @@ -190,6 +197,10 @@ func (g *GistControllerImpl) RawFindByID() fiber.Handler { can_read, err := g.gist_guard.CanRead(c.Params("id"), owner_id) if err != nil { + + if errors.Is(err, GistNotFound) { + return c.Status(404).SendString(err.Error()) + } return c.Status(500).SendString(err.Error()) } @@ -218,6 +229,10 @@ func (g *GistControllerImpl) UpdateContent() fiber.Handler { can_edit, err := g.gist_guard.CanEdit(c.Params("id"), owner_id) if err != nil { + + if errors.Is(err, GistNotFound) { + return c.Status(404).SendString(err.Error()) + } return c.Status(500).SendString(err.Error()) } @@ -247,6 +262,9 @@ func (g *GistControllerImpl) UpdateLanguage() fiber.Handler { can_edit, err := g.gist_guard.CanEdit(c.Params("id"), owner_id) if err != nil { + if errors.Is(err, GistNotFound) { + return c.Status(404).SendString(err.Error()) + } return c.Status(500).SendString(err.Error()) } @@ -276,6 +294,10 @@ func (g *GistControllerImpl) UpdateDescription() fiber.Handler { can_edit, err := g.gist_guard.CanEdit(c.Params("id"), owner_id) if err != nil { + + if errors.Is(err, GistNotFound) { + return c.Status(404).SendString(err.Error()) + } return c.Status(500).SendString(err.Error()) } @@ -301,6 +323,9 @@ func (g *GistControllerImpl) Delete() fiber.Handler { can_edit, err := g.gist_guard.CanEdit(c.Params("id"), owner_id) if err != nil { + if errors.Is(err, GistNotFound) { + return c.Status(404).SendString(err.Error()) + } return c.Status(500).SendString(err.Error()) } @@ -330,6 +355,9 @@ func (g *GistControllerImpl) Update() fiber.Handler { can_edit, err := g.gist_guard.CanEdit(id, owner_id) if err != nil { + if errors.Is(err, GistNotFound) { + return c.Status(404).SendString(err.Error()) + } return c.Status(500).SendString(err.Error()) } diff --git a/gists/model.go b/gists/model.go index 1be6531..18f304e 100644 --- a/gists/model.go +++ b/gists/model.go @@ -12,6 +12,8 @@ import ( type GistVisibility string +var GistNotFound error = errors.New("gist not found") + const ( Private GistVisibility = "private" Public GistVisibility = "public" @@ -92,7 +94,7 @@ func (g *GistSQL) UpdateContent(id string) (*Gist, error) { err := pogo.SuperQuery(db, "UPDATE gists SET content = $1 WHERE gist_id = $2 AND owner = $3 RETURNING :fields", &gists, g.Content, id, g.OwnerID) if len(gists) <= 0 { - return nil, errors.New("gist not found") + return nil, GistNotFound } return &gists[0], err @@ -103,7 +105,7 @@ func (g *GistSQL) UpdateField(id string, field string, val string) (*Gist, error gists := make([]Gist, 0) err := pogo.SuperQuery(db, "UPDATE gists SET "+field+" = $1 WHERE gist_id = $2 AND owner = $3 RETURNING :fields", &gists, val, id, g.OwnerID) if len(gists) <= 0 { - return nil, errors.New("gist not found") + return nil, GistNotFound } return &gists[0], err } @@ -117,7 +119,7 @@ func (g *GistSQL) UpdateGist() (*Gist, error) { gists := make([]Gist, 0) err := pogo.SuperQuery(db, "UPDATE gists SET name = $1, content = $2, language = $3, description = $4, visibility = $5 WHERE gist_id = $6 AND owner = $7 RETURNING :fields", &gists, g.Name, g.Content, g.Language, g.Description, g.Visibility, g.ID, g.OwnerID) if len(gists) <= 0 { - return nil, errors.New("gist not found") + return nil, GistNotFound } return &gists[0], err } @@ -138,7 +140,7 @@ func (g *GistSQL) FindByID(id string) (*Gist, error) { err := pogo.SuperQuery(db, "SELECT :fields FROM gists WHERE gist_id = $1", &gists, id) if len(gists) <= 0 { log.Error(err) - return nil, errors.New("gist not found") + return nil, GistNotFound } return &gists[0], err } @@ -150,7 +152,7 @@ func (g *GistSQL) FindAll(limit int, offset int) ([]Gist, error) { err := pogo.SuperQuery(db, "SELECT :fields FROM gists WHERE owner = $1 LIMIT $2 OFFSET $3", &gists, g.OwnerID, limit, offset) if len(gists) <= 0 { log.Error(err) - return nil, errors.New("gist not found") + return nil, GistNotFound } return gists, err } @@ -160,7 +162,7 @@ func (g *GistSQL) Update() (*Gist, error) { gists := make([]Gist, 0) err := pogo.SuperQuery(db, "UPDATE gists SET name = $1, content = $2, language = $3, description = $4, visibility = $5 WHERE gist_id = $6 AND owner = $7 RETURNING :fields", &gists, g.Name, g.Content, g.Language, g.Description, g.Visibility, g.ID, g.OwnerID) if len(gists) <= 0 { - return nil, errors.New("gist not found") + return nil, GistNotFound } return &gists[0], err } @@ -176,7 +178,7 @@ func (g *GistSQL) Count() (int, error) { if err != nil { log.Error(err) - return 0, errors.New("couldn't get gists") + return 0, GistNotFound } return count, nil } diff --git a/user/user_controller.go b/user/user_controller.go index 7514a39..5c86ace 100644 --- a/user/user_controller.go +++ b/user/user_controller.go @@ -1,6 +1,8 @@ package user import ( + "errors" + "github.com/gofiber/fiber/v2" ) @@ -13,6 +15,9 @@ func (u *UserControllerImpl) Get() fiber.Handler { user, err := UserService.GetUserByID(owner_id) if err != nil { + if errors.Is(err, ErrUserNotFound) { + return c.Status(404).SendString(err.Error()) + } return c.Status(500).SendString(err.Error()) } diff --git a/user/user_model.go b/user/user_model.go index bf9028e..28646b2 100644 --- a/user/user_model.go +++ b/user/user_model.go @@ -41,7 +41,7 @@ func (u *UserSQL) Save() (*User, error) { err = row.Scan(&user.ID, &user.Email, &user.Name, &user.Picture) if err != nil { log.Error(err) - return nil, errors.New("couldn't find user") + return nil, ErrUserNotFound } return &user, nil @@ -53,7 +53,7 @@ func (u *UserSQL) GetByEmail() (*User, error) { if err != nil { log.Error(err) - return nil, errors.New("couldn't find user") + return nil, ErrUserNotFound } var user User @@ -61,7 +61,7 @@ func (u *UserSQL) GetByEmail() (*User, error) { err = row.Scan(&user.ID, &user.Email, &user.Name, &user.Picture) if err != nil { log.Error(err) - return nil, errors.New("couldn't find user") + return nil, ErrUserNotFound } return &user, nil @@ -73,7 +73,7 @@ func (u *UserSQL) GetByID() (*User, error) { if err != nil { log.Error(err) - return nil, errors.New("couldn't find user") + return nil, ErrUserNotFound } var user User @@ -81,7 +81,7 @@ func (u *UserSQL) GetByID() (*User, error) { err = row.Scan(&user.ID, &user.Email, &user.Name, &user.Picture) if err != nil { log.Error(err) - return nil, errors.New("couldn't find user") + return nil, ErrUserNotFound } return &user, nil } @@ -94,3 +94,5 @@ func (u *UserSQL) Delete() error { } return nil } + +var ErrUserNotFound = errors.New("user not found")