diff --git a/internal/api/http/handlers/target/target.go b/internal/api/http/handlers/target/target.go index a788a4d..5df7d95 100644 --- a/internal/api/http/handlers/target/target.go +++ b/internal/api/http/handlers/target/target.go @@ -13,6 +13,9 @@ func CreateTarget(targetService model.TargetService, authClient model.AuthClient Amount model.DonatAmount `json:"amount"` Text string `json:"text"` } + type Response struct { + TargetID model.TargetID `json:"targetID"` + } return func(request echo.Context) error { ctx := context.Background() var body CreateTargetBody @@ -31,12 +34,12 @@ func CreateTarget(targetService model.TargetService, authClient model.AuthClient return request.JSON(http.StatusInternalServerError, err.Error()) } - err = targetService.CreateTarget(ctx, model.StreamerID(authData.StreamerID), body.Amount, body.Text) + targetID, err := targetService.CreateTarget(ctx, model.StreamerID(authData.StreamerID), body.Amount, body.Text) if err != nil { slog.Error(err.Error()) return request.JSON(http.StatusInternalServerError, err.Error()) } - return request.String(http.StatusOK, "Created target successfully") + return request.JSON(http.StatusOK, Response{TargetID: targetID}) } } diff --git a/internal/model/interfaces.go b/internal/model/interfaces.go index 9bba5fc..15ca825 100644 --- a/internal/model/interfaces.go +++ b/internal/model/interfaces.go @@ -52,13 +52,13 @@ type DonatRepo interface { } type TargetService interface { - CreateTarget(ctx context.Context, streamerID StreamerID, amount DonatAmount, text string) error + CreateTarget(ctx context.Context, streamerID StreamerID, amount DonatAmount, text string) (TargetID, error) GetAllTarget(ctx context.Context, streamerID StreamerID) ([]*Target, error) AddAmountToTarget(ctx context.Context, targetID TargetID, amount DonatAmount) error } type TargetRepo interface { - CreateTarget(ctx context.Context, streamerID StreamerID, amount DonatAmount, text string) error + CreateTarget(ctx context.Context, streamerID StreamerID, amount DonatAmount, text string) (TargetID, error) GetAllTarget(ctx context.Context, streamerID StreamerID) ([]*Target, error) AddAmountToTarget(ctx context.Context, targetID TargetID, amount DonatAmount) error } diff --git a/internal/repository/target/target.go b/internal/repository/target/target.go index c0efd5c..d8701f3 100644 --- a/internal/repository/target/target.go +++ b/internal/repository/target/target.go @@ -24,19 +24,19 @@ func (targetRepo *RepoTarget) CreateTarget( streamerID model.StreamerID, amount model.DonatAmount, text string, -) error { +) (model.TargetID, error) { args := pgx.NamedArgs{ "streamer_id": streamerID, "amount": amount, "text": text, } - _, err := targetRepo.db.Insert(ctx, sql.CreateTarget, args) + targetID, err := targetRepo.db.Insert(ctx, sql.CreateTarget, args) if err != nil { slog.Error(err.Error()) - return err + return 0, err } - return nil + return model.TargetID(targetID), nil } func (targetRepo *RepoTarget) GetAllTarget( diff --git a/internal/service/target/target.go b/internal/service/target/target.go index f3b7aca..560c702 100644 --- a/internal/service/target/target.go +++ b/internal/service/target/target.go @@ -23,13 +23,13 @@ func (targetService *ServiceTarget) CreateTarget( streamerID model.StreamerID, amount model.DonatAmount, text string, -) error { - err := targetService.targetRepo.CreateTarget(ctx, streamerID, amount, text) +) (model.TargetID, error) { + targetID, err := targetService.targetRepo.CreateTarget(ctx, streamerID, amount, text) if err != nil { slog.Error(err.Error()) - return err + return 0, err } - return nil + return targetID, nil } func (targetService *ServiceTarget) GetAllTarget(