From 6e71f5537e9a0a1b5b481b3a2b92b23538727659 Mon Sep 17 00:00:00 2001 From: saka-naname Date: Sat, 29 Jun 2024 22:14:55 +0900 Subject: [PATCH] [add] delete budget --- document/bundle-develop.gen.yml | 34 ++++ document/bundle.gen.yml | 34 ++++ .../paths/budget_budget_id_status_approve.yml | 17 ++ .../paths/budget_budget_id_status_pending.yml | 17 ++ pkg/api/server.gen.go | 44 +++++ .../server/delete_budget_id_status_approve.go | 28 +++ .../server/delete_budget_id_status_pending.go | 28 +++ pkg/api/spec.gen.go | 166 +++++++++--------- .../delete_budget_budget_id_status_approve.go | 44 +++++ .../delete_budget_budget_id_status_pending.go | 44 +++++ pkg/db/sql/budget/delete_budget.sql | 1 + 11 files changed, 374 insertions(+), 83 deletions(-) create mode 100644 pkg/api/server/delete_budget_id_status_approve.go create mode 100644 pkg/api/server/delete_budget_id_status_pending.go create mode 100644 pkg/budget/delete_budget_budget_id_status_approve.go create mode 100644 pkg/budget/delete_budget_budget_id_status_pending.go create mode 100644 pkg/db/sql/budget/delete_budget.sql diff --git a/document/bundle-develop.gen.yml b/document/bundle-develop.gen.yml index f16cb43..b13b4a7 100644 --- a/document/bundle-develop.gen.yml +++ b/document/bundle-develop.gen.yml @@ -1253,6 +1253,23 @@ paths: $ref: '#/components/responses/Unauthorized' '500': $ref: '#/components/responses/InternalServer' + delete: + tags: + - budget + description: Delete budget(status pending) + security: + - BearerAuth: [] + parameters: + - name: budgetId + in: path + required: true + schema: + type: string + responses: + '200': + $ref: '#/components/responses/BlankSuccess' + '500': + $ref: '#/components/responses/InternalServer' '/budget/{budgetId}/status_approve': put: tags: @@ -1286,6 +1303,23 @@ paths: $ref: '#/components/responses/Unauthorized' '500': $ref: '#/components/responses/InternalServer' + delete: + tags: + - budget + description: Delete budget(status approve) + security: + - BearerAuth: [] + parameters: + - name: budgetId + in: path + required: true + schema: + type: string + responses: + '200': + $ref: '#/components/responses/BlankSuccess' + '500': + $ref: '#/components/responses/InternalServer' '/budget/{budgetId}/status_bought': put: tags: diff --git a/document/bundle.gen.yml b/document/bundle.gen.yml index ea4ae49..170a224 100644 --- a/document/bundle.gen.yml +++ b/document/bundle.gen.yml @@ -1245,6 +1245,23 @@ paths: $ref: '#/components/responses/Unauthorized' '500': $ref: '#/components/responses/InternalServer' + delete: + tags: + - budget + description: Delete budget(status pending) + security: + - BearerAuth: [] + parameters: + - name: budgetId + in: path + required: true + schema: + type: string + responses: + '200': + $ref: '#/components/responses/BlankSuccess' + '500': + $ref: '#/components/responses/InternalServer' '/budget/{budgetId}/status_approve': put: tags: @@ -1278,6 +1295,23 @@ paths: $ref: '#/components/responses/Unauthorized' '500': $ref: '#/components/responses/InternalServer' + delete: + tags: + - budget + description: Delete budget(status approve) + security: + - BearerAuth: [] + parameters: + - name: budgetId + in: path + required: true + schema: + type: string + responses: + '200': + $ref: '#/components/responses/BlankSuccess' + '500': + $ref: '#/components/responses/InternalServer' '/budget/{budgetId}/status_bought': put: tags: diff --git a/document/paths/budget_budget_id_status_approve.yml b/document/paths/budget_budget_id_status_approve.yml index 38ddd20..60a6afe 100644 --- a/document/paths/budget_budget_id_status_approve.yml +++ b/document/paths/budget_budget_id_status_approve.yml @@ -30,3 +30,20 @@ put: $ref: "../responses/unauthorized.yml" 500: $ref: "../responses/internal_server.yml" +delete: + tags: + - budget + description: "Delete budget(status approve)" + security: + - BearerAuth: [] + parameters: + - name: budgetId + in: path + required: true + schema: + type: string + responses: + 200: + $ref: "../responses/blank_success.yml" + 500: + $ref: "../responses/internal_server.yml" diff --git a/document/paths/budget_budget_id_status_pending.yml b/document/paths/budget_budget_id_status_pending.yml index c4ecc27..138ce4b 100644 --- a/document/paths/budget_budget_id_status_pending.yml +++ b/document/paths/budget_budget_id_status_pending.yml @@ -30,3 +30,20 @@ put: $ref: "../responses/unauthorized.yml" 500: $ref: "../responses/internal_server.yml" +delete: + tags: + - budget + description: "Delete budget(status pending)" + security: + - BearerAuth: [] + parameters: + - name: budgetId + in: path + required: true + schema: + type: string + responses: + 200: + $ref: "../responses/blank_success.yml" + 500: + $ref: "../responses/internal_server.yml" diff --git a/pkg/api/server.gen.go b/pkg/api/server.gen.go index 3ede42a..640a53a 100644 --- a/pkg/api/server.gen.go +++ b/pkg/api/server.gen.go @@ -26,6 +26,9 @@ type ServerInterface interface { // (PUT /budget/{budgetId}/admin) PutBudgetBudgetIdAdmin(ctx echo.Context, budgetId string) error + // (DELETE /budget/{budgetId}/status_approve) + DeleteBudgetBudgetIdStatusApprove(ctx echo.Context, budgetId string) error + // (PUT /budget/{budgetId}/status_approve) PutBudgetBudgetIdStatusApprove(ctx echo.Context, budgetId string) error @@ -35,6 +38,9 @@ type ServerInterface interface { // (PUT /budget/{budgetId}/status_paid) PutBudgetBudgetIdStatusPaid(ctx echo.Context, budgetId string) error + // (DELETE /budget/{budgetId}/status_pending) + DeleteBudgetBudgetIdStatusPending(ctx echo.Context, budgetId string) error + // (PUT /budget/{budgetId}/status_pending) PutBudgetBudgetIdStatusPending(ctx echo.Context, budgetId string) error @@ -259,6 +265,24 @@ func (w *ServerInterfaceWrapper) PutBudgetBudgetIdAdmin(ctx echo.Context) error return err } +// DeleteBudgetBudgetIdStatusApprove converts echo context to params. +func (w *ServerInterfaceWrapper) DeleteBudgetBudgetIdStatusApprove(ctx echo.Context) error { + var err error + // ------------- Path parameter "budgetId" ------------- + var budgetId string + + err = runtime.BindStyledParameterWithLocation("simple", false, "budgetId", runtime.ParamLocationPath, ctx.Param("budgetId"), &budgetId) + if err != nil { + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter budgetId: %s", err)) + } + + ctx.Set(BearerAuthScopes, []string{""}) + + // Invoke the callback with all the unmarshalled arguments + err = w.Handler.DeleteBudgetBudgetIdStatusApprove(ctx, budgetId) + return err +} + // PutBudgetBudgetIdStatusApprove converts echo context to params. func (w *ServerInterfaceWrapper) PutBudgetBudgetIdStatusApprove(ctx echo.Context) error { var err error @@ -313,6 +337,24 @@ func (w *ServerInterfaceWrapper) PutBudgetBudgetIdStatusPaid(ctx echo.Context) e return err } +// DeleteBudgetBudgetIdStatusPending converts echo context to params. +func (w *ServerInterfaceWrapper) DeleteBudgetBudgetIdStatusPending(ctx echo.Context) error { + var err error + // ------------- Path parameter "budgetId" ------------- + var budgetId string + + err = runtime.BindStyledParameterWithLocation("simple", false, "budgetId", runtime.ParamLocationPath, ctx.Param("budgetId"), &budgetId) + if err != nil { + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter budgetId: %s", err)) + } + + ctx.Set(BearerAuthScopes, []string{""}) + + // Invoke the callback with all the unmarshalled arguments + err = w.Handler.DeleteBudgetBudgetIdStatusPending(ctx, budgetId) + return err +} + // PutBudgetBudgetIdStatusPending converts echo context to params. func (w *ServerInterfaceWrapper) PutBudgetBudgetIdStatusPending(ctx echo.Context) error { var err error @@ -1082,9 +1124,11 @@ func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL router.POST(baseURL+"/budget", wrapper.PostBudget) router.GET(baseURL+"/budget/:budgetId", wrapper.GetBudgetBudgetId) router.PUT(baseURL+"/budget/:budgetId/admin", wrapper.PutBudgetBudgetIdAdmin) + router.DELETE(baseURL+"/budget/:budgetId/status_approve", wrapper.DeleteBudgetBudgetIdStatusApprove) router.PUT(baseURL+"/budget/:budgetId/status_approve", wrapper.PutBudgetBudgetIdStatusApprove) router.PUT(baseURL+"/budget/:budgetId/status_bought", wrapper.PutBudgetBudgetIdStatusBought) router.PUT(baseURL+"/budget/:budgetId/status_paid", wrapper.PutBudgetBudgetIdStatusPaid) + router.DELETE(baseURL+"/budget/:budgetId/status_pending", wrapper.DeleteBudgetBudgetIdStatusPending) router.PUT(baseURL+"/budget/:budgetId/status_pending", wrapper.PutBudgetBudgetIdStatusPending) router.GET(baseURL+"/event", wrapper.GetEvent) router.GET(baseURL+"/event/:eventId", wrapper.GetEventEventId) diff --git a/pkg/api/server/delete_budget_id_status_approve.go b/pkg/api/server/delete_budget_id_status_approve.go new file mode 100644 index 0000000..3d6eb84 --- /dev/null +++ b/pkg/api/server/delete_budget_id_status_approve.go @@ -0,0 +1,28 @@ +package server + +import ( + "github.com/SIT-DigiCre/digicore_v3_backend/pkg/api/response" + "github.com/SIT-DigiCre/digicore_v3_backend/pkg/budget" + "github.com/SIT-DigiCre/digicore_v3_backend/pkg/db" + "github.com/labstack/echo/v4" +) + +func (s *server) DeleteBudgetBudgetIdStatusApprove(ctx echo.Context, budgetId string) error { + dbTranisactionClient, err := db.OpenTransaction() + if err != nil { + return response.ErrorResponse(ctx, err) + } + defer dbTranisactionClient.Rollback() + + res, err := budget.DeleteBudgetBudgetIdStatusApprove(ctx, &dbTranisactionClient, budgetId) + if err != nil { + return response.ErrorResponse(ctx, err) + } + + err = dbTranisactionClient.Commit() + if err != nil { + return response.ErrorResponse(ctx, err) + } + + return response.SuccessResponse(ctx, res) +} diff --git a/pkg/api/server/delete_budget_id_status_pending.go b/pkg/api/server/delete_budget_id_status_pending.go new file mode 100644 index 0000000..82ccf60 --- /dev/null +++ b/pkg/api/server/delete_budget_id_status_pending.go @@ -0,0 +1,28 @@ +package server + +import ( + "github.com/SIT-DigiCre/digicore_v3_backend/pkg/api/response" + "github.com/SIT-DigiCre/digicore_v3_backend/pkg/budget" + "github.com/SIT-DigiCre/digicore_v3_backend/pkg/db" + "github.com/labstack/echo/v4" +) + +func (s *server) DeleteBudgetBudgetIdStatusPending(ctx echo.Context, budgetId string) error { + dbTranisactionClient, err := db.OpenTransaction() + if err != nil { + return response.ErrorResponse(ctx, err) + } + defer dbTranisactionClient.Rollback() + + res, err := budget.DeleteBudgetBudgetIdStatusPending(ctx, &dbTranisactionClient, budgetId) + if err != nil { + return response.ErrorResponse(ctx, err) + } + + err = dbTranisactionClient.Commit() + if err != nil { + return response.ErrorResponse(ctx, err) + } + + return response.SuccessResponse(ctx, res) +} diff --git a/pkg/api/spec.gen.go b/pkg/api/spec.gen.go index 547e9fa..a725dd4 100644 --- a/pkg/api/spec.gen.go +++ b/pkg/api/spec.gen.go @@ -19,90 +19,90 @@ import ( var swaggerSpec = []string{ "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", - "x9awygAA", + "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", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/pkg/budget/delete_budget_budget_id_status_approve.go b/pkg/budget/delete_budget_budget_id_status_approve.go new file mode 100644 index 0000000..6430fde --- /dev/null +++ b/pkg/budget/delete_budget_budget_id_status_approve.go @@ -0,0 +1,44 @@ +package budget + +import ( + "net/http" + + "github.com/SIT-DigiCre/digicore_v3_backend/pkg/api" + "github.com/SIT-DigiCre/digicore_v3_backend/pkg/api/response" + "github.com/SIT-DigiCre/digicore_v3_backend/pkg/db" + "github.com/SIT-DigiCre/digicore_v3_backend/pkg/utils" + "github.com/labstack/echo/v4" +) + +func DeleteBudgetBudgetIdStatusApprove(ctx echo.Context, dbClient db.TransactionClient, budgetId string) (api.BlankSuccess, *response.Error) { + userId := ctx.Get("user_id").(string) + now_detail, err := GetBudgetBudgetId(ctx, dbClient, budgetId) + if err != nil { + return api.BlankSuccess{}, err + } + ownerUserIds := []string{now_detail.Proposer.UserId} + if !utils.CheckUserId(ownerUserIds, userId) { + return api.BlankSuccess{}, &response.Error{Code: http.StatusInternalServerError, Level: "Error", Message: "編集権限がありません", Log: "Permission error"} + } + if now_detail.Status != "approve" { + return api.BlankSuccess{}, &response.Error{Code: http.StatusInternalServerError, Level: "Error", Message: "ステータスが一致しません", Log: "Unacceptable change"} + } + err = deleteApproveBudget(dbClient, budgetId) + if err != nil { + return api.BlankSuccess{}, err + } + return api.BlankSuccess{Success: true}, nil +} + +func deleteApproveBudget(dbClient db.TransactionClient, budgetId string) *response.Error { + params := struct { + BudgetId string `twowaysql:"budgetId"` + }{ + BudgetId: budgetId, + } + _, rerr := dbClient.Exec("sql/budget/delete_budget.sql", ¶ms, true) + if rerr != nil { + return &response.Error{Code: http.StatusInternalServerError, Level: "Info", Message: "DBエラーが発生しました", Log: rerr.Error()} + } + return nil +} diff --git a/pkg/budget/delete_budget_budget_id_status_pending.go b/pkg/budget/delete_budget_budget_id_status_pending.go new file mode 100644 index 0000000..db5d17e --- /dev/null +++ b/pkg/budget/delete_budget_budget_id_status_pending.go @@ -0,0 +1,44 @@ +package budget + +import ( + "net/http" + + "github.com/SIT-DigiCre/digicore_v3_backend/pkg/api" + "github.com/SIT-DigiCre/digicore_v3_backend/pkg/api/response" + "github.com/SIT-DigiCre/digicore_v3_backend/pkg/db" + "github.com/SIT-DigiCre/digicore_v3_backend/pkg/utils" + "github.com/labstack/echo/v4" +) + +func DeleteBudgetBudgetIdStatusPending(ctx echo.Context, dbClient db.TransactionClient, budgetId string) (api.BlankSuccess, *response.Error) { + userId := ctx.Get("user_id").(string) + now_detail, err := GetBudgetBudgetId(ctx, dbClient, budgetId) + if err != nil { + return api.BlankSuccess{}, err + } + ownerUserIds := []string{now_detail.Proposer.UserId} + if !utils.CheckUserId(ownerUserIds, userId) { + return api.BlankSuccess{}, &response.Error{Code: http.StatusInternalServerError, Level: "Error", Message: "編集権限がありません", Log: "Permission error"} + } + if now_detail.Status != "pending" { + return api.BlankSuccess{}, &response.Error{Code: http.StatusInternalServerError, Level: "Error", Message: "ステータスが一致しません", Log: "Unacceptable change"} + } + err = deleteBudget(dbClient, budgetId) + if err != nil { + return api.BlankSuccess{}, err + } + return api.BlankSuccess{Success: true}, nil +} + +func deleteBudget(dbClient db.TransactionClient, budgetId string) *response.Error { + params := struct { + BudgetId string `twowaysql:"budgetId"` + }{ + BudgetId: budgetId, + } + _, rerr := dbClient.Exec("sql/budget/delete_budget.sql", ¶ms, true) + if rerr != nil { + return &response.Error{Code: http.StatusInternalServerError, Level: "Info", Message: "DBエラーが発生しました", Log: rerr.Error()} + } + return nil +} diff --git a/pkg/db/sql/budget/delete_budget.sql b/pkg/db/sql/budget/delete_budget.sql new file mode 100644 index 0000000..4b1220e --- /dev/null +++ b/pkg/db/sql/budget/delete_budget.sql @@ -0,0 +1 @@ +DELETE FROM budgets WHERE id = UUID_TO_BIN(/*budgetId*/'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee');