Skip to content

Commit

Permalink
feat(usecase) : add delete user
Browse files Browse the repository at this point in the history
  • Loading branch information
praiakov committed Dec 30, 2021
1 parent 7f0b14d commit 7c8a34d
Show file tree
Hide file tree
Showing 4 changed files with 69 additions and 0 deletions.
26 changes: 26 additions & 0 deletions api/handler/user.go
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,28 @@ func getUser(service user.UseCase) http.Handler {
})
}

func deleteUser(service user.UseCase) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
errorMessage := "Error removing user"
vars := mux.Vars(r)
id, err := entity.StringToID(vars["id"])

if err != nil {
w.WriteHeader(http.StatusInternalServerError)
w.Write([]byte(errorMessage))
return
}

err = service.DeleteUser(id)

if err != nil {
w.WriteHeader(http.StatusInternalServerError)
w.Write([]byte(errorMessage))
return
}
})
}

//MakeUserHandlers make url handlers
func MakeUserHandlers(r *mux.Router, n negroni.Negroni, service user.UseCase) {
r.Handle("/v1/user", n.With(
Expand All @@ -108,4 +130,8 @@ func MakeUserHandlers(r *mux.Router, n negroni.Negroni, service user.UseCase) {
r.Handle("/v1/user/{id}", n.With(
negroni.Wrap(getUser(service)),
)).Methods("GET", "OPTIONS")

r.Handle("/v1/user/{id}", n.With(
negroni.Wrap(deleteUser(service)),
)).Methods("DELETE", "OPTIONS")
}
19 changes: 19 additions & 0 deletions infrastructure/repository/user_postgres.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,3 +67,22 @@ func getUser(id entity.ID, db *sql.DB) (*entity.User, error) {

return &user, nil
}

//Delete an user
func (r *UserPostgres) Delete(id entity.ID) error {
stmt, err := r.db.Prepare(`DELETE FROM users WHERE id = $1`)

if err != nil {
return err
}

defer stmt.Close()

_, err = stmt.Exec(id)

if err != nil {
return err
}

return nil
}
22 changes: 22 additions & 0 deletions usecase/user/delete_user.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package user

import (
"errors"

"github.com/praiakov/godin/entity"
)

//DeleteUser Delete an user
func (s *Service) DeleteUser(id entity.ID) error {
u, err := s.GetUser(id)

if u == nil {
return errors.New("Not found")
}

if err != nil {
return err
}

return s.repo.Delete(id)
}
2 changes: 2 additions & 0 deletions usecase/user/interface.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
//Writer user writer
type Writer interface {
Create(e *entity.User) (entity.ID, error)
Delete(id entity.ID) error
}

//Reader interface
Expand All @@ -24,4 +25,5 @@ type Repository interface {
type UseCase interface {
CreateUser(name, email string, totalMonth int) (entity.ID, error)
GetUser(id entity.ID) (*entity.User, error)
DeleteUser(id entity.ID) error
}

0 comments on commit 7c8a34d

Please sign in to comment.