Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
2da6c26
feat: add repository
task4233 Mar 26, 2021
463b581
feat: infraのテストを追加
task4233 Mar 26, 2021
83088aa
feat: usecaseを追加
task4233 Mar 26, 2021
a401727
fix: infraの修正
task4233 Mar 26, 2021
61d389d
feat: controllerの実装追加
task4233 Mar 26, 2021
8d9c3d2
feat: main.goにハンドラを追加
task4233 Mar 26, 2021
c3cf537
feat(main.go): DELETE /api/v1/post/{postID}のルーティング追加
hiroyaonoe Mar 26, 2021
a1b4eec
feat(controler/comment.go): Deleteを追加
hiroyaonoe Mar 26, 2021
b3e6cc0
feat(usecase/post.go): deleteを追加
hiroyaonoe Mar 26, 2021
c386339
feat(infra/post.go): DBからPostを削除する処理の追加
hiroyaonoe Mar 26, 2021
3abff64
refactor(post delete): IDをentity.Postにまとめて渡すように修正
hiroyaonoe Mar 26, 2021
e1b90a5
refactor(post): deleteのテスト追加
hiroyaonoe Mar 26, 2021
7a5edb9
fix(migrations): FOREIGN KEYのON DELETEを追加
hiroyaonoe Mar 26, 2021
643582a
Update usecase/post.go typo
hiroyaonoe Mar 26, 2021
acb6ec3
fix: 必要ないbindを削除
task4233 Mar 26, 2021
f12363e
fix: bodyを受け取らないのでValidationを書ける必要がないため削除
task4233 Mar 26, 2021
0f31952
Merge branch 'main' of https://github.com/openhacku-saboten/OmnisCode…
task4233 Mar 26, 2021
b1165ec
fix: 必要ないバリデーションを削除
task4233 Mar 26, 2021
be2e7f4
fix: バリデーション削除に応じて必要ないテストを削除
task4233 Mar 26, 2021
d5bba34
feat: transaction.goを追加
task4233 Mar 27, 2021
f72b5f9
feat: トランザクションを管理する必要があるため、管理する構造を実装
task4233 Mar 29, 2021
b877b0d
feat: usecaseでDoInTxを利用する必要があるため、repositoryとmockを更新
task4233 Mar 29, 2021
8f9d51a
fix: DoInTxの返り値設計が誤っていたため、修正
task4233 Mar 29, 2021
1366d31
feat: firebase.Deleteをauthに追加
task4233 Mar 29, 2021
11a3c11
feat: transactionを意識したメソッドをusecase層に追加
task4233 Mar 29, 2021
091edda
fix: DoInTxに必要のない要素を持たせていたので削除
task4233 Mar 29, 2021
c64ee4f
remove: firebaseが関わっているのでcontrollerのdeleteをテストを削除
task4233 Mar 29, 2021
a9d6fb8
fix: golintに従って、エラーハンドリングしていなかった部分を修正
task4233 Mar 29, 2021
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
4 changes: 2 additions & 2 deletions controller/post_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ func TestPostController_GetAll(t *testing.T) {
`,
},
{
name: "1つも投稿が存在しないならErrUserNotFound",
name: "1つも投稿が存在しないならErrNewErrorNotFound",
prepareMockPost: func(ctx context.Context, post *mock.MockPost) {
post.EXPECT().GetAll(ctx).Return(nil, entity.NewErrorNotFound("post"))
},
Expand Down Expand Up @@ -134,7 +134,7 @@ func TestPostController_Get(t *testing.T) {
wantCode: http.StatusOK,
},
{
name: "存在しない投稿IDならErrUserNotFound",
name: "存在しない投稿IDならErrNewErrorNotFound",
postID: "0",
prepareMockPost: func(ctx context.Context, post *mock.MockPost) {
post.EXPECT().FindByID(ctx, 0).Return(&entity.Post{
Expand Down
31 changes: 31 additions & 0 deletions controller/user.go
Original file line number Diff line number Diff line change
Expand Up @@ -159,3 +159,34 @@ func (ctrl *UserController) Update(c echo.Context) error {

return c.NoContent(http.StatusOK)
}

// Delete は DELETE /user/{userID} のHandler
func (ctrl *UserController) Delete(c echo.Context) error {
logger := log.New()

userID, ok := c.Get("userID").(string)
if !ok {
logger.Errorf("Failed type assertion of userID: %#v", c.Get("userID"))
return echo.NewHTTPError(http.StatusInternalServerError)
}

if err := ctrl.uc.Delete(
c.Request().Context(),
entity.NewUser(userID, "", "", "", ""),
); err != nil {
errEmpty := &entity.ErrEmpty{}
if errors.As(err, errEmpty) {
return echo.NewHTTPError(http.StatusBadRequest, errEmpty.Error())
}
errNF := &entity.ErrNotFound{}
if errors.As(err, errNF) {
return echo.NewHTTPError(http.StatusNotFound, errNF.Error())
}
if errors.Is(err, entity.ErrIsNotAuthor) {
return echo.NewHTTPError(http.StatusForbidden, err.Error())
}
logger.Errorf("Unexpected error PUT/user: %s", err.Error())
return echo.NewHTTPError(http.StatusInternalServerError)
}
return c.NoContent(http.StatusOK)
}
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,6 @@ require (
google.golang.org/api v0.43.0
google.golang.org/genproto v0.0.0-20210324141432-3032e8ff099e // indirect
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
gopkg.in/gorp.v1 v1.7.2
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
)
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -647,6 +647,8 @@ gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
gopkg.in/gorp.v1 v1.7.2 h1:j3DWlAyGVv8whO7AcIWznQ2Yj7yJkn34B8s63GViAAw=
gopkg.in/gorp.v1 v1.7.2/go.mod h1:Wo3h+DBQZIxATwftsglhdD/62zRFPhGhTiu5jUJmCaw=
gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=
gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74=
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
Expand Down
9 changes: 9 additions & 0 deletions infra/auth.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"fmt"

"firebase.google.com/go/auth"
"github.com/openhacku-saboten/OmnisCode-backend/domain/entity"
)

// AuthRepository は認証情報の永続化と再構成のためのリポジトリです
Expand Down Expand Up @@ -36,3 +37,11 @@ func (a *AuthRepository) GetIconURL(ctx context.Context, uid string) (iconURL st
iconURL = user.PhotoURL
return
}

// Delete はuserIDからuserを削除します
func (a *AuthRepository) Delete(ctx context.Context, user *entity.User) error {
if err := a.firebase.DeleteUser(ctx, user.ID); err != nil {
return fmt.Errorf("failed firebase.DeleteUser: %w", err)
}
return nil
}
57 changes: 32 additions & 25 deletions infra/mock/mock_auth.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

112 changes: 49 additions & 63 deletions infra/mock/mock_comment.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading