Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

utils enhancement #7

Merged
merged 1 commit into from
Sep 26, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions internal/app/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,17 @@ import (
)

func (app *App) StartService() error {
version := app.Echo.Group("/api/v1/")

// define repository
repository := repository.NewRepository(app.DB, app.Log)

// define usecase
usecase := usecase.NewUseCase(repository, app.Log, app.DB)
usecase := usecase.NewUseCase(repository, app.DB, app.Log)

// define controllers
controller := handler.NewHandlers(usecase, app.Log)

version := app.Echo.Group("/api/v1/")

route.RouteUsers(version, controller)

return nil
Expand Down
12 changes: 1 addition & 11 deletions internal/users/delivery/http/handler/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,6 @@ func (h *handlers) CreateUser(c echo.Context) error {
return c.JSON(http.StatusBadRequest, dtos.NewResponseError(
http.StatusBadRequest,
dtos.MsgFailed,
dtos.Text(http.StatusBadRequest),
err.Error()),
)
}
Expand All @@ -64,7 +63,6 @@ func (h *handlers) CreateUser(c echo.Context) error {
return c.JSON(http.StatusBadRequest, dtos.NewResponseError(
http.StatusBadRequest,
dtos.MsgFailed,
dtos.Text(http.StatusBadRequest),
err.Error()),
)
}
Expand All @@ -79,7 +77,6 @@ func (h *handlers) CreateUser(c echo.Context) error {
return c.JSON(http.StatusInternalServerError, dtos.NewResponseError(
http.StatusInternalServerError,
dtos.MsgFailed,
dtos.Text(http.StatusInternalServerError),
err.Error()),
)
}
Expand All @@ -103,7 +100,6 @@ func (h *handlers) UpdateUser(c echo.Context) error {
return c.JSON(http.StatusBadRequest, dtos.NewResponseError(
http.StatusBadRequest,
dtos.MsgFailed,
dtos.Text(http.StatusBadRequest),
err.Error()),
)
}
Expand All @@ -114,7 +110,6 @@ func (h *handlers) UpdateUser(c echo.Context) error {
return c.JSON(http.StatusBadRequest, dtos.NewResponseError(
http.StatusBadRequest,
dtos.MsgFailed,
dtos.Text(http.StatusBadRequest),
err.Error()),
)
}
Expand All @@ -125,15 +120,14 @@ func (h *handlers) UpdateUser(c echo.Context) error {
return c.JSON(http.StatusBadRequest, dtos.NewResponseError(
http.StatusBadRequest,
dtos.MsgFailed,
dtos.Text(http.StatusBadRequest),
err.Error()),
)
}

argsUpdateUser := entities.UpdateUsers{
UserID: userID,
Fullname: payload.Fullname,
PhoneNumber: payload.Fullname,
PhoneNumber: payload.PhoneNumber,
UserType: payload.UserType,
}

Expand All @@ -142,7 +136,6 @@ func (h *handlers) UpdateUser(c echo.Context) error {
return c.JSON(http.StatusBadRequest, dtos.NewResponseError(
http.StatusInternalServerError,
dtos.MsgFailed,
dtos.Text(http.StatusInternalServerError),
err.Error()),
)
}
Expand All @@ -164,7 +157,6 @@ func (h *handlers) UpdateUserStatus(c echo.Context) error {
return c.JSON(http.StatusBadRequest, dtos.NewResponseError(
http.StatusBadRequest,
dtos.MsgFailed,
dtos.Text(http.StatusBadRequest),
err.Error()),
)
}
Expand All @@ -178,7 +170,6 @@ func (h *handlers) UpdateUserStatus(c echo.Context) error {
return c.JSON(http.StatusBadRequest, dtos.NewResponseError(
http.StatusBadRequest,
dtos.MsgFailed,
dtos.Text(http.StatusBadRequest),
ErrInvalidIsActive.Error()),
)
}
Expand All @@ -193,7 +184,6 @@ func (h *handlers) UpdateUserStatus(c echo.Context) error {
return c.JSON(http.StatusBadRequest, dtos.NewResponseError(
http.StatusInternalServerError,
dtos.MsgFailed,
dtos.Text(http.StatusInternalServerError),
err.Error()),
)
}
Expand Down
16 changes: 2 additions & 14 deletions internal/users/dtos/response.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package dtos

import (
"errors"
"net/http"
)

Expand Down Expand Up @@ -31,17 +30,6 @@ var (
MsgFailed = map[string]string{"en": "Failed", "id": "Gagal"}
)

func UnwrapFirstError(err error) string { return UnwrapAll(err).Error() }

// UnwrapAll will unwrap the underlying error until we get the first wrapped error.
func UnwrapAll(err error) error {
for err != nil && errors.Unwrap(err) != nil {
err = errors.Unwrap(err)
}

return err
}

func NewResponse(statusCode int, message Message, data interface{}) Response {
return Response{
Status: statusCode,
Expand All @@ -50,13 +38,13 @@ func NewResponse(statusCode int, message Message, data interface{}) Response {
}
}

func NewResponseError(statusCode int, messageStatus Message, message, details string) Response {
func NewResponseError(statusCode int, messageStatus Message, details string) Response {
return Response{
Status: statusCode,
Message: messageStatus,
Errors: []CaptureError{
{
Message: message,
Message: Text(statusCode),
Details: details,
},
},
Expand Down
2 changes: 1 addition & 1 deletion internal/users/entities/update_users.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ func NewUpdateUsers(data UpdateUsers) UpdateUsers {
UserID: data.UserID,
Fullname: data.Fullname,
PhoneNumber: data.PhoneNumber,
UserType: UserTypeRegular,
UserType: data.UserType,
UpdatedAt: time.Now(),
UpdatedBy: "martin",
}
Expand Down
27 changes: 7 additions & 20 deletions internal/users/repository/repository.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,12 @@ package repository

import (
"context"
"errors"

"github.com/DoWithLogic/golang-clean-architecture/internal/users/entities"
"github.com/DoWithLogic/golang-clean-architecture/internal/users/repository/repository_query"
"github.com/DoWithLogic/golang-clean-architecture/pkg/custom"
"github.com/DoWithLogic/golang-clean-architecture/pkg/database"
"github.com/DoWithLogic/golang-clean-architecture/pkg/otel/zerolog"
"github.com/DoWithLogic/golang-clean-architecture/pkg/utils"
)

type (
Expand All @@ -25,16 +24,12 @@ type (
}
)

var (
ErrUserNotFound = errors.New("user not found")
)

func NewRepository(conn database.SQLTxConn, log *zerolog.Logger) Repository {
return &repository{conn, log}
}

func (repo *repository) SaveNewUser(ctx context.Context, user entities.CreateUser) (int64, error) {
args := custom.Array{
args := utils.Array{
user.FUllName,
user.PhoneNumber,
user.IsActive,
Expand All @@ -55,7 +50,7 @@ func (repo *repository) SaveNewUser(ctx context.Context, user entities.CreateUse
}

func (repo *repository) UpdateUserByID(ctx context.Context, user entities.UpdateUsers) error {
args := custom.Array{
args := utils.Array{
user.Fullname, user.Fullname,
user.PhoneNumber, user.PhoneNumber,
user.UserType, user.UserType,
Expand All @@ -79,12 +74,12 @@ func (repo *repository) GetUserByID(ctx context.Context, userID int64, lockOpt e
return userData, err
}

args := custom.Array{
args := utils.Array{
userID,
}

row := func(idx int) custom.Array {
return custom.Array{
row := func(idx int) utils.Array {
return utils.Array{
&userData.UserID,
&userData.Fullname,
&userData.PhoneNumber,
Expand All @@ -107,15 +102,11 @@ func (repo *repository) GetUserByID(ctx context.Context, userID int64, lockOpt e
return userData, err
}

if userData.UserID != userID {
return userData, ErrUserNotFound
}

return userData, err
}

func (repo *repository) UpdateUserStatusByID(ctx context.Context, req entities.UpdateUserStatus) error {
args := custom.Array{
args := utils.Array{
req.IsActive,
req.UpdatedAt,
req.UpdatedBy,
Expand All @@ -130,9 +121,5 @@ func (repo *repository) UpdateUserStatusByID(ctx context.Context, req entities.U
return err
}

if updatedID != req.UserID {
return errors.New("user not found")
}

return nil
}
8 changes: 4 additions & 4 deletions internal/users/usecase/usecase.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,13 @@ type (

usecase struct {
repo repository.Repository
log *zerolog.Logger
dbTx *sqlx.DB
log *zerolog.Logger
}
)

func NewUseCase(repo repository.Repository, log *zerolog.Logger, txConn *sqlx.DB) Usecase {
return &usecase{repo, log, txConn}
func NewUseCase(repo repository.Repository, txConn *sqlx.DB, log *zerolog.Logger) Usecase {
return &usecase{repo, txConn, log}
}

func (uc *usecase) CreateUser(ctx context.Context, payload entities.CreateUser) (int64, error) {
Expand All @@ -48,7 +48,7 @@ func (uc *usecase) UpdateUser(ctx context.Context, updateData entities.UpdateUse

defer func() {
if err := new(database.SQL).EndTx(txConn, err); err != nil {
uc.log.Z().Err(err).Msg("[usecase]UpdateUser.EndTx")
return
}
}()

Expand Down
Loading