From 5d2e38b81a2dced77d85e60c534b4e97984a22c6 Mon Sep 17 00:00:00 2001 From: Takumaron Date: Mon, 20 Apr 2020 13:38:27 +0900 Subject: [PATCH 01/15] =?UTF-8?q?gin.Context=E3=82=92=E5=BC=95=E3=81=8D?= =?UTF-8?q?=E5=9B=9E=E3=81=95=E3=81=9A=E3=81=ABcontext=E3=83=91=E3=83=83?= =?UTF-8?q?=E3=82=B1=E3=83=BC=E3=82=B8=E3=82=92=E5=88=A9=E7=94=A8=E3=81=99?= =?UTF-8?q?=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E4=BF=AE=E6=AD=A3=E3=81=97?= =?UTF-8?q?=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/api/handler/board/server.go | 4 +-- pkg/api/handler/user/server.go | 4 +-- pkg/api/usecase/board/interactor.go | 27 +++++++++---------- .../board/mock_board/mock_interactor.go | 10 +++---- pkg/api/usecase/user/interactor.go | 21 +++++++-------- .../usecase/user/mock_user/mock_interactor.go | 8 +++--- .../board/mock_board/mock_repository.go | 13 ++++----- pkg/domain/repository/board/repository.go | 11 ++++---- pkg/domain/repository/master_tx_manager.go | 4 +-- .../repository/mock_master_tx_manager.go | 6 ++--- .../user/mock_user/mock_repository.go | 13 ++++----- pkg/domain/repository/user/repository.go | 11 ++++---- .../service/board/mock_board/mock_service.go | 10 +++---- pkg/domain/service/board/service.go | 19 +++++++------ .../service/user/mock_user/mock_service.go | 10 +++---- pkg/domain/service/user/service.go | 19 +++++++------ pkg/infrastructure/mysql/board/repository.go | 10 +++---- pkg/infrastructure/mysql/mysql_tx_manager.go | 4 +-- pkg/infrastructure/mysql/user/repository.go | 10 +++---- 19 files changed, 104 insertions(+), 110 deletions(-) diff --git a/pkg/api/handler/board/server.go b/pkg/api/handler/board/server.go index af16a86..4d9c197 100644 --- a/pkg/api/handler/board/server.go +++ b/pkg/api/handler/board/server.go @@ -28,7 +28,7 @@ func (s *Server) CreateNewBoard(ctx *gin.Context) { uid, ok := ctx.Get(middleware.AuthCtxKey) if !ok { - ctx.Error(errors.New("access token is not found in context")) + ctx.Error(errors.New("uid is not found in context")) } if err := s.boardInteractor.CreateNewBoard(ctx, uid.(string), reqBody.Title, reqBody.Description); err != nil { @@ -56,7 +56,7 @@ func (s *Server) GetBoardDetail(ctx *gin.Context) { func (s *Server) GetUserBoards(ctx *gin.Context) { uid, ok := ctx.Get(middleware.AuthCtxKey) if !ok { - ctx.Error(errors.New("access token is not found in context")) + ctx.Error(errors.New("uid is not found in context")) } boards, err := s.boardInteractor.GetUserBoards(ctx, uid.(string)) diff --git a/pkg/api/handler/user/server.go b/pkg/api/handler/user/server.go index e01392e..0bc07b4 100644 --- a/pkg/api/handler/user/server.go +++ b/pkg/api/handler/user/server.go @@ -27,7 +27,7 @@ func (s *Server) CreateNewUser(ctx *gin.Context) { uid, ok := ctx.Get(middleware.AuthCtxKey) if !ok { - ctx.Error(errors.New("access token is not found in context")) + ctx.Error(errors.New("uid is not found in context")) } if err := s.userInteractor.CreateNewUser(ctx, uid.(string), reqBody.Name, reqBody.Thumbnail); err != nil { @@ -40,7 +40,7 @@ func (s *Server) CreateNewUser(ctx *gin.Context) { func (s *Server) GetUserProfile(ctx *gin.Context) { uid, ok := ctx.Get(middleware.AuthCtxKey) if !ok { - ctx.Error(errors.New("access token is not found in context")) + ctx.Error(errors.New("uid is not found in context")) } user, err := s.userInteractor.GetUserProfile(ctx, uid.(string)) diff --git a/pkg/api/usecase/board/interactor.go b/pkg/api/usecase/board/interactor.go index 3d39825..d1cc6eb 100644 --- a/pkg/api/usecase/board/interactor.go +++ b/pkg/api/usecase/board/interactor.go @@ -1,19 +1,18 @@ package board import ( + "context" "todone/pkg/domain/entity" "todone/pkg/domain/repository" boardservice "todone/pkg/domain/service/board" userservice "todone/pkg/domain/service/user" - - "github.com/gin-gonic/gin" ) type Interactor interface { - CreateNewBoard(ctx *gin.Context, uid string, title, description string) error - GetBoardDetail(ctx *gin.Context, id int) (*entity.Board, error) - GetUserBoards(ctx *gin.Context, uid string) (entity.BoardSlice, error) - GetAll(ctx *gin.Context) (entity.BoardSlice, error) + CreateNewBoard(ctx context.Context, uid string, title, description string) error + GetBoardDetail(ctx context.Context, id int) (*entity.Board, error) + GetUserBoards(ctx context.Context, uid string) (entity.BoardSlice, error) + GetAll(ctx context.Context) (entity.BoardSlice, error) } type intereractor struct { @@ -30,8 +29,8 @@ func New(masterTxManager repository.MasterTxManager, boardService boardservice.S } } -func (i *intereractor) CreateNewBoard(ctx *gin.Context, uid string, title, description string) error { - err := i.masterTxManager.Transaction(ctx, func(ctx *gin.Context, masterTx repository.MasterTx) error { +func (i *intereractor) CreateNewBoard(ctx context.Context, uid string, title, description string) error { + err := i.masterTxManager.Transaction(ctx, func(ctx context.Context, masterTx repository.MasterTx) error { // ログイン済ユーザのID取得 userData, err := i.userService.GetByUID(ctx, masterTx, uid) if err != nil { @@ -49,11 +48,11 @@ func (i *intereractor) CreateNewBoard(ctx *gin.Context, uid string, title, descr return nil } -func (i *intereractor) GetBoardDetail(ctx *gin.Context, id int) (*entity.Board, error) { +func (i *intereractor) GetBoardDetail(ctx context.Context, id int) (*entity.Board, error) { var boardData *entity.Board var err error - err = i.masterTxManager.Transaction(ctx, func(ctx *gin.Context, masterTx repository.MasterTx) error { + err = i.masterTxManager.Transaction(ctx, func(ctx context.Context, masterTx repository.MasterTx) error { // ボード詳細情報取得 boardData, err = i.boardService.GetByPK(ctx, masterTx, id) if err != nil { @@ -67,10 +66,10 @@ func (i *intereractor) GetBoardDetail(ctx *gin.Context, id int) (*entity.Board, return boardData, nil } -func (i *intereractor) GetUserBoards(ctx *gin.Context, uid string) (entity.BoardSlice, error) { +func (i *intereractor) GetUserBoards(ctx context.Context, uid string) (entity.BoardSlice, error) { var boardSlice entity.BoardSlice - err := i.masterTxManager.Transaction(ctx, func(ctx *gin.Context, masterTx repository.MasterTx) error { + err := i.masterTxManager.Transaction(ctx, func(ctx context.Context, masterTx repository.MasterTx) error { // ログイン済ユーザのID取得 userData, err := i.userService.GetByUID(ctx, masterTx, uid) if err != nil { @@ -89,11 +88,11 @@ func (i *intereractor) GetUserBoards(ctx *gin.Context, uid string) (entity.Board return boardSlice, nil } -func (i *intereractor) GetAll(ctx *gin.Context) (entity.BoardSlice, error) { +func (i *intereractor) GetAll(ctx context.Context) (entity.BoardSlice, error) { var boardSlice entity.BoardSlice var err error - err = i.masterTxManager.Transaction(ctx, func(ctx *gin.Context, masterTx repository.MasterTx) error { + err = i.masterTxManager.Transaction(ctx, func(ctx context.Context, masterTx repository.MasterTx) error { // (管理者用)ボード全件取得 boardSlice, err = i.boardService.GetAll(ctx, masterTx) if err != nil { diff --git a/pkg/api/usecase/board/mock_board/mock_interactor.go b/pkg/api/usecase/board/mock_board/mock_interactor.go index 6a4738e..f857e23 100644 --- a/pkg/api/usecase/board/mock_board/mock_interactor.go +++ b/pkg/api/usecase/board/mock_board/mock_interactor.go @@ -5,10 +5,10 @@ package mock_board import ( + "context" reflect "reflect" entity "todone/pkg/domain/entity" - gin "github.com/gin-gonic/gin" gomock "github.com/golang/mock/gomock" ) @@ -36,7 +36,7 @@ func (m *MockInteractor) EXPECT() *MockInteractorMockRecorder { } // CreateNewBoard mocks base method -func (m *MockInteractor) CreateNewBoard(ctx *gin.Context, uid, title, description string) error { +func (m *MockInteractor) CreateNewBoard(ctx context.Context, uid, title, description string) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "CreateNewBoard", ctx, uid, title, description) ret0, _ := ret[0].(error) @@ -50,7 +50,7 @@ func (mr *MockInteractorMockRecorder) CreateNewBoard(ctx, uid, title, descriptio } // GetBoardDetail mocks base method -func (m *MockInteractor) GetBoardDetail(ctx *gin.Context, id int) (*entity.Board, error) { +func (m *MockInteractor) GetBoardDetail(ctx context.Context, id int) (*entity.Board, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GetBoardDetail", ctx, id) ret0, _ := ret[0].(*entity.Board) @@ -65,7 +65,7 @@ func (mr *MockInteractorMockRecorder) GetBoardDetail(ctx, id interface{}) *gomoc } // GetUserBoards mocks base method -func (m *MockInteractor) GetUserBoards(ctx *gin.Context, uid string) (entity.BoardSlice, error) { +func (m *MockInteractor) GetUserBoards(ctx context.Context, uid string) (entity.BoardSlice, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GetUserBoards", ctx, uid) ret0, _ := ret[0].(entity.BoardSlice) @@ -80,7 +80,7 @@ func (mr *MockInteractorMockRecorder) GetUserBoards(ctx, uid interface{}) *gomoc } // GetAll mocks base method -func (m *MockInteractor) GetAll(ctx *gin.Context) (entity.BoardSlice, error) { +func (m *MockInteractor) GetAll(ctx context.Context) (entity.BoardSlice, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GetAll", ctx) ret0, _ := ret[0].(entity.BoardSlice) diff --git a/pkg/api/usecase/user/interactor.go b/pkg/api/usecase/user/interactor.go index 7408c23..6beb114 100644 --- a/pkg/api/usecase/user/interactor.go +++ b/pkg/api/usecase/user/interactor.go @@ -1,17 +1,16 @@ package user import ( + "context" "todone/pkg/domain/entity" "todone/pkg/domain/repository" userservice "todone/pkg/domain/service/user" - - "github.com/gin-gonic/gin" ) type Interactor interface { - CreateNewUser(ctx *gin.Context, uid, title, description string) error - GetUserProfile(ctx *gin.Context, uid string) (*entity.User, error) - GetAll(ctx *gin.Context) (entity.UserSlice, error) + CreateNewUser(ctx context.Context, uid, title, description string) error + GetUserProfile(ctx context.Context, uid string) (*entity.User, error) + GetAll(ctx context.Context) (entity.UserSlice, error) } type intereractor struct { @@ -26,8 +25,8 @@ func New(masterTxManager repository.MasterTxManager, userService userservice.Ser } } -func (i *intereractor) CreateNewUser(ctx *gin.Context, uid, title, description string) error { - err := i.masterTxManager.Transaction(ctx, func(ctx *gin.Context, masterTx repository.MasterTx) error { +func (i *intereractor) CreateNewUser(ctx context.Context, uid, title, description string) error { + err := i.masterTxManager.Transaction(ctx, func(ctx context.Context, masterTx repository.MasterTx) error { // 新規ユーザ作成 if err := i.userService.CreateNewUser(ctx, masterTx, uid, title, description); err != nil { return err @@ -40,11 +39,11 @@ func (i *intereractor) CreateNewUser(ctx *gin.Context, uid, title, description s return nil } -func (i *intereractor) GetUserProfile(ctx *gin.Context, uid string) (*entity.User, error) { +func (i *intereractor) GetUserProfile(ctx context.Context, uid string) (*entity.User, error) { var userData *entity.User var err error - err = i.masterTxManager.Transaction(ctx, func(ctx *gin.Context, masterTx repository.MasterTx) error { + err = i.masterTxManager.Transaction(ctx, func(ctx context.Context, masterTx repository.MasterTx) error { // ログイン済ユーザのプロフィール情報取得 userData, err = i.userService.GetByUID(ctx, masterTx, uid) if err != nil { @@ -58,11 +57,11 @@ func (i *intereractor) GetUserProfile(ctx *gin.Context, uid string) (*entity.Use return userData, nil } -func (i *intereractor) GetAll(ctx *gin.Context) (entity.UserSlice, error) { +func (i *intereractor) GetAll(ctx context.Context) (entity.UserSlice, error) { var userSlice entity.UserSlice var err error - err = i.masterTxManager.Transaction(ctx, func(ctx *gin.Context, masterTx repository.MasterTx) error { + err = i.masterTxManager.Transaction(ctx, func(ctx context.Context, masterTx repository.MasterTx) error { // (管理者用)ユーザ全件取得 userSlice, err = i.userService.GetAll(ctx, masterTx) if err != nil { diff --git a/pkg/api/usecase/user/mock_user/mock_interactor.go b/pkg/api/usecase/user/mock_user/mock_interactor.go index ea31522..d3092ec 100644 --- a/pkg/api/usecase/user/mock_user/mock_interactor.go +++ b/pkg/api/usecase/user/mock_user/mock_interactor.go @@ -5,10 +5,10 @@ package mock_user import ( + "context" reflect "reflect" entity "todone/pkg/domain/entity" - gin "github.com/gin-gonic/gin" gomock "github.com/golang/mock/gomock" ) @@ -36,7 +36,7 @@ func (m *MockInteractor) EXPECT() *MockInteractorMockRecorder { } // CreateNewUser mocks base method -func (m *MockInteractor) CreateNewUser(ctx *gin.Context, uid, title, description string) error { +func (m *MockInteractor) CreateNewUser(ctx context.Context, uid, title, description string) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "CreateNewUser", ctx, uid, title, description) ret0, _ := ret[0].(error) @@ -50,7 +50,7 @@ func (mr *MockInteractorMockRecorder) CreateNewUser(ctx, uid, title, description } // GetUserProfile mocks base method -func (m *MockInteractor) GetUserProfile(ctx *gin.Context, uid string) (*entity.User, error) { +func (m *MockInteractor) GetUserProfile(ctx context.Context, uid string) (*entity.User, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GetUserProfile", ctx, uid) ret0, _ := ret[0].(*entity.User) @@ -65,7 +65,7 @@ func (mr *MockInteractorMockRecorder) GetUserProfile(ctx, uid interface{}) *gomo } // GetAll mocks base method -func (m *MockInteractor) GetAll(ctx *gin.Context) (entity.UserSlice, error) { +func (m *MockInteractor) GetAll(ctx context.Context) (entity.UserSlice, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GetAll", ctx) ret0, _ := ret[0].(entity.UserSlice) diff --git a/pkg/domain/repository/board/mock_board/mock_repository.go b/pkg/domain/repository/board/mock_board/mock_repository.go index f5b52fd..2c56940 100644 --- a/pkg/domain/repository/board/mock_board/mock_repository.go +++ b/pkg/domain/repository/board/mock_board/mock_repository.go @@ -5,11 +5,12 @@ package mock_board import ( - gin "github.com/gin-gonic/gin" - gomock "github.com/golang/mock/gomock" + "context" reflect "reflect" entity "todone/pkg/domain/entity" repository "todone/pkg/domain/repository" + + gomock "github.com/golang/mock/gomock" ) // MockRepository is a mock of Repository interface @@ -36,7 +37,7 @@ func (m *MockRepository) EXPECT() *MockRepositoryMockRecorder { } // InsertBoard mocks base method -func (m *MockRepository) InsertBoard(ctx *gin.Context, masterTx repository.MasterTx, userID int, title, description string) error { +func (m *MockRepository) InsertBoard(ctx context.Context, masterTx repository.MasterTx, userID int, title, description string) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "InsertBoard", ctx, masterTx, userID, title, description) ret0, _ := ret[0].(error) @@ -50,7 +51,7 @@ func (mr *MockRepositoryMockRecorder) InsertBoard(ctx, masterTx, userID, title, } // SelectByPK mocks base method -func (m *MockRepository) SelectByPK(ctx *gin.Context, masterTx repository.MasterTx, id int) (*entity.Board, error) { +func (m *MockRepository) SelectByPK(ctx context.Context, masterTx repository.MasterTx, id int) (*entity.Board, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "SelectByPK", ctx, masterTx, id) ret0, _ := ret[0].(*entity.Board) @@ -65,7 +66,7 @@ func (mr *MockRepositoryMockRecorder) SelectByPK(ctx, masterTx, id interface{}) } // SelectByUserID mocks base method -func (m *MockRepository) SelectByUserID(ctx *gin.Context, masterTx repository.MasterTx, userID int) (entity.BoardSlice, error) { +func (m *MockRepository) SelectByUserID(ctx context.Context, masterTx repository.MasterTx, userID int) (entity.BoardSlice, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "SelectByUserID", ctx, masterTx, userID) ret0, _ := ret[0].(entity.BoardSlice) @@ -80,7 +81,7 @@ func (mr *MockRepositoryMockRecorder) SelectByUserID(ctx, masterTx, userID inter } // SelectAll mocks base method -func (m *MockRepository) SelectAll(ctx *gin.Context, masterTx repository.MasterTx) (entity.BoardSlice, error) { +func (m *MockRepository) SelectAll(ctx context.Context, masterTx repository.MasterTx) (entity.BoardSlice, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "SelectAll", ctx, masterTx) ret0, _ := ret[0].(entity.BoardSlice) diff --git a/pkg/domain/repository/board/repository.go b/pkg/domain/repository/board/repository.go index 9489061..f0fcf01 100644 --- a/pkg/domain/repository/board/repository.go +++ b/pkg/domain/repository/board/repository.go @@ -1,15 +1,14 @@ package board import ( + "context" "todone/pkg/domain/entity" "todone/pkg/domain/repository" - - "github.com/gin-gonic/gin" ) type Repository interface { - InsertBoard(ctx *gin.Context, masterTx repository.MasterTx, userID int, title, description string) error - SelectByPK(ctx *gin.Context, masterTx repository.MasterTx, id int) (*entity.Board, error) - SelectByUserID(ctx *gin.Context, masterTx repository.MasterTx, userID int) (entity.BoardSlice, error) - SelectAll(ctx *gin.Context, masterTx repository.MasterTx) (entity.BoardSlice, error) + InsertBoard(ctx context.Context, masterTx repository.MasterTx, userID int, title, description string) error + SelectByPK(ctx context.Context, masterTx repository.MasterTx, id int) (*entity.Board, error) + SelectByUserID(ctx context.Context, masterTx repository.MasterTx, userID int) (entity.BoardSlice, error) + SelectAll(ctx context.Context, masterTx repository.MasterTx) (entity.BoardSlice, error) } diff --git a/pkg/domain/repository/master_tx_manager.go b/pkg/domain/repository/master_tx_manager.go index 09139b7..ecb64e2 100644 --- a/pkg/domain/repository/master_tx_manager.go +++ b/pkg/domain/repository/master_tx_manager.go @@ -1,10 +1,10 @@ package repository -import "github.com/gin-gonic/gin" +import "context" // MasterTxManager トランザクションマネージャ type MasterTxManager interface { - Transaction(ctx *gin.Context, f func(ctx *gin.Context, masterTx MasterTx) error) error + Transaction(ctx context.Context, f func(ctx context.Context, masterTx MasterTx) error) error } // MasterTx トランザクション diff --git a/pkg/domain/repository/mock_master_tx_manager.go b/pkg/domain/repository/mock_master_tx_manager.go index 5f3845b..d70992b 100644 --- a/pkg/domain/repository/mock_master_tx_manager.go +++ b/pkg/domain/repository/mock_master_tx_manager.go @@ -1,8 +1,6 @@ package repository -import ( - "github.com/gin-gonic/gin" -) +import "context" // TxnManagerは構造が特殊だったのでmockを自前で実装。 type MockMasterTxManager struct { @@ -13,7 +11,7 @@ func NewMockMasterTxManager(masterTx MasterTx) MasterTxManager { return &MockMasterTxManager{masterTx} } -func (m *MockMasterTxManager) Transaction(ctx *gin.Context, f func(ctx *gin.Context, masterTx MasterTx) error) error { +func (m *MockMasterTxManager) Transaction(ctx context.Context, f func(ctx context.Context, masterTx MasterTx) error) error { return f(ctx, m.masterTx) } diff --git a/pkg/domain/repository/user/mock_user/mock_repository.go b/pkg/domain/repository/user/mock_user/mock_repository.go index 9289f91..5523023 100644 --- a/pkg/domain/repository/user/mock_user/mock_repository.go +++ b/pkg/domain/repository/user/mock_user/mock_repository.go @@ -5,11 +5,12 @@ package mock_user import ( - gin "github.com/gin-gonic/gin" - gomock "github.com/golang/mock/gomock" + "context" reflect "reflect" entity "todone/pkg/domain/entity" repository "todone/pkg/domain/repository" + + gomock "github.com/golang/mock/gomock" ) // MockRepository is a mock of Repository interface @@ -36,7 +37,7 @@ func (m *MockRepository) EXPECT() *MockRepositoryMockRecorder { } // InsertUser mocks base method -func (m *MockRepository) InsertUser(ctx *gin.Context, masterTx repository.MasterTx, uid, name, thumbnail string) error { +func (m *MockRepository) InsertUser(ctx context.Context, masterTx repository.MasterTx, uid, name, thumbnail string) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "InsertUser", ctx, masterTx, uid, name, thumbnail) ret0, _ := ret[0].(error) @@ -50,7 +51,7 @@ func (mr *MockRepositoryMockRecorder) InsertUser(ctx, masterTx, uid, name, thumb } // SelectByPK mocks base method -func (m *MockRepository) SelectByPK(ctx *gin.Context, masterTx repository.MasterTx, userID int) (*entity.User, error) { +func (m *MockRepository) SelectByPK(ctx context.Context, masterTx repository.MasterTx, userID int) (*entity.User, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "SelectByPK", ctx, masterTx, userID) ret0, _ := ret[0].(*entity.User) @@ -65,7 +66,7 @@ func (mr *MockRepositoryMockRecorder) SelectByPK(ctx, masterTx, userID interface } // SelectByUID mocks base method -func (m *MockRepository) SelectByUID(ctx *gin.Context, masterTx repository.MasterTx, uid string) (*entity.User, error) { +func (m *MockRepository) SelectByUID(ctx context.Context, masterTx repository.MasterTx, uid string) (*entity.User, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "SelectByUID", ctx, masterTx, uid) ret0, _ := ret[0].(*entity.User) @@ -80,7 +81,7 @@ func (mr *MockRepositoryMockRecorder) SelectByUID(ctx, masterTx, uid interface{} } // SelectAll mocks base method -func (m *MockRepository) SelectAll(ctx *gin.Context, masterTx repository.MasterTx) (entity.UserSlice, error) { +func (m *MockRepository) SelectAll(ctx context.Context, masterTx repository.MasterTx) (entity.UserSlice, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "SelectAll", ctx, masterTx) ret0, _ := ret[0].(entity.UserSlice) diff --git a/pkg/domain/repository/user/repository.go b/pkg/domain/repository/user/repository.go index b468efc..793ba5d 100644 --- a/pkg/domain/repository/user/repository.go +++ b/pkg/domain/repository/user/repository.go @@ -1,15 +1,14 @@ package user import ( + "context" "todone/pkg/domain/entity" "todone/pkg/domain/repository" - - "github.com/gin-gonic/gin" ) type Repository interface { - InsertUser(ctx *gin.Context, masterTx repository.MasterTx, uid, name, thumbnail string) error - SelectByPK(ctx *gin.Context, masterTx repository.MasterTx, userID int) (*entity.User, error) - SelectByUID(ctx *gin.Context, masterTx repository.MasterTx, uid string) (*entity.User, error) - SelectAll(ctx *gin.Context, masterTx repository.MasterTx) (entity.UserSlice, error) + InsertUser(ctx context.Context, masterTx repository.MasterTx, uid, name, thumbnail string) error + SelectByPK(ctx context.Context, masterTx repository.MasterTx, userID int) (*entity.User, error) + SelectByUID(ctx context.Context, masterTx repository.MasterTx, uid string) (*entity.User, error) + SelectAll(ctx context.Context, masterTx repository.MasterTx) (entity.UserSlice, error) } diff --git a/pkg/domain/service/board/mock_board/mock_service.go b/pkg/domain/service/board/mock_board/mock_service.go index 283f07a..50b74ab 100644 --- a/pkg/domain/service/board/mock_board/mock_service.go +++ b/pkg/domain/service/board/mock_board/mock_service.go @@ -5,11 +5,11 @@ package mock_board import ( + "context" reflect "reflect" entity "todone/pkg/domain/entity" repository "todone/pkg/domain/repository" - gin "github.com/gin-gonic/gin" gomock "github.com/golang/mock/gomock" ) @@ -37,7 +37,7 @@ func (m *MockService) EXPECT() *MockServiceMockRecorder { } // CreateNewBoard mocks base method -func (m *MockService) CreateNewBoard(ctx *gin.Context, masterTx repository.MasterTx, userID int, title, description string) error { +func (m *MockService) CreateNewBoard(ctx context.Context, masterTx repository.MasterTx, userID int, title, description string) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "CreateNewBoard", ctx, masterTx, userID, title, description) ret0, _ := ret[0].(error) @@ -51,7 +51,7 @@ func (mr *MockServiceMockRecorder) CreateNewBoard(ctx, masterTx, userID, title, } // GetByPK mocks base method -func (m *MockService) GetByPK(ctx *gin.Context, masterTx repository.MasterTx, id int) (*entity.Board, error) { +func (m *MockService) GetByPK(ctx context.Context, masterTx repository.MasterTx, id int) (*entity.Board, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GetByPK", ctx, masterTx, id) ret0, _ := ret[0].(*entity.Board) @@ -66,7 +66,7 @@ func (mr *MockServiceMockRecorder) GetByPK(ctx, masterTx, id interface{}) *gomoc } // GetByUserID mocks base method -func (m *MockService) GetByUserID(ctx *gin.Context, masterTx repository.MasterTx, userID int) (entity.BoardSlice, error) { +func (m *MockService) GetByUserID(ctx context.Context, masterTx repository.MasterTx, userID int) (entity.BoardSlice, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GetByUserID", ctx, masterTx, userID) ret0, _ := ret[0].(entity.BoardSlice) @@ -81,7 +81,7 @@ func (mr *MockServiceMockRecorder) GetByUserID(ctx, masterTx, userID interface{} } // GetAll mocks base method -func (m *MockService) GetAll(ctx *gin.Context, masterTx repository.MasterTx) (entity.BoardSlice, error) { +func (m *MockService) GetAll(ctx context.Context, masterTx repository.MasterTx) (entity.BoardSlice, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GetAll", ctx, masterTx) ret0, _ := ret[0].(entity.BoardSlice) diff --git a/pkg/domain/service/board/service.go b/pkg/domain/service/board/service.go index dcb7123..f0706ec 100644 --- a/pkg/domain/service/board/service.go +++ b/pkg/domain/service/board/service.go @@ -1,18 +1,17 @@ package board import ( + "context" "todone/pkg/domain/entity" "todone/pkg/domain/repository" "todone/pkg/domain/repository/board" - - "github.com/gin-gonic/gin" ) type Service interface { - CreateNewBoard(ctx *gin.Context, masterTx repository.MasterTx, userID int, title, description string) error - GetByPK(ctx *gin.Context, masterTx repository.MasterTx, id int) (*entity.Board, error) - GetByUserID(ctx *gin.Context, masterTx repository.MasterTx, userID int) (entity.BoardSlice, error) - GetAll(ctx *gin.Context, masterTx repository.MasterTx) (entity.BoardSlice, error) + CreateNewBoard(ctx context.Context, masterTx repository.MasterTx, userID int, title, description string) error + GetByPK(ctx context.Context, masterTx repository.MasterTx, id int) (*entity.Board, error) + GetByUserID(ctx context.Context, masterTx repository.MasterTx, userID int) (entity.BoardSlice, error) + GetAll(ctx context.Context, masterTx repository.MasterTx) (entity.BoardSlice, error) } type service struct { @@ -25,14 +24,14 @@ func New(boardRepository board.Repository) Service { } } -func (s *service) CreateNewBoard(ctx *gin.Context, masterTx repository.MasterTx, userID int, title, description string) error { +func (s *service) CreateNewBoard(ctx context.Context, masterTx repository.MasterTx, userID int, title, description string) error { if err := s.boardRepository.InsertBoard(ctx, masterTx, userID, title, description); err != nil { return err } return nil } -func (s *service) GetByPK(ctx *gin.Context, masterTx repository.MasterTx, id int) (*entity.Board, error) { +func (s *service) GetByPK(ctx context.Context, masterTx repository.MasterTx, id int) (*entity.Board, error) { boardData, err := s.boardRepository.SelectByPK(ctx, masterTx, id) if err != nil { return nil, err @@ -40,7 +39,7 @@ func (s *service) GetByPK(ctx *gin.Context, masterTx repository.MasterTx, id int return boardData, nil } -func (s *service) GetByUserID(ctx *gin.Context, masterTx repository.MasterTx, userID int) (entity.BoardSlice, error) { +func (s *service) GetByUserID(ctx context.Context, masterTx repository.MasterTx, userID int) (entity.BoardSlice, error) { boardSlice, err := s.boardRepository.SelectByUserID(ctx, masterTx, userID) if err != nil { return nil, err @@ -48,7 +47,7 @@ func (s *service) GetByUserID(ctx *gin.Context, masterTx repository.MasterTx, us return boardSlice, nil } -func (s *service) GetAll(ctx *gin.Context, masterTx repository.MasterTx) (entity.BoardSlice, error) { +func (s *service) GetAll(ctx context.Context, masterTx repository.MasterTx) (entity.BoardSlice, error) { boardSlice, err := s.boardRepository.SelectAll(ctx, masterTx) if err != nil { return nil, err diff --git a/pkg/domain/service/user/mock_user/mock_service.go b/pkg/domain/service/user/mock_user/mock_service.go index 70ea5e4..a710da9 100644 --- a/pkg/domain/service/user/mock_user/mock_service.go +++ b/pkg/domain/service/user/mock_user/mock_service.go @@ -5,11 +5,11 @@ package mock_user import ( + "context" reflect "reflect" entity "todone/pkg/domain/entity" repository "todone/pkg/domain/repository" - gin "github.com/gin-gonic/gin" gomock "github.com/golang/mock/gomock" ) @@ -37,7 +37,7 @@ func (m *MockService) EXPECT() *MockServiceMockRecorder { } // CreateNewUser mocks base method -func (m *MockService) CreateNewUser(ctx *gin.Context, masterTx repository.MasterTx, uid, name, thumbnail string) error { +func (m *MockService) CreateNewUser(ctx context.Context, masterTx repository.MasterTx, uid, name, thumbnail string) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "CreateNewUser", ctx, masterTx, uid, name, thumbnail) ret0, _ := ret[0].(error) @@ -51,7 +51,7 @@ func (mr *MockServiceMockRecorder) CreateNewUser(ctx, masterTx, uid, name, thumb } // GetByPK mocks base method -func (m *MockService) GetByPK(ctx *gin.Context, masterTx repository.MasterTx, userID int) (*entity.User, error) { +func (m *MockService) GetByPK(ctx context.Context, masterTx repository.MasterTx, userID int) (*entity.User, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GetByPK", ctx, masterTx, userID) ret0, _ := ret[0].(*entity.User) @@ -66,7 +66,7 @@ func (mr *MockServiceMockRecorder) GetByPK(ctx, masterTx, userID interface{}) *g } // GetByUID mocks base method -func (m *MockService) GetByUID(ctx *gin.Context, masterTx repository.MasterTx, uid string) (*entity.User, error) { +func (m *MockService) GetByUID(ctx context.Context, masterTx repository.MasterTx, uid string) (*entity.User, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GetByUID", ctx, masterTx, uid) ret0, _ := ret[0].(*entity.User) @@ -81,7 +81,7 @@ func (mr *MockServiceMockRecorder) GetByUID(ctx, masterTx, uid interface{}) *gom } // GetAll mocks base method -func (m *MockService) GetAll(ctx *gin.Context, masterTx repository.MasterTx) (entity.UserSlice, error) { +func (m *MockService) GetAll(ctx context.Context, masterTx repository.MasterTx) (entity.UserSlice, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GetAll", ctx, masterTx) ret0, _ := ret[0].(entity.UserSlice) diff --git a/pkg/domain/service/user/service.go b/pkg/domain/service/user/service.go index ff6fad0..8551890 100644 --- a/pkg/domain/service/user/service.go +++ b/pkg/domain/service/user/service.go @@ -1,18 +1,17 @@ package user import ( + "context" "todone/pkg/domain/entity" "todone/pkg/domain/repository" "todone/pkg/domain/repository/user" - - "github.com/gin-gonic/gin" ) type Service interface { - CreateNewUser(ctx *gin.Context, masterTx repository.MasterTx, uid, name, thumbnail string) error - GetByPK(ctx *gin.Context, masterTx repository.MasterTx, userID int) (*entity.User, error) - GetByUID(ctx *gin.Context, masterTx repository.MasterTx, uid string) (*entity.User, error) - GetAll(ctx *gin.Context, masterTx repository.MasterTx) (entity.UserSlice, error) + CreateNewUser(ctx context.Context, masterTx repository.MasterTx, uid, name, thumbnail string) error + GetByPK(ctx context.Context, masterTx repository.MasterTx, userID int) (*entity.User, error) + GetByUID(ctx context.Context, masterTx repository.MasterTx, uid string) (*entity.User, error) + GetAll(ctx context.Context, masterTx repository.MasterTx) (entity.UserSlice, error) } type service struct { @@ -25,14 +24,14 @@ func New(userRepository user.Repository) Service { } } -func (s *service) CreateNewUser(ctx *gin.Context, masterTx repository.MasterTx, uid, name, thumbnail string) error { +func (s *service) CreateNewUser(ctx context.Context, masterTx repository.MasterTx, uid, name, thumbnail string) error { if err := s.userRepository.InsertUser(ctx, masterTx, uid, name, thumbnail); err != nil { return err } return nil } -func (s *service) GetByPK(ctx *gin.Context, masterTx repository.MasterTx, userID int) (*entity.User, error) { +func (s *service) GetByPK(ctx context.Context, masterTx repository.MasterTx, userID int) (*entity.User, error) { userData, err := s.userRepository.SelectByPK(ctx, masterTx, userID) if err != nil { return nil, err @@ -40,7 +39,7 @@ func (s *service) GetByPK(ctx *gin.Context, masterTx repository.MasterTx, userID return userData, nil } -func (s *service) GetByUID(ctx *gin.Context, masterTx repository.MasterTx, uid string) (*entity.User, error) { +func (s *service) GetByUID(ctx context.Context, masterTx repository.MasterTx, uid string) (*entity.User, error) { userData, err := s.userRepository.SelectByUID(ctx, masterTx, uid) if err != nil { return nil, err @@ -48,7 +47,7 @@ func (s *service) GetByUID(ctx *gin.Context, masterTx repository.MasterTx, uid s return userData, nil } -func (s *service) GetAll(ctx *gin.Context, masterTx repository.MasterTx) (entity.UserSlice, error) { +func (s *service) GetAll(ctx context.Context, masterTx repository.MasterTx) (entity.UserSlice, error) { userSlice, err := s.userRepository.SelectAll(ctx, masterTx) if err != nil { return nil, err diff --git a/pkg/infrastructure/mysql/board/repository.go b/pkg/infrastructure/mysql/board/repository.go index 0318e25..59cbe96 100644 --- a/pkg/infrastructure/mysql/board/repository.go +++ b/pkg/infrastructure/mysql/board/repository.go @@ -1,13 +1,13 @@ package board import ( + "context" "todone/db/mysql/model" "todone/pkg/domain/entity" "todone/pkg/domain/repository" "todone/pkg/domain/repository/board" "todone/pkg/infrastructure/mysql" - "github.com/gin-gonic/gin" "github.com/volatiletech/null" "github.com/volatiletech/sqlboiler/boil" "github.com/volatiletech/sqlboiler/queries/qm" @@ -24,7 +24,7 @@ func New(masterTxManager repository.MasterTxManager) board.Repository { } // プロジェクト作成機能 -func (p *boardRepositoryImpliment) InsertBoard(ctx *gin.Context, masterTx repository.MasterTx, userID int, title, description string) error { +func (p *boardRepositoryImpliment) InsertBoard(ctx context.Context, masterTx repository.MasterTx, userID int, title, description string) error { newBoardData := &model.Board{ UserID: userID, Title: title, @@ -43,7 +43,7 @@ func (p *boardRepositoryImpliment) InsertBoard(ctx *gin.Context, masterTx reposi } // プロジェクト取得機能(PK: id) -func (p *boardRepositoryImpliment) SelectByPK(ctx *gin.Context, masterTx repository.MasterTx, id int) (*entity.Board, error) { +func (p *boardRepositoryImpliment) SelectByPK(ctx context.Context, masterTx repository.MasterTx, id int) (*entity.Board, error) { exec, err := mysql.ExtractExecutor(masterTx) if err != nil { return nil, err @@ -63,7 +63,7 @@ func (p *boardRepositoryImpliment) SelectByPK(ctx *gin.Context, masterTx reposit } // ユーザのもつプロジェクト取得機能 -func (p *boardRepositoryImpliment) SelectByUserID(ctx *gin.Context, masterTx repository.MasterTx, userID int) (entity.BoardSlice, error) { +func (p *boardRepositoryImpliment) SelectByUserID(ctx context.Context, masterTx repository.MasterTx, userID int) (entity.BoardSlice, error) { exec, err := mysql.ExtractExecutor(masterTx) if err != nil { return nil, err @@ -80,7 +80,7 @@ func (p *boardRepositoryImpliment) SelectByUserID(ctx *gin.Context, masterTx rep } // プロジェクト全件取得機能 -func (p *boardRepositoryImpliment) SelectAll(ctx *gin.Context, masterTx repository.MasterTx) (entity.BoardSlice, error) { +func (p *boardRepositoryImpliment) SelectAll(ctx context.Context, masterTx repository.MasterTx) (entity.BoardSlice, error) { exec, err := mysql.ExtractExecutor(masterTx) if err != nil { return nil, err diff --git a/pkg/infrastructure/mysql/mysql_tx_manager.go b/pkg/infrastructure/mysql/mysql_tx_manager.go index cc8e306..48ca5fe 100644 --- a/pkg/infrastructure/mysql/mysql_tx_manager.go +++ b/pkg/infrastructure/mysql/mysql_tx_manager.go @@ -1,13 +1,13 @@ package mysql import ( + "context" "database/sql" "errors" "fmt" "log" "todone/pkg/domain/repository" - "github.com/gin-gonic/gin" "github.com/volatiletech/sqlboiler/boil" ) @@ -19,7 +19,7 @@ func NewDBMasterTxManager(db *sql.DB) repository.MasterTxManager { return &dbMasterTxManager{db} } -func (m *dbMasterTxManager) Transaction(ctx *gin.Context, f func(ctx *gin.Context, masterTx repository.MasterTx) error) error { +func (m *dbMasterTxManager) Transaction(ctx context.Context, f func(ctx context.Context, masterTx repository.MasterTx) error) error { tx, err := m.db.BeginTx(ctx, nil) if err != nil { return err diff --git a/pkg/infrastructure/mysql/user/repository.go b/pkg/infrastructure/mysql/user/repository.go index 28964b4..116d8e0 100644 --- a/pkg/infrastructure/mysql/user/repository.go +++ b/pkg/infrastructure/mysql/user/repository.go @@ -1,13 +1,13 @@ package user import ( + "context" "todone/db/mysql/model" "todone/pkg/domain/entity" "todone/pkg/domain/repository" "todone/pkg/domain/repository/user" "todone/pkg/infrastructure/mysql" - "github.com/gin-gonic/gin" "github.com/volatiletech/null" "github.com/volatiletech/sqlboiler/boil" "github.com/volatiletech/sqlboiler/queries/qm" @@ -23,7 +23,7 @@ func New(masterTxManager repository.MasterTxManager) user.Repository { } } -func (u userRepositoryImpliment) InsertUser(ctx *gin.Context, masterTx repository.MasterTx, uid, name, thumbnail string) error { +func (u userRepositoryImpliment) InsertUser(ctx context.Context, masterTx repository.MasterTx, uid, name, thumbnail string) error { newUserData := &model.User{ UID: uid, Name: name, @@ -41,7 +41,7 @@ func (u userRepositoryImpliment) InsertUser(ctx *gin.Context, masterTx repositor return nil } -func (u userRepositoryImpliment) SelectByPK(ctx *gin.Context, masterTx repository.MasterTx, userID int) (*entity.User, error) { +func (u userRepositoryImpliment) SelectByPK(ctx context.Context, masterTx repository.MasterTx, userID int) (*entity.User, error) { exec, err := mysql.ExtractExecutor(masterTx) if err != nil { return nil, err @@ -54,7 +54,7 @@ func (u userRepositoryImpliment) SelectByPK(ctx *gin.Context, masterTx repositor return entity.ConvertToUserEntity(userData), nil } -func (u userRepositoryImpliment) SelectByUID(ctx *gin.Context, masterTx repository.MasterTx, uid string) (*entity.User, error) { +func (u userRepositoryImpliment) SelectByUID(ctx context.Context, masterTx repository.MasterTx, uid string) (*entity.User, error) { exec, err := mysql.ExtractExecutor(masterTx) if err != nil { return nil, err @@ -67,7 +67,7 @@ func (u userRepositoryImpliment) SelectByUID(ctx *gin.Context, masterTx reposito return entity.ConvertToUserEntity(userData), nil } -func (u userRepositoryImpliment) SelectAll(ctx *gin.Context, masterTx repository.MasterTx) (entity.UserSlice, error) { +func (u userRepositoryImpliment) SelectAll(ctx context.Context, masterTx repository.MasterTx) (entity.UserSlice, error) { exec, err := mysql.ExtractExecutor(masterTx) if err != nil { return nil, err From 5cbec6014391990e03b71f281136302ef1fcd99b Mon Sep 17 00:00:00 2001 From: Takumaron Date: Sun, 26 Apr 2020 17:07:09 +0900 Subject: [PATCH 02/15] =?UTF-8?q?=E7=8B=AC=E8=87=AA=E3=82=A8=E3=83=A9?= =?UTF-8?q?=E3=83=BC(terrors)=E3=83=91=E3=83=83=E3=82=B1=E3=83=BC=E3=82=B8?= =?UTF-8?q?=E3=81=AE=E4=BD=9C=E6=88=90=E3=81=A8=E3=82=A8=E3=83=A9=E3=83=BC?= =?UTF-8?q?=E5=87=BA=E5=8A=9B=E7=94=A8=E3=81=AEmiddleware=E3=81=AE?= =?UTF-8?q?=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/main.go | 3 + go.mod | 1 + go.sum | 2 + pkg/api/handler/board/server.go | 32 +++++-- pkg/api/handler/user/server.go | 28 ++++-- pkg/api/middleware/error.go | 26 ++++++ pkg/api/middleware/firebase.go | 10 ++- pkg/api/usecase/board/interactor.go | 21 ++--- pkg/api/usecase/user/interactor.go | 13 +-- pkg/domain/service/board/service.go | 15 +++- pkg/domain/service/user/service.go | 9 +- pkg/infrastructure/mysql/board/repository.go | 17 ++-- pkg/infrastructure/mysql/mysql_tx_manager.go | 19 ++-- pkg/infrastructure/mysql/user/repository.go | 17 ++-- pkg/terrors/terrors.go | 91 ++++++++++++++++++++ 15 files changed, 234 insertions(+), 70 deletions(-) create mode 100644 pkg/api/middleware/error.go create mode 100644 pkg/terrors/terrors.go diff --git a/cmd/main.go b/cmd/main.go index 1871092..fd5cdd5 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -38,6 +38,9 @@ func main() { config.AllowHeaders = []string{"*"} r.Use(cors.New(config)) + // エラー出力用ミドルウェアの使用 + r.Use(middleware.ErrorHandling()) + // connection testAPI r.GET("/ping", func(c *gin.Context) { c.JSON(200, gin.H{ diff --git a/go.mod b/go.mod index df245a7..3797e41 100644 --- a/go.mod +++ b/go.mod @@ -27,6 +27,7 @@ require ( github.com/volatiletech/inflect v0.0.0-20170731032912-e7201282ae8d // indirect github.com/volatiletech/null v8.0.0+incompatible github.com/volatiletech/sqlboiler v3.7.0+incompatible + golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 google.golang.org/api v0.21.0 google.golang.org/genproto v0.0.0-20200407120235-9eb9bb161a06 ) diff --git a/go.sum b/go.sum index 67129d9..bcd66cb 100644 --- a/go.sum +++ b/go.sum @@ -85,8 +85,10 @@ github.com/gin-gonic/gin v1.6.2/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwv github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-kit/kit v0.8.0 h1:Wz+5lgoB0kkuqLEc6NVmwRknTKP6dTGbSqvhZtBI/j0= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0 h1:MP4Eh7ZCb31lleYCFuwm0oe4/YGak+5l1vA2NOE80nA= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= diff --git a/pkg/api/handler/board/server.go b/pkg/api/handler/board/server.go index 4d9c197..8d12974 100644 --- a/pkg/api/handler/board/server.go +++ b/pkg/api/handler/board/server.go @@ -1,13 +1,14 @@ package board import ( - "errors" + "fmt" "net/http" "strconv" "todone/pkg/api/middleware" "todone/pkg/api/request/reqbody" "todone/pkg/api/response" boardinteractor "todone/pkg/api/usecase/board" + "todone/pkg/terrors" "github.com/gin-gonic/gin" ) @@ -23,45 +24,58 @@ func New(boardInteractor boardinteractor.Interactor) Server { func (s *Server) CreateNewBoard(ctx *gin.Context) { var reqBody reqbody.BoardCreate if err := ctx.BindJSON(&reqBody); err != nil { - ctx.Error(err) + ctx.Error(terrors.Stack(err)) + return } uid, ok := ctx.Get(middleware.AuthCtxKey) if !ok { - ctx.Error(errors.New("uid is not found in context")) + errMessageJP := fmt.Sprintf("uidはリクエストされたコンテキストから検出されませんでした。ctx: %v", ctx) + errMessageEN := fmt.Sprintf("uid is not found in context. ctx: %v", ctx) + ctx.Error(terrors.Newf(http.StatusUnauthorized, errMessageJP, errMessageEN)) + return } if err := s.boardInteractor.CreateNewBoard(ctx, uid.(string), reqBody.Title, reqBody.Description); err != nil { ctx.Error(err) + return } ctx.Status(http.StatusNoContent) + return } func (s *Server) GetBoardDetail(ctx *gin.Context) { idParam := ctx.Param("id") boardID, err := strconv.Atoi(idParam) if err != nil { - ctx.Error(err) + ctx.Error(terrors.Stack(err)) + return } board, err := s.boardInteractor.GetBoardDetail(ctx, boardID) if err != nil { - ctx.Error(err) + ctx.Error(terrors.Stack(err)) + return } ctx.JSON(http.StatusOK, response.ConvertToBoardResponse(board)) + return } func (s *Server) GetUserBoards(ctx *gin.Context) { uid, ok := ctx.Get(middleware.AuthCtxKey) if !ok { - ctx.Error(errors.New("uid is not found in context")) + errMessageJP := fmt.Sprintf("uidはリクエストされたコンテキストから検出されませんでした。ctx: %v", ctx) + errMessageEN := fmt.Sprintf("uid is not found in context. ctx: %v", ctx) + ctx.Error(terrors.Newf(http.StatusUnauthorized, errMessageJP, errMessageEN)) + return } boards, err := s.boardInteractor.GetUserBoards(ctx, uid.(string)) if err != nil { - ctx.Error(err) + ctx.Error(terrors.Stack(err)) + return } ctx.JSON(http.StatusOK, response.ConvertToBoardsResponse(boards)) @@ -70,8 +84,10 @@ func (s *Server) GetUserBoards(ctx *gin.Context) { func (s *Server) GetAllBoards(ctx *gin.Context) { boards, err := s.boardInteractor.GetAll(ctx) if err != nil { - ctx.Error(err) + ctx.Error(terrors.Stack(err)) + return } ctx.JSON(http.StatusOK, response.ConvertToBoardsResponse(boards)) + return } diff --git a/pkg/api/handler/user/server.go b/pkg/api/handler/user/server.go index 0bc07b4..621a315 100644 --- a/pkg/api/handler/user/server.go +++ b/pkg/api/handler/user/server.go @@ -1,12 +1,13 @@ package user import ( - "errors" + "fmt" "net/http" "todone/pkg/api/middleware" "todone/pkg/api/request/reqbody" "todone/pkg/api/response" userinteractor "todone/pkg/api/usecase/user" + "todone/pkg/terrors" "github.com/gin-gonic/gin" ) @@ -22,40 +23,53 @@ func New(userInteractor userinteractor.Interactor) Server { func (s *Server) CreateNewUser(ctx *gin.Context) { var reqBody reqbody.UserCreate if err := ctx.BindJSON(&reqBody); err != nil { - ctx.Error(err) + ctx.Error(terrors.Stack(err)) + return } uid, ok := ctx.Get(middleware.AuthCtxKey) if !ok { - ctx.Error(errors.New("uid is not found in context")) + errMessageJP := fmt.Sprintf("uidはリクエストされたコンテキストから検出されませんでした。ctx: %v", ctx) + errMessageEN := fmt.Sprintf("uid is not found in context. ctx: %v", ctx) + ctx.Error(terrors.Newf(http.StatusUnauthorized, errMessageJP, errMessageEN)) + return } if err := s.userInteractor.CreateNewUser(ctx, uid.(string), reqBody.Name, reqBody.Thumbnail); err != nil { - ctx.Error(err) + ctx.Error(terrors.Stack(err)) + return } ctx.Status(http.StatusNoContent) + return } func (s *Server) GetUserProfile(ctx *gin.Context) { uid, ok := ctx.Get(middleware.AuthCtxKey) if !ok { - ctx.Error(errors.New("uid is not found in context")) + errMessageJP := fmt.Sprintf("uidはリクエストされたコンテキストから検出されませんでした。ctx: %v", ctx) + errMessageEN := fmt.Sprintf("uid is not found in context. ctx: %v", ctx) + ctx.Error(terrors.Newf(http.StatusUnauthorized, errMessageJP, errMessageEN)) + return } user, err := s.userInteractor.GetUserProfile(ctx, uid.(string)) if err != nil { - ctx.Error(err) + ctx.Error(terrors.Stack(err)) + return } ctx.JSON(http.StatusOK, response.ConvertToUserResponse(user)) + return } func (s *Server) GetAllUsers(ctx *gin.Context) { users, err := s.userInteractor.GetAll(ctx) if err != nil { - ctx.Error(err) + ctx.Error(terrors.Stack(err)) + return } ctx.JSON(http.StatusOK, response.ConvertToUsersResponse(users)) + return } diff --git a/pkg/api/middleware/error.go b/pkg/api/middleware/error.go new file mode 100644 index 0000000..8bf7aed --- /dev/null +++ b/pkg/api/middleware/error.go @@ -0,0 +1,26 @@ +package middleware + +import ( + "errors" + "net/http" + "todone/pkg/terrors" + + "github.com/gin-gonic/gin" +) + +func ErrorHandling() gin.HandlerFunc { + return func(c *gin.Context) { + c.Next() + + err := c.Errors.Last() + if err != nil { + var todoneError *terrors.TodoneError + if ok := errors.As(err.Err, &todoneError); ok { + c.AbortWithStatusJSON(todoneError.ErrorCode, todoneError) + return + } + c.AbortWithStatusJSON(http.StatusInternalServerError, err) + return + } + } +} diff --git a/pkg/api/middleware/firebase.go b/pkg/api/middleware/firebase.go index e177188..de33ede 100644 --- a/pkg/api/middleware/firebase.go +++ b/pkg/api/middleware/firebase.go @@ -4,8 +4,10 @@ import ( "context" "fmt" "log" + "net/http" "strings" "todone/pkg/api/request/reqheader" + "todone/pkg/terrors" secretmanager "cloud.google.com/go/secretmanager/apiv1" firebase "firebase.google.com/go" @@ -68,16 +70,16 @@ func (fa *firebaseAuth) middlewareImpl(c *gin.Context) { // Authorizationヘッダーからjwtトークンを取得 var reqHeader reqheader.Auth if err := c.BindHeader(&reqHeader); err != nil { - c.Error(err) + c.AbortWithError(http.StatusBadRequest, terrors.Stack(err)) + return } jwtToken := strings.Replace(reqHeader.Authorization, "Bearer ", "", 1) // JWT の検証 authedUserToken, err := fa.client.VerifyIDToken(c, jwtToken) if err != nil { - // JWT が無効なら Handler に進まず別処理 - fmt.Printf("error verifying ID token: %v\n", err) - c.Error(err) + c.AbortWithError(http.StatusBadRequest, err) + return } // contextにuidを格納 c.Set(AuthCtxKey, authedUserToken.UID) diff --git a/pkg/api/usecase/board/interactor.go b/pkg/api/usecase/board/interactor.go index d1cc6eb..a6b61b1 100644 --- a/pkg/api/usecase/board/interactor.go +++ b/pkg/api/usecase/board/interactor.go @@ -6,6 +6,7 @@ import ( "todone/pkg/domain/repository" boardservice "todone/pkg/domain/service/board" userservice "todone/pkg/domain/service/user" + "todone/pkg/terrors" ) type Interactor interface { @@ -34,16 +35,16 @@ func (i *intereractor) CreateNewBoard(ctx context.Context, uid string, title, de // ログイン済ユーザのID取得 userData, err := i.userService.GetByUID(ctx, masterTx, uid) if err != nil { - return err + return terrors.Stack(err) } // 新規ボードの作成 if err := i.boardService.CreateNewBoard(ctx, masterTx, userData.ID, title, description); err != nil { - return err + return terrors.Stack(err) } return nil }) if err != nil { - return err + return terrors.Stack(err) } return nil } @@ -56,12 +57,12 @@ func (i *intereractor) GetBoardDetail(ctx context.Context, id int) (*entity.Boar // ボード詳細情報取得 boardData, err = i.boardService.GetByPK(ctx, masterTx, id) if err != nil { - return err + return terrors.Stack(err) } return nil }) if err != nil { - return nil, err + return nil, terrors.Stack(err) } return boardData, nil } @@ -73,17 +74,17 @@ func (i *intereractor) GetUserBoards(ctx context.Context, uid string) (entity.Bo // ログイン済ユーザのID取得 userData, err := i.userService.GetByUID(ctx, masterTx, uid) if err != nil { - return err + return terrors.Stack(err) } // ユーザ所有のボード一覧取得 boardSlice, err = i.boardService.GetByUserID(ctx, masterTx, userData.ID) if err != nil { - return err + return terrors.Stack(err) } return nil }) if err != nil { - return nil, err + return nil, terrors.Stack(err) } return boardSlice, nil } @@ -96,12 +97,12 @@ func (i *intereractor) GetAll(ctx context.Context) (entity.BoardSlice, error) { // (管理者用)ボード全件取得 boardSlice, err = i.boardService.GetAll(ctx, masterTx) if err != nil { - return err + return terrors.Stack(err) } return nil }) if err != nil { - return nil, err + return nil, terrors.Stack(err) } return boardSlice, nil } diff --git a/pkg/api/usecase/user/interactor.go b/pkg/api/usecase/user/interactor.go index 6beb114..b0941cd 100644 --- a/pkg/api/usecase/user/interactor.go +++ b/pkg/api/usecase/user/interactor.go @@ -5,6 +5,7 @@ import ( "todone/pkg/domain/entity" "todone/pkg/domain/repository" userservice "todone/pkg/domain/service/user" + "todone/pkg/terrors" ) type Interactor interface { @@ -29,12 +30,12 @@ func (i *intereractor) CreateNewUser(ctx context.Context, uid, title, descriptio err := i.masterTxManager.Transaction(ctx, func(ctx context.Context, masterTx repository.MasterTx) error { // 新規ユーザ作成 if err := i.userService.CreateNewUser(ctx, masterTx, uid, title, description); err != nil { - return err + return terrors.Stack(err) } return nil }) if err != nil { - return err + return terrors.Stack(err) } return nil } @@ -47,12 +48,12 @@ func (i *intereractor) GetUserProfile(ctx context.Context, uid string) (*entity. // ログイン済ユーザのプロフィール情報取得 userData, err = i.userService.GetByUID(ctx, masterTx, uid) if err != nil { - return err + return terrors.Stack(err) } return nil }) if err != nil { - return nil, err + return nil, terrors.Stack(err) } return userData, nil } @@ -65,12 +66,12 @@ func (i *intereractor) GetAll(ctx context.Context) (entity.UserSlice, error) { // (管理者用)ユーザ全件取得 userSlice, err = i.userService.GetAll(ctx, masterTx) if err != nil { - return err + return terrors.Stack(err) } return nil }) if err != nil { - return nil, err + return nil, terrors.Stack(err) } return userSlice, nil } diff --git a/pkg/domain/service/board/service.go b/pkg/domain/service/board/service.go index f0706ec..6715d41 100644 --- a/pkg/domain/service/board/service.go +++ b/pkg/domain/service/board/service.go @@ -2,9 +2,11 @@ package board import ( "context" + "net/http" "todone/pkg/domain/entity" "todone/pkg/domain/repository" "todone/pkg/domain/repository/board" + "todone/pkg/terrors" ) type Service interface { @@ -25,8 +27,13 @@ func New(boardRepository board.Repository) Service { } func (s *service) CreateNewBoard(ctx context.Context, masterTx repository.MasterTx, userID int, title, description string) error { + // titleの空文字チェック + if title == "" { + return terrors.Newf(http.StatusBadRequest, "ボードタイトルは必須項目です。", "Board title is required.") + } + if err := s.boardRepository.InsertBoard(ctx, masterTx, userID, title, description); err != nil { - return err + return terrors.Stack(err) } return nil } @@ -34,7 +41,7 @@ func (s *service) CreateNewBoard(ctx context.Context, masterTx repository.Master func (s *service) GetByPK(ctx context.Context, masterTx repository.MasterTx, id int) (*entity.Board, error) { boardData, err := s.boardRepository.SelectByPK(ctx, masterTx, id) if err != nil { - return nil, err + return nil, terrors.Stack(err) } return boardData, nil } @@ -42,7 +49,7 @@ func (s *service) GetByPK(ctx context.Context, masterTx repository.MasterTx, id func (s *service) GetByUserID(ctx context.Context, masterTx repository.MasterTx, userID int) (entity.BoardSlice, error) { boardSlice, err := s.boardRepository.SelectByUserID(ctx, masterTx, userID) if err != nil { - return nil, err + return nil, terrors.Stack(err) } return boardSlice, nil } @@ -50,7 +57,7 @@ func (s *service) GetByUserID(ctx context.Context, masterTx repository.MasterTx, func (s *service) GetAll(ctx context.Context, masterTx repository.MasterTx) (entity.BoardSlice, error) { boardSlice, err := s.boardRepository.SelectAll(ctx, masterTx) if err != nil { - return nil, err + return nil, terrors.Stack(err) } return boardSlice, nil } diff --git a/pkg/domain/service/user/service.go b/pkg/domain/service/user/service.go index 8551890..1194ec9 100644 --- a/pkg/domain/service/user/service.go +++ b/pkg/domain/service/user/service.go @@ -5,6 +5,7 @@ import ( "todone/pkg/domain/entity" "todone/pkg/domain/repository" "todone/pkg/domain/repository/user" + "todone/pkg/terrors" ) type Service interface { @@ -26,7 +27,7 @@ func New(userRepository user.Repository) Service { func (s *service) CreateNewUser(ctx context.Context, masterTx repository.MasterTx, uid, name, thumbnail string) error { if err := s.userRepository.InsertUser(ctx, masterTx, uid, name, thumbnail); err != nil { - return err + return terrors.Stack(err) } return nil } @@ -34,7 +35,7 @@ func (s *service) CreateNewUser(ctx context.Context, masterTx repository.MasterT func (s *service) GetByPK(ctx context.Context, masterTx repository.MasterTx, userID int) (*entity.User, error) { userData, err := s.userRepository.SelectByPK(ctx, masterTx, userID) if err != nil { - return nil, err + return nil, terrors.Stack(err) } return userData, nil } @@ -42,7 +43,7 @@ func (s *service) GetByPK(ctx context.Context, masterTx repository.MasterTx, use func (s *service) GetByUID(ctx context.Context, masterTx repository.MasterTx, uid string) (*entity.User, error) { userData, err := s.userRepository.SelectByUID(ctx, masterTx, uid) if err != nil { - return nil, err + return nil, terrors.Stack(err) } return userData, nil } @@ -50,7 +51,7 @@ func (s *service) GetByUID(ctx context.Context, masterTx repository.MasterTx, ui func (s *service) GetAll(ctx context.Context, masterTx repository.MasterTx) (entity.UserSlice, error) { userSlice, err := s.userRepository.SelectAll(ctx, masterTx) if err != nil { - return nil, err + return nil, terrors.Stack(err) } return userSlice, nil } diff --git a/pkg/infrastructure/mysql/board/repository.go b/pkg/infrastructure/mysql/board/repository.go index 59cbe96..d66b798 100644 --- a/pkg/infrastructure/mysql/board/repository.go +++ b/pkg/infrastructure/mysql/board/repository.go @@ -7,6 +7,7 @@ import ( "todone/pkg/domain/repository" "todone/pkg/domain/repository/board" "todone/pkg/infrastructure/mysql" + "todone/pkg/terrors" "github.com/volatiletech/null" "github.com/volatiletech/sqlboiler/boil" @@ -33,10 +34,10 @@ func (p *boardRepositoryImpliment) InsertBoard(ctx context.Context, masterTx rep exec, err := mysql.ExtractExecutor(masterTx) if err != nil { - return err + return terrors.Stack(err) } if err := newBoardData.Insert(ctx, exec, boil.Infer()); err != nil { - return err + return terrors.Stack(err) } return nil @@ -46,7 +47,7 @@ func (p *boardRepositoryImpliment) InsertBoard(ctx context.Context, masterTx rep func (p *boardRepositoryImpliment) SelectByPK(ctx context.Context, masterTx repository.MasterTx, id int) (*entity.Board, error) { exec, err := mysql.ExtractExecutor(masterTx) if err != nil { - return nil, err + return nil, terrors.Stack(err) } boardData, err := model.Boards( qm.Load(model.BoardRels.UsersBoards), @@ -56,7 +57,7 @@ func (p *boardRepositoryImpliment) SelectByPK(ctx context.Context, masterTx repo model.BoardWhere.ID.EQ(id), ).One(ctx, exec) if err != nil { - return nil, err + return nil, terrors.Stack(err) } return entity.ConvertToBoardEntity(boardData), nil @@ -66,14 +67,14 @@ func (p *boardRepositoryImpliment) SelectByPK(ctx context.Context, masterTx repo func (p *boardRepositoryImpliment) SelectByUserID(ctx context.Context, masterTx repository.MasterTx, userID int) (entity.BoardSlice, error) { exec, err := mysql.ExtractExecutor(masterTx) if err != nil { - return nil, err + return nil, terrors.Stack(err) } boards, err := model.Boards( qm.Load(model.BoardRels.User), model.BoardWhere.UserID.EQ(userID), ).All(ctx, exec) if err != nil { - return nil, err + return nil, terrors.Stack(err) } return entity.ConvertToBoardSliceEntity(boards), nil @@ -83,12 +84,12 @@ func (p *boardRepositoryImpliment) SelectByUserID(ctx context.Context, masterTx func (p *boardRepositoryImpliment) SelectAll(ctx context.Context, masterTx repository.MasterTx) (entity.BoardSlice, error) { exec, err := mysql.ExtractExecutor(masterTx) if err != nil { - return nil, err + return nil, terrors.Stack(err) } queries := []qm.QueryMod{} boards, err := model.Boards(queries...).All(ctx, exec) if err != nil { - return nil, err + return nil, terrors.Stack(err) } return entity.ConvertToBoardSliceEntity(boards), nil diff --git a/pkg/infrastructure/mysql/mysql_tx_manager.go b/pkg/infrastructure/mysql/mysql_tx_manager.go index 48ca5fe..4731b96 100644 --- a/pkg/infrastructure/mysql/mysql_tx_manager.go +++ b/pkg/infrastructure/mysql/mysql_tx_manager.go @@ -3,10 +3,9 @@ package mysql import ( "context" "database/sql" - "errors" - "fmt" - "log" + "net/http" "todone/pkg/domain/repository" + "todone/pkg/terrors" "github.com/volatiletech/sqlboiler/boil" ) @@ -22,14 +21,14 @@ func NewDBMasterTxManager(db *sql.DB) repository.MasterTxManager { func (m *dbMasterTxManager) Transaction(ctx context.Context, f func(ctx context.Context, masterTx repository.MasterTx) error) error { tx, err := m.db.BeginTx(ctx, nil) if err != nil { - return err + return terrors.Stack(err) } defer func() { // panic if p := recover(); p != nil { e := tx.Rollback() if e != nil { - log.Fatal(fmt.Sprintf("failed to MySQL Rollback: %v", e)) + err = terrors.Wrapf(e, http.StatusInternalServerError, "Mysqlのトランザクションロールバックに失敗しました。", "failed to MySQL Rollback") } panic(p) // re-throw panic after Rollback } @@ -37,20 +36,18 @@ func (m *dbMasterTxManager) Transaction(ctx context.Context, f func(ctx context. if err != nil { e := tx.Rollback() if e != nil { - log.Fatal(fmt.Sprintf("failed to MySQL Rollback: %v", e)) + err = terrors.Wrapf(e, http.StatusInternalServerError, "Mysqlのトランザクションロールバックに失敗しました。", "failed to MySQL Rollback") } - return } // 正常 e := tx.Commit() if e != nil { - log.Fatal(fmt.Sprintf("failed to MySQL Commit: %v", e)) + err = terrors.Wrapf(e, http.StatusInternalServerError, "Mysqlのトランザクションコミットに失敗しました。", "failed to MySQL Commit") } - }() err = f(ctx, &dbMasterTx{tx}) if err != nil { - return err + return terrors.Stack(err) } return nil } @@ -75,7 +72,7 @@ func ExtractTx(masterTx repository.MasterTx) (*sql.Tx, error) { // キャストする tx, ok := masterTx.(*dbMasterTx) if !ok { - return nil, errors.New("masterTx cannot cast to dbMasterTx") + return nil, terrors.Newf(http.StatusInternalServerError, "masterTxからdbMasterTxへのキャストに失敗しました。", "masterTx cannot cast to dbMasterTx") } return tx.tx, nil } diff --git a/pkg/infrastructure/mysql/user/repository.go b/pkg/infrastructure/mysql/user/repository.go index 116d8e0..f9d258f 100644 --- a/pkg/infrastructure/mysql/user/repository.go +++ b/pkg/infrastructure/mysql/user/repository.go @@ -7,6 +7,7 @@ import ( "todone/pkg/domain/repository" "todone/pkg/domain/repository/user" "todone/pkg/infrastructure/mysql" + "todone/pkg/terrors" "github.com/volatiletech/null" "github.com/volatiletech/sqlboiler/boil" @@ -32,10 +33,10 @@ func (u userRepositoryImpliment) InsertUser(ctx context.Context, masterTx reposi exec, err := mysql.ExtractExecutor(masterTx) if err != nil { - return err + return terrors.Stack(err) } if err := newUserData.Insert(ctx, exec, boil.Infer()); err != nil { - return err + return terrors.Stack(err) } return nil @@ -44,11 +45,11 @@ func (u userRepositoryImpliment) InsertUser(ctx context.Context, masterTx reposi func (u userRepositoryImpliment) SelectByPK(ctx context.Context, masterTx repository.MasterTx, userID int) (*entity.User, error) { exec, err := mysql.ExtractExecutor(masterTx) if err != nil { - return nil, err + return nil, terrors.Stack(err) } userData, err := model.FindUser(ctx, exec, userID) if err != nil { - return nil, err + return nil, terrors.Stack(err) } return entity.ConvertToUserEntity(userData), nil @@ -57,11 +58,11 @@ func (u userRepositoryImpliment) SelectByPK(ctx context.Context, masterTx reposi func (u userRepositoryImpliment) SelectByUID(ctx context.Context, masterTx repository.MasterTx, uid string) (*entity.User, error) { exec, err := mysql.ExtractExecutor(masterTx) if err != nil { - return nil, err + return nil, terrors.Stack(err) } userData, err := model.Users(model.UserWhere.UID.EQ(uid)).One(ctx, exec) if err != nil { - return nil, err + return nil, terrors.Stack(err) } return entity.ConvertToUserEntity(userData), nil @@ -70,12 +71,12 @@ func (u userRepositoryImpliment) SelectByUID(ctx context.Context, masterTx repos func (u userRepositoryImpliment) SelectAll(ctx context.Context, masterTx repository.MasterTx) (entity.UserSlice, error) { exec, err := mysql.ExtractExecutor(masterTx) if err != nil { - return nil, err + return nil, terrors.Stack(err) } queries := []qm.QueryMod{} users, err := model.Users(queries...).All(ctx, exec) if err != nil { - return nil, err + return nil, terrors.Stack(err) } return entity.ConvertToUserSliceEntity(users), nil diff --git a/pkg/terrors/terrors.go b/pkg/terrors/terrors.go new file mode 100644 index 0000000..4db41c3 --- /dev/null +++ b/pkg/terrors/terrors.go @@ -0,0 +1,91 @@ +package terrors + +import ( + "errors" + "fmt" + + "golang.org/x/xerrors" +) + +// TodoneError サーバ-クライアント間エラーハンドリング用エラー +type TodoneError struct { + // エラーコード + ErrorCode int + // システムエラーメッセージ(日本語) + ErrorMessageJP string + // システムエラーメッセージ(英語) + ErrorMessageEN string + // xerrors拡張用フィールド + err error + // それぞれでfmt.Errorf("%w", err)を記述する必要があるためxerrors使う。 + frame xerrors.Frame +} + +// New TodoneErrorを生成する +func New(errorCode int) error { + return newError(nil, errorCode, "", "") +} + +// Newf TodoneErrorをエラーメッセージ付きで生成する +func Newf(errorCode int, messageJP string, messageEN string) error { + return newError(nil, errorCode, messageJP, messageEN) +} + +// Wrap エラーをTodoneエラーでラップする +func Wrap(cause error, errorCode int) error { + return newError(cause, errorCode, "", "") +} + +// Wrapf エラーをTodoneエラーで、エラーメッセージ付きでラップする +func Wrapf(cause error, errorCode int, messageJP, messageEN string) error { + return newError(cause, errorCode, messageJP, messageEN) +} + +func newError(cause error, errorCode int, errorMessageJP, errorMessageEN string) error { + return &TodoneError{ + ErrorCode: errorCode, + ErrorMessageJP: errorMessageJP, + ErrorMessageEN: errorMessageEN, + err: cause, + frame: xerrors.Caller(2), + } +} + +// Stack エラーをStackする +// スタックフレームを明示的に積んでいく必要があるためエラー出力に記録したいエラーハンドリング箇所ではStackを行う +func Stack(err error) error { + var errorCode int + var errorMessageJP, errorMessageEN string + var todoneError *TodoneError + if ok := errors.As(err, &todoneError); ok { + errorCode = todoneError.ErrorCode + errorMessageJP = todoneError.ErrorMessageJP + errorMessageEN = todoneError.ErrorMessageEN + } + return &TodoneError{ + ErrorCode: errorCode, + ErrorMessageJP: errorMessageJP, + ErrorMessageEN: errorMessageEN, + err: err, + frame: xerrors.Caller(1), + } +} + +// Error エラーメッセージを取得する +func (e *TodoneError) Error() string { + return fmt.Sprintf("messageJP=%s, messageEN=%s", e.ErrorMessageJP, e.ErrorMessageEN) +} + +func (e *TodoneError) Unwrap() error { + return e.err +} + +func (e *TodoneError) Format(s fmt.State, v rune) { + xerrors.FormatError(e, s, v) +} + +func (e *TodoneError) FormatError(p xerrors.Printer) error { + p.Print(e.ErrorMessageJP, e.ErrorMessageEN) + e.frame.Format(p) + return e.err +} From 48b9536b0b011f5f9529bf07795d9dba7ff70a12 Mon Sep 17 00:00:00 2001 From: Takumaron Date: Sun, 26 Apr 2020 17:50:07 +0900 Subject: [PATCH 03/15] =?UTF-8?q?=E3=83=A6=E3=83=BC=E3=82=B6=E9=80=81?= =?UTF-8?q?=E4=BF=A1=E6=83=85=E5=A0=B1=E3=81=AE=E3=83=90=E3=83=AA=E3=83=87?= =?UTF-8?q?=E3=83=BC=E3=82=B7=E3=83=A7=E3=83=B3=E3=82=92=E5=AE=9F=E8=A3=85?= =?UTF-8?q?=EF=BC=88=E3=83=A6=E3=83=BC=E3=82=B6=E3=80=81=E3=83=9C=E3=83=BC?= =?UTF-8?q?=E3=83=89=E4=BD=9C=E6=88=90=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/api/usecase/board/interactor.go | 11 +++++++++++ pkg/api/usecase/user/interactor.go | 11 ++++++++--- pkg/domain/service/board/service.go | 6 ------ 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/pkg/api/usecase/board/interactor.go b/pkg/api/usecase/board/interactor.go index a6b61b1..51be639 100644 --- a/pkg/api/usecase/board/interactor.go +++ b/pkg/api/usecase/board/interactor.go @@ -2,6 +2,7 @@ package board import ( "context" + "net/http" "todone/pkg/domain/entity" "todone/pkg/domain/repository" boardservice "todone/pkg/domain/service/board" @@ -31,12 +32,22 @@ func New(masterTxManager repository.MasterTxManager, boardService boardservice.S } func (i *intereractor) CreateNewBoard(ctx context.Context, uid string, title, description string) error { + // titleの空文字チェック + if title == "" { + return terrors.Newf(http.StatusBadRequest, "ボードタイトルは必須項目です。", "Board title is required.") + } + err := i.masterTxManager.Transaction(ctx, func(ctx context.Context, masterTx repository.MasterTx) error { // ログイン済ユーザのID取得 userData, err := i.userService.GetByUID(ctx, masterTx, uid) if err != nil { return terrors.Stack(err) } + // ユーザ存在チェック + if userData == nil || userData.ID <= 0 { + return terrors.Newf(http.StatusBadRequest, "ユーザが見つかりませんでした。", "User not found.") + } + // 新規ボードの作成 if err := i.boardService.CreateNewBoard(ctx, masterTx, userData.ID, title, description); err != nil { return terrors.Stack(err) diff --git a/pkg/api/usecase/user/interactor.go b/pkg/api/usecase/user/interactor.go index b0941cd..b5b009a 100644 --- a/pkg/api/usecase/user/interactor.go +++ b/pkg/api/usecase/user/interactor.go @@ -2,6 +2,7 @@ package user import ( "context" + "net/http" "todone/pkg/domain/entity" "todone/pkg/domain/repository" userservice "todone/pkg/domain/service/user" @@ -9,7 +10,7 @@ import ( ) type Interactor interface { - CreateNewUser(ctx context.Context, uid, title, description string) error + CreateNewUser(ctx context.Context, uid, name, thumbnail string) error GetUserProfile(ctx context.Context, uid string) (*entity.User, error) GetAll(ctx context.Context) (entity.UserSlice, error) } @@ -26,10 +27,14 @@ func New(masterTxManager repository.MasterTxManager, userService userservice.Ser } } -func (i *intereractor) CreateNewUser(ctx context.Context, uid, title, description string) error { +func (i *intereractor) CreateNewUser(ctx context.Context, uid, name, thumbnail string) error { + if uid == "" { + return terrors.Newf(http.StatusBadRequest, "uidが空文字になっています。", "UID is required.") + } + err := i.masterTxManager.Transaction(ctx, func(ctx context.Context, masterTx repository.MasterTx) error { // 新規ユーザ作成 - if err := i.userService.CreateNewUser(ctx, masterTx, uid, title, description); err != nil { + if err := i.userService.CreateNewUser(ctx, masterTx, uid, name, thumbnail); err != nil { return terrors.Stack(err) } return nil diff --git a/pkg/domain/service/board/service.go b/pkg/domain/service/board/service.go index 6715d41..2c5747b 100644 --- a/pkg/domain/service/board/service.go +++ b/pkg/domain/service/board/service.go @@ -2,7 +2,6 @@ package board import ( "context" - "net/http" "todone/pkg/domain/entity" "todone/pkg/domain/repository" "todone/pkg/domain/repository/board" @@ -27,11 +26,6 @@ func New(boardRepository board.Repository) Service { } func (s *service) CreateNewBoard(ctx context.Context, masterTx repository.MasterTx, userID int, title, description string) error { - // titleの空文字チェック - if title == "" { - return terrors.Newf(http.StatusBadRequest, "ボードタイトルは必須項目です。", "Board title is required.") - } - if err := s.boardRepository.InsertBoard(ctx, masterTx, userID, title, description); err != nil { return terrors.Stack(err) } From c7327c568755c60e6eed308b31cc0acac3310129 Mon Sep 17 00:00:00 2001 From: Takumaron Date: Sun, 26 Apr 2020 20:35:19 +0900 Subject: [PATCH 04/15] =?UTF-8?q?golangci-lint=E3=81=AE=E3=82=A2=E3=83=83?= =?UTF-8?q?=E3=83=97=E3=83=87=E3=83=BC=E3=83=88=E3=81=AB=E5=90=88=E3=82=8F?= =?UTF-8?q?=E3=81=9B=E3=81=A6=E3=83=A2=E3=82=B8=E3=83=A5=E3=83=BC=E3=83=AB?= =?UTF-8?q?=E3=83=A2=E3=83=BC=E3=83=89=E3=81=A7=E3=81=AE=E3=83=80=E3=82=A6?= =?UTF-8?q?=E3=83=B3=E3=83=AD=E3=83=BC=E3=83=89=E3=81=AB=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/build.yml | 2 +- Makefile | 2 +- go.mod | 32 ++++- go.sum | 258 ++++++++++++++++++++++++++++++++++++ 4 files changed, 289 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f3600a8..ed9bbd3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -38,7 +38,7 @@ jobs: # Run lint - name: Go Lint run: | - GO111MODULE=off go get -u github.com/golangci/golangci-lint/cmd/golangci-lint + GO111MODULE=on go get -u github.com/golangci/golangci-lint/cmd/golangci-lint ~/go/bin/golangci-lint run pkg/... # build test and build diff --git a/Makefile b/Makefile index fddc63a..7253785 100644 --- a/Makefile +++ b/Makefile @@ -36,7 +36,7 @@ test: ## testの実行 lint: ## lintの実行 # golangci-lintのインストール - GO111MODULE=off go get -u github.com/golangci/golangci-lint/cmd/golangci-lint + GO111MODULE=on go get -u github.com/golangci/golangci-lint/cmd/golangci-lint # pkg配下をチェック。設定は .golangci.yml に記載 golangci-lint run diff --git a/go.mod b/go.mod index 3797e41..832d3ee 100644 --- a/go.mod +++ b/go.mod @@ -7,27 +7,53 @@ require ( cloud.google.com/go/firestore v1.2.0 // indirect firebase.google.com/go v3.12.0+incompatible github.com/DATA-DOG/go-sqlmock v1.4.1 // indirect + github.com/bombsimon/wsl/v3 v3.1.0 // indirect github.com/denisenkom/go-mssqldb v0.0.0-20200206145737-bbfc9a55622e // indirect + github.com/fatih/color v1.9.0 // indirect github.com/friendsofgo/errors v0.9.2 + github.com/fsnotify/fsnotify v1.4.9 // indirect github.com/gin-contrib/cors v1.3.1 github.com/gin-gonic/gin v1.6.2 + github.com/go-critic/go-critic v0.4.3 // indirect github.com/go-sql-driver/mysql v1.5.0 github.com/gofrs/uuid v3.2.0+incompatible // indirect + github.com/gogo/protobuf v1.3.1 // indirect github.com/golang/mock v1.4.3 + github.com/golangci/gocyclo v0.0.0-20180528144436-0a533e8fa43d // indirect + github.com/golangci/golangci-lint v1.25.0 // indirect + github.com/golangci/revgrep v0.0.0-20180812185044-276a5c0a1039 // indirect github.com/google/wire v0.4.0 + github.com/gostaticanalysis/analysisutil v0.0.3 // indirect + github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af // indirect github.com/joho/godotenv v1.3.0 github.com/kat-co/vala v0.0.0-20170210184112-42e1d8b61f12 + github.com/konsorten/go-windows-terminal-sequences v1.0.2 // indirect github.com/lib/pq v1.3.0 // indirect + github.com/mattn/go-colorable v0.1.6 // indirect + github.com/mitchellh/mapstructure v1.2.2 // indirect github.com/nullbio/inflect v0.0.0-20170731032957-3edb4592a77b // indirect + github.com/pelletier/go-toml v1.7.0 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/ryancurrah/gomodguard v1.0.4 // indirect + github.com/securego/gosec v0.0.0-20200401082031-e946c8c39989 // indirect + github.com/sirupsen/logrus v1.5.0 // indirect + github.com/spf13/afero v1.2.2 // indirect github.com/spf13/cast v1.3.1 // indirect - github.com/spf13/cobra v0.0.7 // indirect - github.com/spf13/viper v1.6.2 - github.com/stretchr/testify v1.4.0 + github.com/spf13/cobra v1.0.0 // indirect + github.com/spf13/jwalterweatherman v1.1.0 // indirect + github.com/spf13/viper v1.6.3 + github.com/stretchr/testify v1.5.1 + github.com/timakin/bodyclose v0.0.0-20200424151742-cb6215831a94 // indirect github.com/vattle/sqlboiler v2.5.0+incompatible // indirect github.com/volatiletech/inflect v0.0.0-20170731032912-e7201282ae8d // indirect github.com/volatiletech/null v8.0.0+incompatible github.com/volatiletech/sqlboiler v3.7.0+incompatible + golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f // indirect + golang.org/x/tools v0.0.0-20200425043458-8463f397d07c // indirect golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 google.golang.org/api v0.21.0 google.golang.org/genproto v0.0.0-20200407120235-9eb9bb161a06 + gopkg.in/ini.v1 v1.55.0 // indirect + mvdan.cc/unparam v0.0.0-20200314162735-0ac8026f7d06 // indirect + sourcegraph.com/sqs/pbtypes v1.0.0 // indirect ) diff --git a/go.sum b/go.sum index bcd66cb..f41b113 100644 --- a/go.sum +++ b/go.sum @@ -39,11 +39,18 @@ github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym github.com/DATA-DOG/go-sqlmock v1.4.1 h1:ThlnYciV1iM/V0OSF/dtkqWb6xo5qITT1TJBG1MRDJM= github.com/DATA-DOG/go-sqlmock v1.4.1/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/OpenPeeDeeP/depguard v1.0.1 h1:VlW4R6jmBIv3/u1JNlawEvJMM4J+dPORPaZasQee8Us= +github.com/OpenPeeDeeP/depguard v1.0.1/go.mod h1:xsIw86fROiiwelg+jB2uM9PiKihMMmUx/1V+TNhjQvM= +github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/bombsimon/wsl/v3 v3.0.0 h1:w9f49xQatuaeTJFaNP4SpiWSR5vfT6IstPtM62JjcqA= +github.com/bombsimon/wsl/v3 v3.0.0/go.mod h1:st10JtZYLE4D5sC7b8xV4zTKZwAQjCH/Hy2Pm1FNZIc= +github.com/bombsimon/wsl/v3 v3.1.0 h1:E5SRssoBgtVFPcYWUOFJEcgaySgdtTNYzsSKDOY7ss8= +github.com/bombsimon/wsl/v3 v3.1.0/go.mod h1:st10JtZYLE4D5sC7b8xV4zTKZwAQjCH/Hy2Pm1FNZIc= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= @@ -53,10 +60,15 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -69,10 +81,14 @@ github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymF github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fatih/color v1.9.0 h1:8xPHl4/q1VyqGIPif1F+1V3Y3lSmrq01EabUW3CoW5s= +github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/friendsofgo/errors v0.9.2 h1:X6NYxef4efCBdwI7BgS820zFaN7Cphrmb+Pljdzjtgk= github.com/friendsofgo/errors v0.9.2/go.mod h1:yCvFW5AkDIL9qn7suHVLiI/gH228n7PC4Pn44IGoTOI= github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/cors v1.3.1 h1:doAsuITavI4IOcd0Y19U4B+O0dNWihRyX//nn4sEmgA= github.com/gin-contrib/cors v1.3.1/go.mod h1:jjEJ4268OPZUcU7k9Pm653S7lXUGcqMADzFA61xsmDk= @@ -82,14 +98,21 @@ github.com/gin-gonic/gin v1.5.0 h1:fi+bqFAx/oLK54somfCtEZs9HeH1LHVoEPUgARpTqyc= github.com/gin-gonic/gin v1.5.0/go.mod h1:Nd6IXA8m5kNZdNEHMBd93KT+mdY3+bewLgRvmCsR2Do= github.com/gin-gonic/gin v1.6.2 h1:88crIK23zO6TqlQBt+f9FrPJNKm9ZEr7qjp9vl/d5TM= github.com/gin-gonic/gin v1.6.2/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= +github.com/go-critic/go-critic v0.4.1 h1:4DTQfT1wWwLg/hzxwD9bkdhDQrdJtxe6DUTadPlrIeE= +github.com/go-critic/go-critic v0.4.1/go.mod h1:7/14rZGnZbY6E38VEGk2kVhoq6itzc1E68facVDK23g= +github.com/go-critic/go-critic v0.4.3 h1:sGEEdiuvLV0OC7/yC6MnK3K6LCPBplspK45B0XVdFAc= +github.com/go-critic/go-critic v0.4.3/go.mod h1:j4O3D4RoIwRqlZw5jJpx0BNfXWWbpcJoKu5cYSe4YmQ= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-kit/kit v0.8.0 h1:Wz+5lgoB0kkuqLEc6NVmwRknTKP6dTGbSqvhZtBI/j0= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-lintpack/lintpack v0.5.2 h1:DI5mA3+eKdWeJ40nU4d6Wc26qmdG8RCi/btYq0TuRN0= +github.com/go-lintpack/lintpack v0.5.2/go.mod h1:NwZuYi2nUHho8XEIZ6SIxihrnPoqBTDqfpXvXAN0sXM= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0 h1:MP4Eh7ZCb31lleYCFuwm0oe4/YGak+5l1vA2NOE80nA= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.12.1 h1:2FITxuFt/xuCNP1Acdhv62OzaCiviiE4kotfhkmOqEc= @@ -102,13 +125,42 @@ github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD87 github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= github.com/go-playground/validator/v10 v10.2.0 h1:KgJ0snyC2R9VXYN2rneOtQcw5aHQB1Vv0sFl1UcHBOY= github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= +github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-toolsmith/astcast v1.0.0 h1:JojxlmI6STnFVG9yOImLeGREv8W2ocNUM+iOhR6jE7g= +github.com/go-toolsmith/astcast v1.0.0/go.mod h1:mt2OdQTeAQcY4DQgPSArJjHCcOwlX+Wl/kwN+LbLGQ4= +github.com/go-toolsmith/astcopy v1.0.0 h1:OMgl1b1MEpjFQ1m5ztEO06rz5CUd3oBv9RF7+DyvdG8= +github.com/go-toolsmith/astcopy v1.0.0/go.mod h1:vrgyG+5Bxrnz4MZWPF+pI4R8h3qKRjjyvV/DSez4WVQ= +github.com/go-toolsmith/astequal v0.0.0-20180903214952-dcb477bfacd6/go.mod h1:H+xSiq0+LtiDC11+h1G32h7Of5O3CYFJ99GVbS5lDKY= +github.com/go-toolsmith/astequal v1.0.0 h1:4zxD8j3JRFNyLN46lodQuqz3xdKSrur7U/sr0SDS/gQ= +github.com/go-toolsmith/astequal v1.0.0/go.mod h1:H+xSiq0+LtiDC11+h1G32h7Of5O3CYFJ99GVbS5lDKY= +github.com/go-toolsmith/astfmt v0.0.0-20180903215011-8f8ee99c3086/go.mod h1:mP93XdblcopXwlyN4X4uodxXQhldPGZbcEJIimQHrkg= +github.com/go-toolsmith/astfmt v1.0.0 h1:A0vDDXt+vsvLEdbMFJAUBI/uTbRw1ffOPnxsILnFL6k= +github.com/go-toolsmith/astfmt v1.0.0/go.mod h1:cnWmsOAuq4jJY6Ct5YWlVLmcmLMn1JUPuQIHCY7CJDw= +github.com/go-toolsmith/astinfo v0.0.0-20180906194353-9809ff7efb21/go.mod h1:dDStQCHtmZpYOmjRP/8gHHnCCch3Zz3oEgCdZVdtweU= +github.com/go-toolsmith/astp v0.0.0-20180903215135-0af7e3c24f30/go.mod h1:SV2ur98SGypH1UjcPpCatrV5hPazG6+IfNHbkDXBRrk= +github.com/go-toolsmith/astp v1.0.0 h1:alXE75TXgcmupDsMK1fRAy0YUzLzqPVvBKoyWV+KPXg= +github.com/go-toolsmith/astp v1.0.0/go.mod h1:RSyrtpVlfTFGDYRbrjyWP1pYu//tSFcvdYrA8meBmLI= +github.com/go-toolsmith/pkgload v0.0.0-20181119091011-e9e65178eee8/go.mod h1:WoMrjiy4zvdS+Bg6z9jZH82QXwkcgCBX6nOfnmdaHks= +github.com/go-toolsmith/pkgload v1.0.0/go.mod h1:5eFArkbO80v7Z0kdngIxsRXRMTaX4Ilcwuh3clNrQJc= +github.com/go-toolsmith/strparse v1.0.0 h1:Vcw78DnpCAKlM20kSbAyO4mPfJn/lyYA4BJUDxe2Jb4= +github.com/go-toolsmith/strparse v1.0.0/go.mod h1:YI2nUKP9YGZnL/L1/DLFBfixrcjslWct4wyljWhSRy8= +github.com/go-toolsmith/typep v1.0.0 h1:zKymWyA1TRYvqYrYDrfEMZULyrhcnGY3x7LDKU2XQaA= +github.com/go-toolsmith/typep v1.0.0/go.mod h1:JSQCQMUPdRlMZFswiq3TGpNp1GMktqkR2Ns5AIQkATU= +github.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= +github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= +github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= +github.com/gofrs/flock v0.0.0-20190320160742-5135e617513b h1:ekuhfTjngPhisSjOJ0QWKpPQE8/rbknHaes6WVJj5Hw= +github.com/gofrs/flock v0.0.0-20190320160742-5135e617513b/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= github.com/gofrs/uuid v3.2.0+incompatible h1:y12jRkkFxsd7GpqdSZ+/KCs/fJbqpEXSGd4+jfEaewE= github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1 h1:/s5zKNz0uPFCZ5hddgPdo2TK2TVrUNMn0OOX8/aZMTE= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY= github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= @@ -135,6 +187,40 @@ github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaW github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.3.5 h1:F768QJ1E9tib+q5Sc8MkdJi1RxLTbRcTf8LJV56aRls= github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2 h1:23T5iq8rbUYlhpt5DB4XJkc6BU31uODLD1o1gKvZmD0= +github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2/go.mod h1:k9Qvh+8juN+UKMCS/3jFtGICgW8O96FVaZsaxdzDkR4= +github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a h1:w8hkcTqaFpzKqonE9uMCefW1WDie15eSP/4MssdenaM= +github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a/go.mod h1:ryS0uhF+x9jgbj/N71xsEqODy9BN81/GonCZiOzirOk= +github.com/golangci/errcheck v0.0.0-20181223084120-ef45e06d44b6 h1:YYWNAGTKWhKpcLLt7aSj/odlKrSrelQwlovBpDuf19w= +github.com/golangci/errcheck v0.0.0-20181223084120-ef45e06d44b6/go.mod h1:DbHgvLiFKX1Sh2T1w8Q/h4NAI8MHIpzCdnBUDTXU3I0= +github.com/golangci/go-misc v0.0.0-20180628070357-927a3d87b613 h1:9kfjN3AdxcbsZBf8NjltjWihK2QfBBBZuv91cMFfDHw= +github.com/golangci/go-misc v0.0.0-20180628070357-927a3d87b613/go.mod h1:SyvUF2NxV+sN8upjjeVYr5W7tyxaT1JVtvhKhOn2ii8= +github.com/golangci/goconst v0.0.0-20180610141641-041c5f2b40f3 h1:pe9JHs3cHHDQgOFXJJdYkK6fLz2PWyYtP4hthoCMvs8= +github.com/golangci/goconst v0.0.0-20180610141641-041c5f2b40f3/go.mod h1:JXrF4TWy4tXYn62/9x8Wm/K/dm06p8tCKwFRDPZG/1o= +github.com/golangci/gocyclo v0.0.0-20180528134321-2becd97e67ee h1:J2XAy40+7yz70uaOiMbNnluTg7gyQhtGqLQncQh+4J8= +github.com/golangci/gocyclo v0.0.0-20180528134321-2becd97e67ee/go.mod h1:ozx7R9SIwqmqf5pRP90DhR2Oay2UIjGuKheCBCNwAYU= +github.com/golangci/gocyclo v0.0.0-20180528144436-0a533e8fa43d h1:pXTK/gkVNs7Zyy7WKgLXmpQ5bHTrq5GDsp8R9Qs67g0= +github.com/golangci/gocyclo v0.0.0-20180528144436-0a533e8fa43d/go.mod h1:ozx7R9SIwqmqf5pRP90DhR2Oay2UIjGuKheCBCNwAYU= +github.com/golangci/gofmt v0.0.0-20190930125516-244bba706f1a h1:iR3fYXUjHCR97qWS8ch1y9zPNsgXThGwjKPrYfqMPks= +github.com/golangci/gofmt v0.0.0-20190930125516-244bba706f1a/go.mod h1:9qCChq59u/eW8im404Q2WWTrnBUQKjpNYKMbU4M7EFU= +github.com/golangci/golangci-lint v1.25.0 h1:fwVdXtCBBCmk9e/7bTjkeCMx52bhq1IqmEQOVDbHXcg= +github.com/golangci/golangci-lint v1.25.0/go.mod h1:BaJNZmLU6vdaTLEGJKTTL/05I3B2OfXaD9SrNVkwr7w= +github.com/golangci/ineffassign v0.0.0-20190609212857-42439a7714cc h1:gLLhTLMk2/SutryVJ6D4VZCU3CUqr8YloG7FPIBWFpI= +github.com/golangci/ineffassign v0.0.0-20190609212857-42439a7714cc/go.mod h1:e5tpTHCfVze+7EpLEozzMB3eafxo2KT5veNg1k6byQU= +github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0 h1:MfyDlzVjl1hoaPzPD4Gpb/QgoRfSBR0jdhwGyAWwMSA= +github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0/go.mod h1:66R6K6P6VWk9I95jvqGxkqJxVWGFy9XlDwLwVz1RCFg= +github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca h1:kNY3/svz5T29MYHubXix4aDDuE3RWHkPvopM/EDv/MA= +github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca/go.mod h1:tvlJhZqDe4LMs4ZHD0oMUlt9G2LWuDGoisJTBzLMV9o= +github.com/golangci/misspell v0.0.0-20180809174111-950f5d19e770 h1:EL/O5HGrF7Jaq0yNhBLucz9hTuRzj2LdwGBOaENgxIk= +github.com/golangci/misspell v0.0.0-20180809174111-950f5d19e770/go.mod h1:dEbvlSfYbMQDtrpRMQU675gSDLDNa8sCPPChZ7PhiVA= +github.com/golangci/prealloc v0.0.0-20180630174525-215b22d4de21 h1:leSNB7iYzLYSSx3J/s5sVf4Drkc68W2wm4Ixh/mr0us= +github.com/golangci/prealloc v0.0.0-20180630174525-215b22d4de21/go.mod h1:tf5+bzsHdTM0bsB7+8mt0GUMvjCgwLpTapNZHU8AajI= +github.com/golangci/revgrep v0.0.0-20180526074752-d9c87f5ffaf0 h1:HVfrLniijszjS1aiNg8JbBMO2+E1WIQ+j/gL4SQqGPg= +github.com/golangci/revgrep v0.0.0-20180526074752-d9c87f5ffaf0/go.mod h1:qOQCunEYvmd/TLamH+7LlVccLvUH5kZNhbCgTHoBbp4= +github.com/golangci/revgrep v0.0.0-20180812185044-276a5c0a1039 h1:XQKc8IYQOeRwVs36tDrEmTgDgP88d5iEURwpmtiAlOM= +github.com/golangci/revgrep v0.0.0-20180812185044-276a5c0a1039/go.mod h1:qOQCunEYvmd/TLamH+7LlVccLvUH5kZNhbCgTHoBbp4= +github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4 h1:zwtduBRr5SSWhqsYNgcuWO2kFlpdOZbP0+yRjmvPGys= +github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4/go.mod h1:Izgrg8RkN3rCIMLGE9CyYmU9pY2Jer6DgANEnZ/L/cQ= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= @@ -153,6 +239,7 @@ github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= +github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/wire v0.4.0 h1:kXcsA/rIGzJImVqPdhfnr6q0xsS9gU0515q1EPpJ9fE= github.com/google/wire v0.4.0/go.mod h1:ngWDr9Qvq3yZA10YrxfyGELY/AFWGVpy9c1LTRi1EoU= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= @@ -161,6 +248,10 @@ github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5m github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gostaticanalysis/analysisutil v0.0.0-20190318220348-4088753ea4d3 h1:JVnpOZS+qxli+rgVl98ILOXVNbW+kb5wcxeGx8ShUIw= +github.com/gostaticanalysis/analysisutil v0.0.0-20190318220348-4088753ea4d3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE= +github.com/gostaticanalysis/analysisutil v0.0.3 h1:iwp+5/UAyzQSFgQ4uR2sni99sJ8Eo9DEacKWM5pekIg= +github.com/gostaticanalysis/analysisutil v0.0.3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= @@ -169,8 +260,17 @@ github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+ github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/jingyugao/rowserrcheck v0.0.0-20191204022205-72ab7603b68a h1:GmsqmapfzSJkm28dhRoHz2tLRbJmqhU86IPgBtN3mmk= +github.com/jingyugao/rowserrcheck v0.0.0-20191204022205-72ab7603b68a/go.mod h1:xRskid8CManxVta/ALEhJha/pweKBaVG6fWgc0yH25s= +github.com/jirfag/go-printf-func-name v0.0.0-20191110105641-45db9963cdd3 h1:jNYPNLe3d8smommaoQlK7LOA5ESyUJJ+Wf79ZtA7Vp4= +github.com/jirfag/go-printf-func-name v0.0.0-20191110105641-45db9963cdd3/go.mod h1:HEWGJkRDzjJY2sqdDwxccsGicWEf9BQOZsq2tV+xzM0= +github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af h1:KA9BjwUk7KlCh6S9EAGWBt1oExIUv9WyNCiRz5amv48= +github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af/go.mod h1:HEWGJkRDzjJY2sqdDwxccsGicWEf9BQOZsq2tV+xzM0= +github.com/jmoiron/sqlx v1.2.1-0.20190826204134-d7d95172beb5/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks= github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= @@ -187,43 +287,93 @@ github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7V github.com/kat-co/vala v0.0.0-20170210184112-42e1d8b61f12 h1:DQVOxR9qdYEybJUr/c7ku34r3PfajaMYXZwgDM7KuSk= github.com/kat-co/vala v0.0.0-20170210184112-42e1d8b61f12/go.mod h1:u9MdXq/QageOOSGp7qG4XAQsYUMP+V5zEel/Vrl6OOc= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/cpuid v0.0.0-20180405133222-e7e905edc00e/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.2 h1:DB17ag19krx9CFsz4o3enTrPXyIXCl+2iCXH/aMAp9s= +github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/leodido/go-urn v1.1.0 h1:Sm1gr51B1kKyfD2BlRcLSiEkffoG96g6TPv6eRoEiB8= github.com/leodido/go-urn v1.1.0/go.mod h1:+cyI34gQWZcE1eQU7NVgKkkzdXDQHr1dBMtdAPozLkw= github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= +github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.3.0 h1:/qkRGz8zljWiDcFvgpwUpwIAPu3r07TDvs3Rws+o/pU= github.com/lib/pq v1.3.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/logrusorgru/aurora v0.0.0-20181002194514-a7b3b318ed4e/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/maratori/testpackage v1.0.1 h1:QtJ5ZjqapShm0w5DosRjg0PRlSdAdlx+W6cCKoALdbQ= +github.com/maratori/testpackage v1.0.1/go.mod h1:ddKdw+XG0Phzhx8BFDTKgpWP4i7MpApTE5fXSKAqwDU= +github.com/matoous/godox v0.0.0-20190911065817-5d6d842e92eb h1:RHba4YImhrUVQDHUCe2BNSOz4tVy2yGyXhvYDvxGgeE= +github.com/matoous/godox v0.0.0-20190911065817-5d6d842e92eb/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s= +github.com/mattn/go-colorable v0.1.4 h1:snbPLB8fVfU9iwbbo30TPtbLRzwWu6aJS6Xh4eaaviA= +github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.6 h1:6Su7aK7lXmJ/U79bYtBjLNaha4Fs1Rg9plHpcH+vvnE= +github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.9 h1:d5US/mDsogSGW37IV293h//ZFaeajb69h+EHFsv2xGg= github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= +github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= +github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-ps v0.0.0-20190716172923-621e5597135b/go.mod h1:r1VsdOzOPt1ZSrGZWFoNhsAedKnEd6r9Np1+5blZCWk= github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.2.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742 h1:Esafd1046DLDQ0W1YjYsBW+p8U2u7vzgW2SQVmlNazg= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/mozilla/tls-observatory v0.0.0-20190404164649-a3c1b6cfecfd/go.mod h1:SrKMQvPiws7F7iqYp8/TX+IhxCYhzr6N/1yb8cwHsGk= +github.com/mozilla/tls-observatory v0.0.0-20200317151703-4fa42e1c2dee/go.mod h1:SrKMQvPiws7F7iqYp8/TX+IhxCYhzr6N/1yb8cwHsGk= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/nakabonne/nestif v0.3.0 h1:+yOViDGhg8ygGrmII72nV9B/zGxY188TYpfolntsaPw= +github.com/nakabonne/nestif v0.3.0/go.mod h1:dI314BppzXjJ4HsCnbo7XzrJHPszZsjnk5wEBSYHI2c= +github.com/nbutton23/zxcvbn-go v0.0.0-20180912185939-ae427f1e4c1d h1:AREM5mwr4u1ORQBMvzfzBgpsctsbQikCVpvC+tX285E= +github.com/nbutton23/zxcvbn-go v0.0.0-20180912185939-ae427f1e4c1d/go.mod h1:o96djdrsSGy3AWPyBgZMAGfxZNfgntdJG+11KU4QvbU= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nullbio/inflect v0.0.0-20170731032957-3edb4592a77b h1:/vTNA41SN6jHp+9pCTzuUDU/JG3jAirMGpXgyZ5NtNM= github.com/nullbio/inflect v0.0.0-20170731032957-3edb4592a77b/go.mod h1:swC7cAYI9CGqNNwWp9olT8FdQWP0WAdO0m6NPlwuWaw= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.8.1/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= +github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= +github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml v1.7.0 h1:7utD74fnzVc/cpcyy8sjrlFr5vYpypUixARcHIMIGuI= +github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= +github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d/go.mod h1:3OzsM7FXDQlpCiw2j81fOmAwQLnZnLGXVKUzeKQXIAw= github.com/pkg/errors v0.8.0 h1:WdK/asTD0HN+q6hsWO3/vpuAkAr+tw6aNJNDFFf0+qw= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= @@ -236,46 +386,102 @@ github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y8 github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/quasilyte/go-consistent v0.0.0-20190521200055-c6f3937de18c/go.mod h1:5STLWrekHfjyYwxBRVRXNOSewLJ3PWfDJd1VyTS21fI= +github.com/quasilyte/go-ruleguard v0.1.2-0.20200318202121-b00d7a75d3d8 h1:DvnesvLtRPQOvaUbfXfh0tpMHg29by0H7F2U+QIkSu8= +github.com/quasilyte/go-ruleguard v0.1.2-0.20200318202121-b00d7a75d3d8/go.mod h1:CGFX09Ci3pq9QZdj86B+VGIdNj4VyCo2iPOGS9esB/k= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.5.2/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ryancurrah/gomodguard v1.0.2 h1:vumZpZardqQ9EfFIZDNEpKaMxfqqEBMhu0uSRcDO5x4= +github.com/ryancurrah/gomodguard v1.0.2/go.mod h1:9T/Cfuxs5StfsocWr4WzDL36HqnX0fVb9d5fSEaLhoE= +github.com/ryancurrah/gomodguard v1.0.4 h1:oCreMAt9GuFXDe9jW4HBpc3GjdX3R/sUEcLAGh1zPx8= +github.com/ryancurrah/gomodguard v1.0.4/go.mod h1:9T/Cfuxs5StfsocWr4WzDL36HqnX0fVb9d5fSEaLhoE= +github.com/securego/gosec v0.0.0-20200103095621-79fbf3af8d83 h1:AtnWoOvTioyDXFvu96MWEeE8qj4COSQnJogzLy/u41A= +github.com/securego/gosec v0.0.0-20200103095621-79fbf3af8d83/go.mod h1:vvbZ2Ae7AzSq3/kywjUDxSNq2SJ27RxCz2un0H3ePqE= +github.com/securego/gosec v0.0.0-20200401082031-e946c8c39989 h1:rq2/kILQnPtq5oL4+IAjgVOjh5e2yj2aaCYi7squEvI= +github.com/securego/gosec v0.0.0-20200401082031-e946c8c39989/go.mod h1:i9l/TNj+yDFh9SZXUTvspXTjbFXgZGP/UvhU1S65A4A= +github.com/shirou/gopsutil v0.0.0-20190901111213-e4ec7b275ada/go.mod h1:WWnYX4lzhCH5h/3YBfyVA3VbLYjlMZZAQcW9ojMexNc= +github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc= +github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= +github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0 h1:juTguoYk5qI21pwyTXY3B3Y5cOTH3ZUyZCg1v/mihuo= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.5.0 h1:1N5EYkVAPEywqZRJd7cwnRtCb6xJx7NH3T3WUTF980Q= +github.com/sirupsen/logrus v1.5.0/go.mod h1:+F7Ogzej0PZc/94MaYx/nvG9jOFMD2osvC3s+Squfpo= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/sourcegraph/go-diff v0.5.1 h1:gO6i5zugwzo1RVTvgvfwCOSVegNuvnNi6bAD1QCmkHs= +github.com/sourcegraph/go-diff v0.5.1/go.mod h1:j2dHj3m8aZgQO8lMTcTnBcXkRRRqi34cd2MNlA9u1mE= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.3.1 h1:nFm6S0SMdyzrzcmThSipiEubIDy8WEXKNZ0UOgiRpng= github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/cobra v0.0.7 h1:FfTH+vuMXOas8jmfb5/M7dzEYx7LpcLb7a0LPe34uOU= github.com/spf13/cobra v0.0.7/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= +github.com/spf13/cobra v1.0.0 h1:6m/oheQuQ13N9ks4hubMG6BnvwOeaJrqSPLahSnczz8= +github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= +github.com/spf13/viper v1.6.1/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfDi5k= github.com/spf13/viper v1.6.2 h1:7aKfF+e8/k68gda3LOjo5RxiUqddoFxVq4BKBPrxk5E= github.com/spf13/viper v1.6.2/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfDi5k= +github.com/spf13/viper v1.6.3 h1:pDDu1OyEDTKzpJwdq4TiuLyMsUgRa/BT5cn5O62NoHs= +github.com/spf13/viper v1.6.3/go.mod h1:jUMtyi0/lB5yZH/FjyGAoH7IMNrIhlBf6pXZmbMDvzw= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48= +github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/tetafro/godot v0.2.5 h1:7+EYJM/Z4gYZhBFdRrVm6JTj5ZLw/QI1j4RfEOXJviE= +github.com/tetafro/godot v0.2.5/go.mod h1:pT6/T8+h6//L/LwQcFc4C0xpfy1euZwzS1sHdrFCms0= +github.com/timakin/bodyclose v0.0.0-20190930140734-f7f2e9bca95e h1:RumXZ56IrCj4CL+g1b9OL/oH0QnsF976bC8xQFYUD5Q= +github.com/timakin/bodyclose v0.0.0-20190930140734-f7f2e9bca95e/go.mod h1:Qimiffbc6q9tBWlVV6x0P9sat/ao1xEkREYPPj9hphk= +github.com/timakin/bodyclose v0.0.0-20200424151742-cb6215831a94 h1:ig99OeTyDwQWhPe2iw9lwfQVF1KB3Q4fpP3X7/2VBG8= +github.com/timakin/bodyclose v0.0.0-20200424151742-cb6215831a94/go.mod h1:Qimiffbc6q9tBWlVV6x0P9sat/ao1xEkREYPPj9hphk= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tommy-muehle/go-mnd v1.3.1-0.20200224220436-e6f9a994e8fa h1:RC4maTWLKKwb7p1cnoygsbKIgNlJqSYBeAFON3Ar8As= +github.com/tommy-muehle/go-mnd v1.3.1-0.20200224220436-e6f9a994e8fa/go.mod h1:dSUh0FtTP8VhvkL1S+gUR1OKd9ZnSaozuI6r3m6wOig= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= +github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/ultraware/funlen v0.0.2 h1:Av96YVBwwNSe4MLR7iI/BIa3VyI7/djnto/pK3Uxbdo= +github.com/ultraware/funlen v0.0.2/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lPbfaF6xhA= +github.com/ultraware/whitespace v0.0.4 h1:If7Va4cM03mpgrNH9k49/VOicWpGoG70XPBFFODYDsg= +github.com/ultraware/whitespace v0.0.4/go.mod h1:aVMh/gQve5Maj9hQ/hg+F75lr/X5A89uZnzAmWSineA= +github.com/uudashr/gocognit v1.0.1 h1:MoG2fZ0b/Eo7NXoIwCVFLG5JED3qgQz5/NEE+rOsjPs= +github.com/uudashr/gocognit v1.0.1/go.mod h1:j44Ayx2KW4+oB6SWMv8KsmHzZrOInQav7D3cQMJ5JUM= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasthttp v1.2.0/go.mod h1:4vX61m6KN+xDduDNwXrhIAVZaZaZiQ1luJk8LWSxF3s= +github.com/valyala/quicktemplate v1.2.0/go.mod h1:EH+4AkTd43SvgIbQHYu59/cJyxDoOVRUAfrukLPuGJ4= +github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= github.com/vattle/sqlboiler v2.5.0+incompatible h1:Wt7km7/dtfzZD8gt1u3NWeK0AuF5UEr26kVD360w2PA= github.com/vattle/sqlboiler v2.5.0+incompatible/go.mod h1:Q3YlQv8muqQLqYsCfq0TjX87Ec/oUbIcLuZFZIUV614= github.com/volatiletech/inflect v0.0.0-20170731032912-e7201282ae8d h1:gI4/tqP6lCY5k6Sg+4k9qSoBXmPwG+xXgMpK7jivD4M= @@ -287,6 +493,7 @@ github.com/volatiletech/sqlboiler v3.7.0+incompatible/go.mod h1:jLfDkkHWPbS2cWRL github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.opencensus.io v0.21.0 h1:mU6zScU4U1YAFPHEHYk+3JC4SY7JxgkqS10ZOSyksNg= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= @@ -301,6 +508,7 @@ go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/ go.uber.org/zap v1.10.0 h1:ORx85nbTijNz8ljznvCMR1ZBIPKFn3jQrag10X2AsuM= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c h1:Vj5n4GlwjmQteupaxJ9+0FNOmBrHfq7vN4btdGoDZgI= golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -335,9 +543,12 @@ golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKG golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0 h1:KU7oHjnv3XNWfa5COkzUifxZmxp1TyI7ImMXqFxLwvQ= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180911220305-26e67e76b6c3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -352,6 +563,7 @@ golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -377,11 +589,15 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -389,7 +605,11 @@ golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a h1:aYOabOQFp6Vj6W1F80affTUvO9UxmJRx8K0gsfABByQ= golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -404,6 +624,8 @@ golang.org/x/sys v0.0.0-20200317113312-5766fd39f98d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200331124033-c3d80250170d h1:nc5K6ox/4lTFbMVSL9WRR81ixkcwXThoiF6yf+R9scA= golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f h1:gWF768j/LaZugp8dyS4UwsslYCYz9XgFxvlgsn0n9H8= +golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2 h1:z99zHgr7hKfrUcX/KsoJk5FJfjTceCKIp96+biqP4To= @@ -414,25 +636,36 @@ golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181117154741-2ddaf7f79a09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190110163146-51295c7ec13a/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190221204921-83362c3779f5/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190311215038-5c2858a9cfe5/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190322203728-c1a832b0ad89/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190422233926-fe54fb35175b/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262 h1:qsl9y/CJx34tuA7QCPNp86JNJe4spst6Ff8MjvPUdPg= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190521203540-521d6ed310dd/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135 h1:5Beo0mZN8dRzgrMMkDp0jc8YXQKx9DiJ2k1dkvGsn5A= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190719005602-e377ae9d6386/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190910044552-dd2b5c81c578/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -440,6 +673,7 @@ golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200102140908-9497f49d5709/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= @@ -450,10 +684,16 @@ golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200313205530-4303120df7d8/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200317043434-63da46f3035e/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200325010219-a49f79bcc224/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4 h1:kDtqNkeBrZb8B+atrj50B5XLHpzXXqcCdZPP/ApQ5NY= golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200331202046-9d5940d49312/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200422022333-3d57cf2e726e h1:3Dzrrxi54Io7Aoyb0PYLsI47K2TxkRQg+cqUn+m04do= +golang.org/x/tools v0.0.0-20200422022333-3d57cf2e726e/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200425043458-8463f397d07c h1:iHhCR0b26amDCiiO+kBguKZom9aMF+NrFxh9zeKR/XU= +golang.org/x/tools v0.0.0-20200425043458-8463f397d07c/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7 h1:9zdDQZ7Thm29KFXgAX/+yaf3eVbP7djjWp/dXAppNCc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -523,20 +763,26 @@ gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLks gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/go-playground/assert.v1 v1.2.1 h1:xoYuJVE7KT85PYWrN730RguIQO0ePzVRfFMXadIrXTM= gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= gopkg.in/go-playground/validator.v9 v9.29.1 h1:SvGtYmN60a5CVKTOzMSyfzWDeZRxRuGvRQyEAKbw1xc= gopkg.in/go-playground/validator.v9 v9.29.1/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ= gopkg.in/ini.v1 v1.51.0 h1:AQvPpx3LzTDM0AjnIRlVFwFFGC+npRopjZxLJj6gdno= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.55.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= 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= gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -546,6 +792,18 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3 h1:sXmLre5bzIR6ypkjXCDI3jHPssRhc8KD/Ome589sc3U= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed h1:WX1yoOaKQfddO/mLzdV4wptyWgoH/6hwLs7QHTixo0I= +mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed/go.mod h1:Xkxe497xwlCKkIaQYRfC7CSLworTXY9RMqwhhCm+8Nc= +mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b h1:DxJ5nJdkhDlLok9K6qO+5290kphDJbHOQO1DFFFTeBo= +mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b/go.mod h1:2odslEg/xrtNQqCYg2/jCoyKnw3vv5biOc3JnIcYfL4= +mvdan.cc/unparam v0.0.0-20190720180237-d51796306d8f h1:Cq7MalBHYACRd6EesksG1Q8EoIAKOsiZviGKbOLIej4= +mvdan.cc/unparam v0.0.0-20190720180237-d51796306d8f/go.mod h1:4G1h5nDURzA3bwVMZIVpwbkw+04kSxk3rAtzlimaUJw= +mvdan.cc/unparam v0.0.0-20200314162735-0ac8026f7d06 h1:evGBPL1nfLr4BUt+I0IV8q6P3oOqXhmC+hc8aw7xO8A= +mvdan.cc/unparam v0.0.0-20200314162735-0ac8026f7d06/go.mod h1:A9jtdiT4gKMLUlAQjDEVC18O9SOJ8ZAiqWfq9g3rlj8= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= +sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4 h1:JPJh2pk3+X4lXAkZIk2RuE/7/FoK9maXw+TNPJhVS/c= +sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0= +sourcegraph.com/sqs/pbtypes v1.0.0 h1:f7lAwqviDEGvON4kRv0o5V7FT/IQK+tbkF664XMbP3o= +sourcegraph.com/sqs/pbtypes v1.0.0/go.mod h1:3AciMUv4qUuRHRHhOG4TZOB+72GdPVz5k+c648qsFS4= From fe35ae40e065aded5aa6f648a720ea47dfca9dcc Mon Sep 17 00:00:00 2001 From: Takumaron Date: Sun, 26 Apr 2020 20:54:52 +0900 Subject: [PATCH 05/15] =?UTF-8?q?fix=20golangci-lint=E3=81=AE=E3=83=A2?= =?UTF-8?q?=E3=82=B8=E3=83=A5=E3=83=BC=E3=83=AB=E3=83=80=E3=82=A6=E3=83=B3?= =?UTF-8?q?=E3=83=AD=E3=83=BC=E3=83=89=E3=82=B3=E3=83=9E=E3=83=B3=E3=83=89?= =?UTF-8?q?=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/build.yml | 2 +- Makefile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ed9bbd3..103c7f8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -38,7 +38,7 @@ jobs: # Run lint - name: Go Lint run: | - GO111MODULE=on go get -u github.com/golangci/golangci-lint/cmd/golangci-lint + GO111MODULE=on go get github.com/golangci/golangci-lint/cmd/golangci-lint ~/go/bin/golangci-lint run pkg/... # build test and build diff --git a/Makefile b/Makefile index 7253785..c749d26 100644 --- a/Makefile +++ b/Makefile @@ -36,7 +36,7 @@ test: ## testの実行 lint: ## lintの実行 # golangci-lintのインストール - GO111MODULE=on go get -u github.com/golangci/golangci-lint/cmd/golangci-lint + GO111MODULE=on go get github.com/golangci/golangci-lint/cmd/golangci-lint # pkg配下をチェック。設定は .golangci.yml に記載 golangci-lint run From 352da2fde9c959a9a819d8e3cd8d5cb85f16cb80 Mon Sep 17 00:00:00 2001 From: Takumaron Date: Sun, 26 Apr 2020 22:46:34 +0900 Subject: [PATCH 06/15] =?UTF-8?q?=E7=8B=AC=E8=87=AA=E3=82=A8=E3=83=A9?= =?UTF-8?q?=E3=83=BC=E3=81=B8=E3=81=AE=E3=82=AD=E3=83=A3=E3=82=B9=E3=83=88?= =?UTF-8?q?=E5=87=A6=E7=90=86(As)=E3=82=92xerrors=E3=81=AE=E6=96=B9?= =?UTF-8?q?=E3=82=92=E4=BD=BF=E3=81=86=E3=82=88=E3=81=86=E3=81=AB=E3=81=97?= =?UTF-8?q?=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/api/middleware/error.go | 4 ++-- pkg/terrors/terrors.go | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/pkg/api/middleware/error.go b/pkg/api/middleware/error.go index 8bf7aed..feda444 100644 --- a/pkg/api/middleware/error.go +++ b/pkg/api/middleware/error.go @@ -1,11 +1,11 @@ package middleware import ( - "errors" "net/http" "todone/pkg/terrors" "github.com/gin-gonic/gin" + "golang.org/x/xerrors" ) func ErrorHandling() gin.HandlerFunc { @@ -15,7 +15,7 @@ func ErrorHandling() gin.HandlerFunc { err := c.Errors.Last() if err != nil { var todoneError *terrors.TodoneError - if ok := errors.As(err.Err, &todoneError); ok { + if ok := xerrors.As(err.Err, &todoneError); ok { c.AbortWithStatusJSON(todoneError.ErrorCode, todoneError) return } diff --git a/pkg/terrors/terrors.go b/pkg/terrors/terrors.go index 4db41c3..247bbd1 100644 --- a/pkg/terrors/terrors.go +++ b/pkg/terrors/terrors.go @@ -1,7 +1,6 @@ package terrors import ( - "errors" "fmt" "golang.org/x/xerrors" @@ -57,7 +56,7 @@ func Stack(err error) error { var errorCode int var errorMessageJP, errorMessageEN string var todoneError *TodoneError - if ok := errors.As(err, &todoneError); ok { + if ok := xerrors.As(err, &todoneError); ok { errorCode = todoneError.ErrorCode errorMessageJP = todoneError.ErrorMessageJP errorMessageEN = todoneError.ErrorMessageEN From 9f58feecc0745a9601700c7fb52bd85aa814f01f Mon Sep 17 00:00:00 2001 From: Takumaron Date: Mon, 27 Apr 2020 15:29:12 +0900 Subject: [PATCH 07/15] =?UTF-8?q?gocli-lint=E3=83=91=E3=83=83=E3=82=B1?= =?UTF-8?q?=E3=83=BC=E3=82=B8=E3=81=AE=E3=82=A4=E3=83=B3=E3=82=B9=E3=83=88?= =?UTF-8?q?=E3=83=BC=E3=83=AB=E3=81=8C=E5=BF=85=E8=A6=81=E3=81=8B=E3=81=A9?= =?UTF-8?q?=E3=81=86=E3=81=8B=E3=81=AE=E3=83=AD=E3=82=B8=E3=83=83=E3=82=AF?= =?UTF-8?q?=E3=82=92makefile=E3=81=AB=E8=BF=BD=E5=8A=A0=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index c749d26..8277d33 100644 --- a/Makefile +++ b/Makefile @@ -4,6 +4,13 @@ MOCK_FILE := mock_${SOURCE_FILE} MOCK_DIR := ${SOURCE_DIR}mock_$(lastword $(subst /, ,${SOURCE_DIR}))/ MOCK_TARGET := $(lastword $(subst /, ,${SOURCE_DIR})) +GOLINT_FILE_NAME := golangci-lint +GOLINT_FILE_PATH := $(shell ls $(GOPATH)/bin | grep ${GOLINT_FILE_NAME}) + +# gocli-lintパッケージがダウンロード済みであればダウンロードを実行しない +define golintExist + $(ifneq (${GOLINT_FILE_PATH},${GOLINT_FILE_NAME}),GO111MODULE=on go get github.com/golangci/golangci-lint/cmd/golangci-lint) +endef help: ## 使い方 @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST) @@ -35,8 +42,8 @@ test: ## testの実行 go test -v ./... lint: ## lintの実行 - # golangci-lintのインストール - GO111MODULE=on go get github.com/golangci/golangci-lint/cmd/golangci-lint + # golangci-lintのインストール(既にパッケージがあれば実行されない) + ${golintExist} # pkg配下をチェック。設定は .golangci.yml に記載 golangci-lint run From 4d596131c9a142ae893699caf8839ec23c5819fe Mon Sep 17 00:00:00 2001 From: Takumaron Date: Wed, 29 Apr 2020 10:31:45 +0900 Subject: [PATCH 08/15] =?UTF-8?q?go=20mod=20tidy=E3=81=AE=E5=AE=9F?= =?UTF-8?q?=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- go.mod | 27 +----- go.sum | 263 ++------------------------------------------------------- 2 files changed, 12 insertions(+), 278 deletions(-) diff --git a/go.mod b/go.mod index 832d3ee..e855245 100644 --- a/go.mod +++ b/go.mod @@ -7,44 +7,26 @@ require ( cloud.google.com/go/firestore v1.2.0 // indirect firebase.google.com/go v3.12.0+incompatible github.com/DATA-DOG/go-sqlmock v1.4.1 // indirect - github.com/bombsimon/wsl/v3 v3.1.0 // indirect - github.com/denisenkom/go-mssqldb v0.0.0-20200206145737-bbfc9a55622e // indirect - github.com/fatih/color v1.9.0 // indirect github.com/friendsofgo/errors v0.9.2 github.com/fsnotify/fsnotify v1.4.9 // indirect github.com/gin-contrib/cors v1.3.1 github.com/gin-gonic/gin v1.6.2 - github.com/go-critic/go-critic v0.4.3 // indirect github.com/go-sql-driver/mysql v1.5.0 github.com/gofrs/uuid v3.2.0+incompatible // indirect - github.com/gogo/protobuf v1.3.1 // indirect github.com/golang/mock v1.4.3 - github.com/golangci/gocyclo v0.0.0-20180528144436-0a533e8fa43d // indirect - github.com/golangci/golangci-lint v1.25.0 // indirect - github.com/golangci/revgrep v0.0.0-20180812185044-276a5c0a1039 // indirect github.com/google/wire v0.4.0 - github.com/gostaticanalysis/analysisutil v0.0.3 // indirect - github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af // indirect github.com/joho/godotenv v1.3.0 github.com/kat-co/vala v0.0.0-20170210184112-42e1d8b61f12 - github.com/konsorten/go-windows-terminal-sequences v1.0.2 // indirect - github.com/lib/pq v1.3.0 // indirect - github.com/mattn/go-colorable v0.1.6 // indirect + github.com/kr/text v0.2.0 // indirect github.com/mitchellh/mapstructure v1.2.2 // indirect - github.com/nullbio/inflect v0.0.0-20170731032957-3edb4592a77b // indirect + github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // indirect github.com/pelletier/go-toml v1.7.0 // indirect - github.com/pkg/errors v0.9.1 // indirect - github.com/ryancurrah/gomodguard v1.0.4 // indirect - github.com/securego/gosec v0.0.0-20200401082031-e946c8c39989 // indirect - github.com/sirupsen/logrus v1.5.0 // indirect github.com/spf13/afero v1.2.2 // indirect github.com/spf13/cast v1.3.1 // indirect - github.com/spf13/cobra v1.0.0 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect github.com/spf13/viper v1.6.3 github.com/stretchr/testify v1.5.1 - github.com/timakin/bodyclose v0.0.0-20200424151742-cb6215831a94 // indirect - github.com/vattle/sqlboiler v2.5.0+incompatible // indirect github.com/volatiletech/inflect v0.0.0-20170731032912-e7201282ae8d // indirect github.com/volatiletech/null v8.0.0+incompatible github.com/volatiletech/sqlboiler v3.7.0+incompatible @@ -53,7 +35,6 @@ require ( golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 google.golang.org/api v0.21.0 google.golang.org/genproto v0.0.0-20200407120235-9eb9bb161a06 + gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f // indirect gopkg.in/ini.v1 v1.55.0 // indirect - mvdan.cc/unparam v0.0.0-20200314162735-0ac8026f7d06 // indirect - sourcegraph.com/sqs/pbtypes v1.0.0 // indirect ) diff --git a/go.sum b/go.sum index f41b113..afd5a47 100644 --- a/go.sum +++ b/go.sum @@ -17,14 +17,17 @@ cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKV cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0 h1:K2NyuHRuv15ku6eUpe0DQk5ZykPMnSOnvuVf6IHcjaE= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0 h1:/May9ojXjRkPBNVrq+oWLqmWCkr4OU5uRY29bu0mRyQ= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/firestore v1.2.0 h1:zrl+2VJAYC/C6WzEPnkqZIBeHyHFs/UmtzJdXU4Bvmo= cloud.google.com/go/firestore v1.2.0/go.mod h1:iISCjWnTpnoJT1R287xRdjvQHJrxQOpeah4phb5D3h0= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1 h1:ukjixP1wl0LpnZ6LWtZJ0mX5tBmjp1f8Sqer8Z2OMUU= cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= @@ -39,18 +42,11 @@ github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym github.com/DATA-DOG/go-sqlmock v1.4.1 h1:ThlnYciV1iM/V0OSF/dtkqWb6xo5qITT1TJBG1MRDJM= github.com/DATA-DOG/go-sqlmock v1.4.1/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/OpenPeeDeeP/depguard v1.0.1 h1:VlW4R6jmBIv3/u1JNlawEvJMM4J+dPORPaZasQee8Us= -github.com/OpenPeeDeeP/depguard v1.0.1/go.mod h1:xsIw86fROiiwelg+jB2uM9PiKihMMmUx/1V+TNhjQvM= -github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= -github.com/bombsimon/wsl/v3 v3.0.0 h1:w9f49xQatuaeTJFaNP4SpiWSR5vfT6IstPtM62JjcqA= -github.com/bombsimon/wsl/v3 v3.0.0/go.mod h1:st10JtZYLE4D5sC7b8xV4zTKZwAQjCH/Hy2Pm1FNZIc= -github.com/bombsimon/wsl/v3 v3.1.0 h1:E5SRssoBgtVFPcYWUOFJEcgaySgdtTNYzsSKDOY7ss8= -github.com/bombsimon/wsl/v3 v3.1.0/go.mod h1:st10JtZYLE4D5sC7b8xV4zTKZwAQjCH/Hy2Pm1FNZIc= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= @@ -59,21 +55,14 @@ github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMn github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= -github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= -github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/denisenkom/go-mssqldb v0.0.0-20200206145737-bbfc9a55622e h1:LzwWXEScfcTu7vUZNlDDWDARoSGEtvlDKK2BYHowNeE= -github.com/denisenkom/go-mssqldb v0.0.0-20200206145737-bbfc9a55622e/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= @@ -81,9 +70,6 @@ github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymF github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.9.0 h1:8xPHl4/q1VyqGIPif1F+1V3Y3lSmrq01EabUW3CoW5s= -github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/friendsofgo/errors v0.9.2 h1:X6NYxef4efCBdwI7BgS820zFaN7Cphrmb+Pljdzjtgk= github.com/friendsofgo/errors v0.9.2/go.mod h1:yCvFW5AkDIL9qn7suHVLiI/gH228n7PC4Pn44IGoTOI= github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= @@ -98,21 +84,14 @@ github.com/gin-gonic/gin v1.5.0 h1:fi+bqFAx/oLK54somfCtEZs9HeH1LHVoEPUgARpTqyc= github.com/gin-gonic/gin v1.5.0/go.mod h1:Nd6IXA8m5kNZdNEHMBd93KT+mdY3+bewLgRvmCsR2Do= github.com/gin-gonic/gin v1.6.2 h1:88crIK23zO6TqlQBt+f9FrPJNKm9ZEr7qjp9vl/d5TM= github.com/gin-gonic/gin v1.6.2/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= -github.com/go-critic/go-critic v0.4.1 h1:4DTQfT1wWwLg/hzxwD9bkdhDQrdJtxe6DUTadPlrIeE= -github.com/go-critic/go-critic v0.4.1/go.mod h1:7/14rZGnZbY6E38VEGk2kVhoq6itzc1E68facVDK23g= -github.com/go-critic/go-critic v0.4.3 h1:sGEEdiuvLV0OC7/yC6MnK3K6LCPBplspK45B0XVdFAc= -github.com/go-critic/go-critic v0.4.3/go.mod h1:j4O3D4RoIwRqlZw5jJpx0BNfXWWbpcJoKu5cYSe4YmQ= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-kit/kit v0.8.0 h1:Wz+5lgoB0kkuqLEc6NVmwRknTKP6dTGbSqvhZtBI/j0= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-lintpack/lintpack v0.5.2 h1:DI5mA3+eKdWeJ40nU4d6Wc26qmdG8RCi/btYq0TuRN0= -github.com/go-lintpack/lintpack v0.5.2/go.mod h1:NwZuYi2nUHho8XEIZ6SIxihrnPoqBTDqfpXvXAN0sXM= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0 h1:MP4Eh7ZCb31lleYCFuwm0oe4/YGak+5l1vA2NOE80nA= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.12.1 h1:2FITxuFt/xuCNP1Acdhv62OzaCiviiE4kotfhkmOqEc= @@ -125,44 +104,14 @@ github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD87 github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= github.com/go-playground/validator/v10 v10.2.0 h1:KgJ0snyC2R9VXYN2rneOtQcw5aHQB1Vv0sFl1UcHBOY= github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= -github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-toolsmith/astcast v1.0.0 h1:JojxlmI6STnFVG9yOImLeGREv8W2ocNUM+iOhR6jE7g= -github.com/go-toolsmith/astcast v1.0.0/go.mod h1:mt2OdQTeAQcY4DQgPSArJjHCcOwlX+Wl/kwN+LbLGQ4= -github.com/go-toolsmith/astcopy v1.0.0 h1:OMgl1b1MEpjFQ1m5ztEO06rz5CUd3oBv9RF7+DyvdG8= -github.com/go-toolsmith/astcopy v1.0.0/go.mod h1:vrgyG+5Bxrnz4MZWPF+pI4R8h3qKRjjyvV/DSez4WVQ= -github.com/go-toolsmith/astequal v0.0.0-20180903214952-dcb477bfacd6/go.mod h1:H+xSiq0+LtiDC11+h1G32h7Of5O3CYFJ99GVbS5lDKY= -github.com/go-toolsmith/astequal v1.0.0 h1:4zxD8j3JRFNyLN46lodQuqz3xdKSrur7U/sr0SDS/gQ= -github.com/go-toolsmith/astequal v1.0.0/go.mod h1:H+xSiq0+LtiDC11+h1G32h7Of5O3CYFJ99GVbS5lDKY= -github.com/go-toolsmith/astfmt v0.0.0-20180903215011-8f8ee99c3086/go.mod h1:mP93XdblcopXwlyN4X4uodxXQhldPGZbcEJIimQHrkg= -github.com/go-toolsmith/astfmt v1.0.0 h1:A0vDDXt+vsvLEdbMFJAUBI/uTbRw1ffOPnxsILnFL6k= -github.com/go-toolsmith/astfmt v1.0.0/go.mod h1:cnWmsOAuq4jJY6Ct5YWlVLmcmLMn1JUPuQIHCY7CJDw= -github.com/go-toolsmith/astinfo v0.0.0-20180906194353-9809ff7efb21/go.mod h1:dDStQCHtmZpYOmjRP/8gHHnCCch3Zz3oEgCdZVdtweU= -github.com/go-toolsmith/astp v0.0.0-20180903215135-0af7e3c24f30/go.mod h1:SV2ur98SGypH1UjcPpCatrV5hPazG6+IfNHbkDXBRrk= -github.com/go-toolsmith/astp v1.0.0 h1:alXE75TXgcmupDsMK1fRAy0YUzLzqPVvBKoyWV+KPXg= -github.com/go-toolsmith/astp v1.0.0/go.mod h1:RSyrtpVlfTFGDYRbrjyWP1pYu//tSFcvdYrA8meBmLI= -github.com/go-toolsmith/pkgload v0.0.0-20181119091011-e9e65178eee8/go.mod h1:WoMrjiy4zvdS+Bg6z9jZH82QXwkcgCBX6nOfnmdaHks= -github.com/go-toolsmith/pkgload v1.0.0/go.mod h1:5eFArkbO80v7Z0kdngIxsRXRMTaX4Ilcwuh3clNrQJc= -github.com/go-toolsmith/strparse v1.0.0 h1:Vcw78DnpCAKlM20kSbAyO4mPfJn/lyYA4BJUDxe2Jb4= -github.com/go-toolsmith/strparse v1.0.0/go.mod h1:YI2nUKP9YGZnL/L1/DLFBfixrcjslWct4wyljWhSRy8= -github.com/go-toolsmith/typep v1.0.0 h1:zKymWyA1TRYvqYrYDrfEMZULyrhcnGY3x7LDKU2XQaA= -github.com/go-toolsmith/typep v1.0.0/go.mod h1:JSQCQMUPdRlMZFswiq3TGpNp1GMktqkR2Ns5AIQkATU= -github.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= -github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= -github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= -github.com/gofrs/flock v0.0.0-20190320160742-5135e617513b h1:ekuhfTjngPhisSjOJ0QWKpPQE8/rbknHaes6WVJj5Hw= -github.com/gofrs/flock v0.0.0-20190320160742-5135e617513b/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= github.com/gofrs/uuid v3.2.0+incompatible h1:y12jRkkFxsd7GpqdSZ+/KCs/fJbqpEXSGd4+jfEaewE= github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1 h1:/s5zKNz0uPFCZ5hddgPdo2TK2TVrUNMn0OOX8/aZMTE= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls= -github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY= -github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -187,40 +136,6 @@ github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaW github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.3.5 h1:F768QJ1E9tib+q5Sc8MkdJi1RxLTbRcTf8LJV56aRls= github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= -github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2 h1:23T5iq8rbUYlhpt5DB4XJkc6BU31uODLD1o1gKvZmD0= -github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2/go.mod h1:k9Qvh+8juN+UKMCS/3jFtGICgW8O96FVaZsaxdzDkR4= -github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a h1:w8hkcTqaFpzKqonE9uMCefW1WDie15eSP/4MssdenaM= -github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a/go.mod h1:ryS0uhF+x9jgbj/N71xsEqODy9BN81/GonCZiOzirOk= -github.com/golangci/errcheck v0.0.0-20181223084120-ef45e06d44b6 h1:YYWNAGTKWhKpcLLt7aSj/odlKrSrelQwlovBpDuf19w= -github.com/golangci/errcheck v0.0.0-20181223084120-ef45e06d44b6/go.mod h1:DbHgvLiFKX1Sh2T1w8Q/h4NAI8MHIpzCdnBUDTXU3I0= -github.com/golangci/go-misc v0.0.0-20180628070357-927a3d87b613 h1:9kfjN3AdxcbsZBf8NjltjWihK2QfBBBZuv91cMFfDHw= -github.com/golangci/go-misc v0.0.0-20180628070357-927a3d87b613/go.mod h1:SyvUF2NxV+sN8upjjeVYr5W7tyxaT1JVtvhKhOn2ii8= -github.com/golangci/goconst v0.0.0-20180610141641-041c5f2b40f3 h1:pe9JHs3cHHDQgOFXJJdYkK6fLz2PWyYtP4hthoCMvs8= -github.com/golangci/goconst v0.0.0-20180610141641-041c5f2b40f3/go.mod h1:JXrF4TWy4tXYn62/9x8Wm/K/dm06p8tCKwFRDPZG/1o= -github.com/golangci/gocyclo v0.0.0-20180528134321-2becd97e67ee h1:J2XAy40+7yz70uaOiMbNnluTg7gyQhtGqLQncQh+4J8= -github.com/golangci/gocyclo v0.0.0-20180528134321-2becd97e67ee/go.mod h1:ozx7R9SIwqmqf5pRP90DhR2Oay2UIjGuKheCBCNwAYU= -github.com/golangci/gocyclo v0.0.0-20180528144436-0a533e8fa43d h1:pXTK/gkVNs7Zyy7WKgLXmpQ5bHTrq5GDsp8R9Qs67g0= -github.com/golangci/gocyclo v0.0.0-20180528144436-0a533e8fa43d/go.mod h1:ozx7R9SIwqmqf5pRP90DhR2Oay2UIjGuKheCBCNwAYU= -github.com/golangci/gofmt v0.0.0-20190930125516-244bba706f1a h1:iR3fYXUjHCR97qWS8ch1y9zPNsgXThGwjKPrYfqMPks= -github.com/golangci/gofmt v0.0.0-20190930125516-244bba706f1a/go.mod h1:9qCChq59u/eW8im404Q2WWTrnBUQKjpNYKMbU4M7EFU= -github.com/golangci/golangci-lint v1.25.0 h1:fwVdXtCBBCmk9e/7bTjkeCMx52bhq1IqmEQOVDbHXcg= -github.com/golangci/golangci-lint v1.25.0/go.mod h1:BaJNZmLU6vdaTLEGJKTTL/05I3B2OfXaD9SrNVkwr7w= -github.com/golangci/ineffassign v0.0.0-20190609212857-42439a7714cc h1:gLLhTLMk2/SutryVJ6D4VZCU3CUqr8YloG7FPIBWFpI= -github.com/golangci/ineffassign v0.0.0-20190609212857-42439a7714cc/go.mod h1:e5tpTHCfVze+7EpLEozzMB3eafxo2KT5veNg1k6byQU= -github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0 h1:MfyDlzVjl1hoaPzPD4Gpb/QgoRfSBR0jdhwGyAWwMSA= -github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0/go.mod h1:66R6K6P6VWk9I95jvqGxkqJxVWGFy9XlDwLwVz1RCFg= -github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca h1:kNY3/svz5T29MYHubXix4aDDuE3RWHkPvopM/EDv/MA= -github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca/go.mod h1:tvlJhZqDe4LMs4ZHD0oMUlt9G2LWuDGoisJTBzLMV9o= -github.com/golangci/misspell v0.0.0-20180809174111-950f5d19e770 h1:EL/O5HGrF7Jaq0yNhBLucz9hTuRzj2LdwGBOaENgxIk= -github.com/golangci/misspell v0.0.0-20180809174111-950f5d19e770/go.mod h1:dEbvlSfYbMQDtrpRMQU675gSDLDNa8sCPPChZ7PhiVA= -github.com/golangci/prealloc v0.0.0-20180630174525-215b22d4de21 h1:leSNB7iYzLYSSx3J/s5sVf4Drkc68W2wm4Ixh/mr0us= -github.com/golangci/prealloc v0.0.0-20180630174525-215b22d4de21/go.mod h1:tf5+bzsHdTM0bsB7+8mt0GUMvjCgwLpTapNZHU8AajI= -github.com/golangci/revgrep v0.0.0-20180526074752-d9c87f5ffaf0 h1:HVfrLniijszjS1aiNg8JbBMO2+E1WIQ+j/gL4SQqGPg= -github.com/golangci/revgrep v0.0.0-20180526074752-d9c87f5ffaf0/go.mod h1:qOQCunEYvmd/TLamH+7LlVccLvUH5kZNhbCgTHoBbp4= -github.com/golangci/revgrep v0.0.0-20180812185044-276a5c0a1039 h1:XQKc8IYQOeRwVs36tDrEmTgDgP88d5iEURwpmtiAlOM= -github.com/golangci/revgrep v0.0.0-20180812185044-276a5c0a1039/go.mod h1:qOQCunEYvmd/TLamH+7LlVccLvUH5kZNhbCgTHoBbp4= -github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4 h1:zwtduBRr5SSWhqsYNgcuWO2kFlpdOZbP0+yRjmvPGys= -github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4/go.mod h1:Izgrg8RkN3rCIMLGE9CyYmU9pY2Jer6DgANEnZ/L/cQ= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= @@ -239,7 +154,6 @@ github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= -github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/wire v0.4.0 h1:kXcsA/rIGzJImVqPdhfnr6q0xsS9gU0515q1EPpJ9fE= github.com/google/wire v0.4.0/go.mod h1:ngWDr9Qvq3yZA10YrxfyGELY/AFWGVpy9c1LTRi1EoU= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= @@ -248,10 +162,6 @@ github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5m github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gostaticanalysis/analysisutil v0.0.0-20190318220348-4088753ea4d3 h1:JVnpOZS+qxli+rgVl98ILOXVNbW+kb5wcxeGx8ShUIw= -github.com/gostaticanalysis/analysisutil v0.0.0-20190318220348-4088753ea4d3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE= -github.com/gostaticanalysis/analysisutil v0.0.3 h1:iwp+5/UAyzQSFgQ4uR2sni99sJ8Eo9DEacKWM5pekIg= -github.com/gostaticanalysis/analysisutil v0.0.3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= @@ -260,17 +170,7 @@ github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+ github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/jingyugao/rowserrcheck v0.0.0-20191204022205-72ab7603b68a h1:GmsqmapfzSJkm28dhRoHz2tLRbJmqhU86IPgBtN3mmk= -github.com/jingyugao/rowserrcheck v0.0.0-20191204022205-72ab7603b68a/go.mod h1:xRskid8CManxVta/ALEhJha/pweKBaVG6fWgc0yH25s= -github.com/jirfag/go-printf-func-name v0.0.0-20191110105641-45db9963cdd3 h1:jNYPNLe3d8smommaoQlK7LOA5ESyUJJ+Wf79ZtA7Vp4= -github.com/jirfag/go-printf-func-name v0.0.0-20191110105641-45db9963cdd3/go.mod h1:HEWGJkRDzjJY2sqdDwxccsGicWEf9BQOZsq2tV+xzM0= -github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af h1:KA9BjwUk7KlCh6S9EAGWBt1oExIUv9WyNCiRz5amv48= -github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af/go.mod h1:HEWGJkRDzjJY2sqdDwxccsGicWEf9BQOZsq2tV+xzM0= -github.com/jmoiron/sqlx v1.2.1-0.20190826204134-d7d95172beb5/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks= github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= @@ -287,57 +187,29 @@ github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7V github.com/kat-co/vala v0.0.0-20170210184112-42e1d8b61f12 h1:DQVOxR9qdYEybJUr/c7ku34r3PfajaMYXZwgDM7KuSk= github.com/kat-co/vala v0.0.0-20170210184112-42e1d8b61f12/go.mod h1:u9MdXq/QageOOSGp7qG4XAQsYUMP+V5zEel/Vrl6OOc= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/cpuid v0.0.0-20180405133222-e7e905edc00e/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= -github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.2 h1:DB17ag19krx9CFsz4o3enTrPXyIXCl+2iCXH/aMAp9s= -github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/leodido/go-urn v1.1.0 h1:Sm1gr51B1kKyfD2BlRcLSiEkffoG96g6TPv6eRoEiB8= github.com/leodido/go-urn v1.1.0/go.mod h1:+cyI34gQWZcE1eQU7NVgKkkzdXDQHr1dBMtdAPozLkw= github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= -github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.3.0 h1:/qkRGz8zljWiDcFvgpwUpwIAPu3r07TDvs3Rws+o/pU= -github.com/lib/pq v1.3.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/logrusorgru/aurora v0.0.0-20181002194514-a7b3b318ed4e/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= -github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/maratori/testpackage v1.0.1 h1:QtJ5ZjqapShm0w5DosRjg0PRlSdAdlx+W6cCKoALdbQ= -github.com/maratori/testpackage v1.0.1/go.mod h1:ddKdw+XG0Phzhx8BFDTKgpWP4i7MpApTE5fXSKAqwDU= -github.com/matoous/godox v0.0.0-20190911065817-5d6d842e92eb h1:RHba4YImhrUVQDHUCe2BNSOz4tVy2yGyXhvYDvxGgeE= -github.com/matoous/godox v0.0.0-20190911065817-5d6d842e92eb/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s= -github.com/mattn/go-colorable v0.1.4 h1:snbPLB8fVfU9iwbbo30TPtbLRzwWu6aJS6Xh4eaaviA= -github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.6 h1:6Su7aK7lXmJ/U79bYtBjLNaha4Fs1Rg9plHpcH+vvnE= -github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.9 h1:d5US/mDsogSGW37IV293h//ZFaeajb69h+EHFsv2xGg= github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= -github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= -github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-ps v0.0.0-20190716172923-621e5597135b/go.mod h1:r1VsdOzOPt1ZSrGZWFoNhsAedKnEd6r9Np1+5blZCWk= github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.2.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= @@ -346,34 +218,16 @@ github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742 h1:Esafd1046DLDQ0W1YjYsBW+p8U2u7vzgW2SQVmlNazg= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/mozilla/tls-observatory v0.0.0-20190404164649-a3c1b6cfecfd/go.mod h1:SrKMQvPiws7F7iqYp8/TX+IhxCYhzr6N/1yb8cwHsGk= -github.com/mozilla/tls-observatory v0.0.0-20200317151703-4fa42e1c2dee/go.mod h1:SrKMQvPiws7F7iqYp8/TX+IhxCYhzr6N/1yb8cwHsGk= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/nakabonne/nestif v0.3.0 h1:+yOViDGhg8ygGrmII72nV9B/zGxY188TYpfolntsaPw= -github.com/nakabonne/nestif v0.3.0/go.mod h1:dI314BppzXjJ4HsCnbo7XzrJHPszZsjnk5wEBSYHI2c= -github.com/nbutton23/zxcvbn-go v0.0.0-20180912185939-ae427f1e4c1d h1:AREM5mwr4u1ORQBMvzfzBgpsctsbQikCVpvC+tX285E= -github.com/nbutton23/zxcvbn-go v0.0.0-20180912185939-ae427f1e4c1d/go.mod h1:o96djdrsSGy3AWPyBgZMAGfxZNfgntdJG+11KU4QvbU= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nullbio/inflect v0.0.0-20170731032957-3edb4592a77b h1:/vTNA41SN6jHp+9pCTzuUDU/JG3jAirMGpXgyZ5NtNM= -github.com/nullbio/inflect v0.0.0-20170731032957-3edb4592a77b/go.mod h1:swC7cAYI9CGqNNwWp9olT8FdQWP0WAdO0m6NPlwuWaw= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= -github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.8.1/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= -github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= -github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.7.0 h1:7utD74fnzVc/cpcyy8sjrlFr5vYpypUixARcHIMIGuI= github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= -github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d/go.mod h1:3OzsM7FXDQlpCiw2j81fOmAwQLnZnLGXVKUzeKQXIAw= github.com/pkg/errors v0.8.0 h1:WdK/asTD0HN+q6hsWO3/vpuAkAr+tw6aNJNDFFf0+qw= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= @@ -386,40 +240,15 @@ github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y8 github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/quasilyte/go-consistent v0.0.0-20190521200055-c6f3937de18c/go.mod h1:5STLWrekHfjyYwxBRVRXNOSewLJ3PWfDJd1VyTS21fI= -github.com/quasilyte/go-ruleguard v0.1.2-0.20200318202121-b00d7a75d3d8 h1:DvnesvLtRPQOvaUbfXfh0tpMHg29by0H7F2U+QIkSu8= -github.com/quasilyte/go-ruleguard v0.1.2-0.20200318202121-b00d7a75d3d8/go.mod h1:CGFX09Ci3pq9QZdj86B+VGIdNj4VyCo2iPOGS9esB/k= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.5.2/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryancurrah/gomodguard v1.0.2 h1:vumZpZardqQ9EfFIZDNEpKaMxfqqEBMhu0uSRcDO5x4= -github.com/ryancurrah/gomodguard v1.0.2/go.mod h1:9T/Cfuxs5StfsocWr4WzDL36HqnX0fVb9d5fSEaLhoE= -github.com/ryancurrah/gomodguard v1.0.4 h1:oCreMAt9GuFXDe9jW4HBpc3GjdX3R/sUEcLAGh1zPx8= -github.com/ryancurrah/gomodguard v1.0.4/go.mod h1:9T/Cfuxs5StfsocWr4WzDL36HqnX0fVb9d5fSEaLhoE= -github.com/securego/gosec v0.0.0-20200103095621-79fbf3af8d83 h1:AtnWoOvTioyDXFvu96MWEeE8qj4COSQnJogzLy/u41A= -github.com/securego/gosec v0.0.0-20200103095621-79fbf3af8d83/go.mod h1:vvbZ2Ae7AzSq3/kywjUDxSNq2SJ27RxCz2un0H3ePqE= -github.com/securego/gosec v0.0.0-20200401082031-e946c8c39989 h1:rq2/kILQnPtq5oL4+IAjgVOjh5e2yj2aaCYi7squEvI= -github.com/securego/gosec v0.0.0-20200401082031-e946c8c39989/go.mod h1:i9l/TNj+yDFh9SZXUTvspXTjbFXgZGP/UvhU1S65A4A= -github.com/shirou/gopsutil v0.0.0-20190901111213-e4ec7b275ada/go.mod h1:WWnYX4lzhCH5h/3YBfyVA3VbLYjlMZZAQcW9ojMexNc= -github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc= -github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= -github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0 h1:juTguoYk5qI21pwyTXY3B3Y5cOTH3ZUyZCg1v/mihuo= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= -github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/sirupsen/logrus v1.5.0 h1:1N5EYkVAPEywqZRJd7cwnRtCb6xJx7NH3T3WUTF980Q= -github.com/sirupsen/logrus v1.5.0/go.mod h1:+F7Ogzej0PZc/94MaYx/nvG9jOFMD2osvC3s+Squfpo= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/sourcegraph/go-diff v0.5.1 h1:gO6i5zugwzo1RVTvgvfwCOSVegNuvnNi6bAD1QCmkHs= -github.com/sourcegraph/go-diff v0.5.1/go.mod h1:j2dHj3m8aZgQO8lMTcTnBcXkRRRqi34cd2MNlA9u1mE= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= @@ -427,28 +256,16 @@ github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTd github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.3.1 h1:nFm6S0SMdyzrzcmThSipiEubIDy8WEXKNZ0UOgiRpng= github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/cobra v0.0.7 h1:FfTH+vuMXOas8jmfb5/M7dzEYx7LpcLb7a0LPe34uOU= -github.com/spf13/cobra v0.0.7/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= -github.com/spf13/cobra v1.0.0 h1:6m/oheQuQ13N9ks4hubMG6BnvwOeaJrqSPLahSnczz8= -github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= -github.com/spf13/viper v1.6.1/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfDi5k= -github.com/spf13/viper v1.6.2 h1:7aKfF+e8/k68gda3LOjo5RxiUqddoFxVq4BKBPrxk5E= -github.com/spf13/viper v1.6.2/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfDi5k= github.com/spf13/viper v1.6.3 h1:pDDu1OyEDTKzpJwdq4TiuLyMsUgRa/BT5cn5O62NoHs= github.com/spf13/viper v1.6.3/go.mod h1:jUMtyi0/lB5yZH/FjyGAoH7IMNrIhlBf6pXZmbMDvzw= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48= -github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= @@ -457,33 +274,11 @@ github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/tetafro/godot v0.2.5 h1:7+EYJM/Z4gYZhBFdRrVm6JTj5ZLw/QI1j4RfEOXJviE= -github.com/tetafro/godot v0.2.5/go.mod h1:pT6/T8+h6//L/LwQcFc4C0xpfy1euZwzS1sHdrFCms0= -github.com/timakin/bodyclose v0.0.0-20190930140734-f7f2e9bca95e h1:RumXZ56IrCj4CL+g1b9OL/oH0QnsF976bC8xQFYUD5Q= -github.com/timakin/bodyclose v0.0.0-20190930140734-f7f2e9bca95e/go.mod h1:Qimiffbc6q9tBWlVV6x0P9sat/ao1xEkREYPPj9hphk= -github.com/timakin/bodyclose v0.0.0-20200424151742-cb6215831a94 h1:ig99OeTyDwQWhPe2iw9lwfQVF1KB3Q4fpP3X7/2VBG8= -github.com/timakin/bodyclose v0.0.0-20200424151742-cb6215831a94/go.mod h1:Qimiffbc6q9tBWlVV6x0P9sat/ao1xEkREYPPj9hphk= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tommy-muehle/go-mnd v1.3.1-0.20200224220436-e6f9a994e8fa h1:RC4maTWLKKwb7p1cnoygsbKIgNlJqSYBeAFON3Ar8As= -github.com/tommy-muehle/go-mnd v1.3.1-0.20200224220436-e6f9a994e8fa/go.mod h1:dSUh0FtTP8VhvkL1S+gUR1OKd9ZnSaozuI6r3m6wOig= -github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= -github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= -github.com/ultraware/funlen v0.0.2 h1:Av96YVBwwNSe4MLR7iI/BIa3VyI7/djnto/pK3Uxbdo= -github.com/ultraware/funlen v0.0.2/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lPbfaF6xhA= -github.com/ultraware/whitespace v0.0.4 h1:If7Va4cM03mpgrNH9k49/VOicWpGoG70XPBFFODYDsg= -github.com/ultraware/whitespace v0.0.4/go.mod h1:aVMh/gQve5Maj9hQ/hg+F75lr/X5A89uZnzAmWSineA= -github.com/uudashr/gocognit v1.0.1 h1:MoG2fZ0b/Eo7NXoIwCVFLG5JED3qgQz5/NEE+rOsjPs= -github.com/uudashr/gocognit v1.0.1/go.mod h1:j44Ayx2KW4+oB6SWMv8KsmHzZrOInQav7D3cQMJ5JUM= -github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasthttp v1.2.0/go.mod h1:4vX61m6KN+xDduDNwXrhIAVZaZaZiQ1luJk8LWSxF3s= -github.com/valyala/quicktemplate v1.2.0/go.mod h1:EH+4AkTd43SvgIbQHYu59/cJyxDoOVRUAfrukLPuGJ4= -github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= -github.com/vattle/sqlboiler v2.5.0+incompatible h1:Wt7km7/dtfzZD8gt1u3NWeK0AuF5UEr26kVD360w2PA= -github.com/vattle/sqlboiler v2.5.0+incompatible/go.mod h1:Q3YlQv8muqQLqYsCfq0TjX87Ec/oUbIcLuZFZIUV614= github.com/volatiletech/inflect v0.0.0-20170731032912-e7201282ae8d h1:gI4/tqP6lCY5k6Sg+4k9qSoBXmPwG+xXgMpK7jivD4M= github.com/volatiletech/inflect v0.0.0-20170731032912-e7201282ae8d/go.mod h1:jspfvgf53t5NLUT4o9L1IX0kIBNKamGq1tWc/MgWK9Q= github.com/volatiletech/null v8.0.0+incompatible h1:7wP8m5d/gZ6kW/9GnrLtMCRre2dlEnaQ9Km5OXlK4zg= @@ -508,10 +303,7 @@ go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/ go.uber.org/zap v1.10.0 h1:ORx85nbTijNz8ljznvCMR1ZBIPKFn3jQrag10X2AsuM= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c h1:Vj5n4GlwjmQteupaxJ9+0FNOmBrHfq7vN4btdGoDZgI= -golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -536,6 +328,7 @@ golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b h1:Wh+f8QHJXR411sJR8/vRBTZ7YapZaRvUcLFFJhusH0k= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= @@ -547,8 +340,6 @@ golang.org/x/mod v0.2.0 h1:KU7oHjnv3XNWfa5COkzUifxZmxp1TyI7ImMXqFxLwvQ= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180911220305-26e67e76b6c3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -563,7 +354,6 @@ golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -586,18 +376,15 @@ golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a h1:WXEvlFVvvGxCJLG6REjsT03iWnKLEWinaScsxF2Vm2o= golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -605,11 +392,8 @@ golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a h1:aYOabOQFp6Vj6W1F80affTUvO9UxmJRx8K0gsfABByQ= golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -636,36 +420,25 @@ golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181117154741-2ddaf7f79a09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190110163146-51295c7ec13a/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190221204921-83362c3779f5/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190311215038-5c2858a9cfe5/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190322203728-c1a832b0ad89/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190422233926-fe54fb35175b/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262 h1:qsl9y/CJx34tuA7QCPNp86JNJe4spst6Ff8MjvPUdPg= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190521203540-521d6ed310dd/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135 h1:5Beo0mZN8dRzgrMMkDp0jc8YXQKx9DiJ2k1dkvGsn5A= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190719005602-e377ae9d6386/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190910044552-dd2b5c81c578/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -673,7 +446,6 @@ golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200102140908-9497f49d5709/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= @@ -684,14 +456,10 @@ golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200313205530-4303120df7d8/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200317043434-63da46f3035e/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200325010219-a49f79bcc224/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4 h1:kDtqNkeBrZb8B+atrj50B5XLHpzXXqcCdZPP/ApQ5NY= golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200331202046-9d5940d49312/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200422022333-3d57cf2e726e h1:3Dzrrxi54Io7Aoyb0PYLsI47K2TxkRQg+cqUn+m04do= -golang.org/x/tools v0.0.0-20200422022333-3d57cf2e726e/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200425043458-8463f397d07c h1:iHhCR0b26amDCiiO+kBguKZom9aMF+NrFxh9zeKR/XU= golang.org/x/tools v0.0.0-20200425043458-8463f397d07c/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7 h1:9zdDQZ7Thm29KFXgAX/+yaf3eVbP7djjWp/dXAppNCc= @@ -763,10 +531,9 @@ gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLks gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/go-playground/assert.v1 v1.2.1 h1:xoYuJVE7KT85PYWrN730RguIQO0ePzVRfFMXadIrXTM= gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= gopkg.in/go-playground/validator.v9 v9.29.1 h1:SvGtYmN60a5CVKTOzMSyfzWDeZRxRuGvRQyEAKbw1xc= @@ -775,14 +542,12 @@ gopkg.in/ini.v1 v1.51.0 h1:AQvPpx3LzTDM0AjnIRlVFwFFGC+npRopjZxLJj6gdno= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.55.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= 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= gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -792,18 +557,6 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3 h1:sXmLre5bzIR6ypkjXCDI3jHPssRhc8KD/Ome589sc3U= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed h1:WX1yoOaKQfddO/mLzdV4wptyWgoH/6hwLs7QHTixo0I= -mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed/go.mod h1:Xkxe497xwlCKkIaQYRfC7CSLworTXY9RMqwhhCm+8Nc= -mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b h1:DxJ5nJdkhDlLok9K6qO+5290kphDJbHOQO1DFFFTeBo= -mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b/go.mod h1:2odslEg/xrtNQqCYg2/jCoyKnw3vv5biOc3JnIcYfL4= -mvdan.cc/unparam v0.0.0-20190720180237-d51796306d8f h1:Cq7MalBHYACRd6EesksG1Q8EoIAKOsiZviGKbOLIej4= -mvdan.cc/unparam v0.0.0-20190720180237-d51796306d8f/go.mod h1:4G1h5nDURzA3bwVMZIVpwbkw+04kSxk3rAtzlimaUJw= -mvdan.cc/unparam v0.0.0-20200314162735-0ac8026f7d06 h1:evGBPL1nfLr4BUt+I0IV8q6P3oOqXhmC+hc8aw7xO8A= -mvdan.cc/unparam v0.0.0-20200314162735-0ac8026f7d06/go.mod h1:A9jtdiT4gKMLUlAQjDEVC18O9SOJ8ZAiqWfq9g3rlj8= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4 h1:JPJh2pk3+X4lXAkZIk2RuE/7/FoK9maXw+TNPJhVS/c= -sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0= -sourcegraph.com/sqs/pbtypes v1.0.0 h1:f7lAwqviDEGvON4kRv0o5V7FT/IQK+tbkF664XMbP3o= -sourcegraph.com/sqs/pbtypes v1.0.0/go.mod h1:3AciMUv4qUuRHRHhOG4TZOB+72GdPVz5k+c648qsFS4= From 402390db4fa00f63da4a91c3ccffda9d35036e84 Mon Sep 17 00:00:00 2001 From: Takumaron Date: Wed, 29 Apr 2020 10:42:13 +0900 Subject: [PATCH 09/15] =?UTF-8?q?`go=20mod=20tidy`=E3=82=82fmt=E5=AE=9F?= =?UTF-8?q?=E8=A1=8C=E6=99=82=E3=81=AB=E5=AE=9F=E8=A1=8C=E3=81=99=E3=82=8B?= =?UTF-8?q?=E3=82=88=E3=81=86=E3=81=AB=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 8277d33..f60dd63 100644 --- a/Makefile +++ b/Makefile @@ -52,7 +52,8 @@ fmt: ## fmtの実行 # goimportsのインストール GO111MODULE=off go get -u golang.org/x/tools/cmd/goimports - # fmt,goimportsの実行 + # tidy, fmt, goimportsの実行 + go mod tidy -v gofmt -s -w pkg/ goimports -w pkg/ From 8389a83c451c53550374dea1e77335c015a81a65 Mon Sep 17 00:00:00 2001 From: Takumaron Date: Thu, 30 Apr 2020 09:39:47 +0900 Subject: [PATCH 10/15] =?UTF-8?q?zap=E3=83=91=E3=83=83=E3=82=B1=E3=83=BC?= =?UTF-8?q?=E3=82=B8=E3=82=92=E7=94=A8=E3=81=84=E3=81=A6=E3=82=B9=E3=82=BF?= =?UTF-8?q?=E3=83=83=E3=82=AF=E3=81=97=E3=81=9F=E3=82=A8=E3=83=A9=E3=83=BC?= =?UTF-8?q?=E3=82=92=E6=A8=99=E6=BA=96=E5=87=BA=E5=8A=9B=E3=81=A7=E3=81=8D?= =?UTF-8?q?=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- go.mod | 1 + pkg/api/handler/board/server.go | 2 +- pkg/api/middleware/error.go | 13 ++++++++++++- pkg/api/middleware/firebase.go | 2 +- pkg/log/logger.go | 21 +++++++++++++++++++++ 5 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 pkg/log/logger.go diff --git a/go.mod b/go.mod index e855245..dab7771 100644 --- a/go.mod +++ b/go.mod @@ -30,6 +30,7 @@ require ( github.com/volatiletech/inflect v0.0.0-20170731032912-e7201282ae8d // indirect github.com/volatiletech/null v8.0.0+incompatible github.com/volatiletech/sqlboiler v3.7.0+incompatible + go.uber.org/zap v1.10.0 golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f // indirect golang.org/x/tools v0.0.0-20200425043458-8463f397d07c // indirect golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 diff --git a/pkg/api/handler/board/server.go b/pkg/api/handler/board/server.go index 8d12974..b86e11e 100644 --- a/pkg/api/handler/board/server.go +++ b/pkg/api/handler/board/server.go @@ -37,7 +37,7 @@ func (s *Server) CreateNewBoard(ctx *gin.Context) { } if err := s.boardInteractor.CreateNewBoard(ctx, uid.(string), reqBody.Title, reqBody.Description); err != nil { - ctx.Error(err) + ctx.Error(terrors.Stack(err)) return } diff --git a/pkg/api/middleware/error.go b/pkg/api/middleware/error.go index feda444..f181309 100644 --- a/pkg/api/middleware/error.go +++ b/pkg/api/middleware/error.go @@ -1,7 +1,9 @@ package middleware import ( + "fmt" "net/http" + "todone/pkg/log" "todone/pkg/terrors" "github.com/gin-gonic/gin" @@ -13,13 +15,22 @@ func ErrorHandling() gin.HandlerFunc { c.Next() err := c.Errors.Last() + + // エラーログ出力 + uid, ok := c.Get(AuthCtxKey) + if !ok { + log.GetAppLogger().Error(fmt.Sprintf("", err.Err)) + } else { + log.GetAppLogger().Error(fmt.Sprintf("", uid, err.Err)) + } + if err != nil { var todoneError *terrors.TodoneError if ok := xerrors.As(err.Err, &todoneError); ok { c.AbortWithStatusJSON(todoneError.ErrorCode, todoneError) return } - c.AbortWithStatusJSON(http.StatusInternalServerError, err) + c.AbortWithStatusJSON(http.StatusInternalServerError, terrors.Stack(err)) return } } diff --git a/pkg/api/middleware/firebase.go b/pkg/api/middleware/firebase.go index de33ede..dae465d 100644 --- a/pkg/api/middleware/firebase.go +++ b/pkg/api/middleware/firebase.go @@ -78,7 +78,7 @@ func (fa *firebaseAuth) middlewareImpl(c *gin.Context) { // JWT の検証 authedUserToken, err := fa.client.VerifyIDToken(c, jwtToken) if err != nil { - c.AbortWithError(http.StatusBadRequest, err) + c.AbortWithError(http.StatusBadRequest, terrors.Stack(err)) return } // contextにuidを格納 diff --git a/pkg/log/logger.go b/pkg/log/logger.go new file mode 100644 index 0000000..6801433 --- /dev/null +++ b/pkg/log/logger.go @@ -0,0 +1,21 @@ +package log + +import "go.uber.org/zap" + +// アプリケーションログ用のロガー +var appLogger *zap.Logger + +const AppLoggerKey = "AppLogger" + +func init() { + // TODO デフォルトだと標準エラー出力に吐かれるのでログフォーマットと合わせて調整 + config := zap.NewProductionConfig() + config.Level = zap.NewAtomicLevelAt(zap.DebugLevel) + logger, _ := config.Build() + appLogger = logger.Named(AppLoggerKey) +} + +// getter +func GetAppLogger() *zap.Logger { + return appLogger +} From c3ad08e1b9d6e484abf8e4cdf2f0eb03a4d8ce00 Mon Sep 17 00:00:00 2001 From: Takumaron Date: Thu, 30 Apr 2020 09:55:40 +0900 Subject: [PATCH 11/15] =?UTF-8?q?=E3=83=AD=E3=82=B0=E5=87=BA=E5=8A=9B?= =?UTF-8?q?=E3=83=AC=E3=83=99=E3=83=AB=E3=82=92=E3=82=A8=E3=83=A9=E3=83=BC?= =?UTF-8?q?=E3=81=AB=E5=A4=89=E6=9B=B4=EF=BC=86=E3=82=B9=E3=82=BF=E3=83=83?= =?UTF-8?q?=E3=82=AF=E3=83=88=E3=83=AC=E3=83=BC=E3=82=B9=E3=81=AE=E5=87=BA?= =?UTF-8?q?=E5=8A=9B=E3=82=92OFF=E3=81=AB=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/log/logger.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/log/logger.go b/pkg/log/logger.go index 6801433..1451fb8 100644 --- a/pkg/log/logger.go +++ b/pkg/log/logger.go @@ -8,9 +8,9 @@ var appLogger *zap.Logger const AppLoggerKey = "AppLogger" func init() { - // TODO デフォルトだと標準エラー出力に吐かれるのでログフォーマットと合わせて調整 config := zap.NewProductionConfig() - config.Level = zap.NewAtomicLevelAt(zap.DebugLevel) + config.Level = zap.NewAtomicLevelAt(zap.ErrorLevel) + config.DisableStacktrace = true // スタックトレースONにしたい場合はfalseにする logger, _ := config.Build() appLogger = logger.Named(AppLoggerKey) } From 077aedd108d0d2ad423f442dde55c1a6f0e1f334 Mon Sep 17 00:00:00 2001 From: Takumaron Date: Thu, 30 Apr 2020 10:02:11 +0900 Subject: [PATCH 12/15] =?UTF-8?q?=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88?= =?UTF-8?q?=E3=81=AE=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/api/middleware/error.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/api/middleware/error.go b/pkg/api/middleware/error.go index f181309..62c9822 100644 --- a/pkg/api/middleware/error.go +++ b/pkg/api/middleware/error.go @@ -24,6 +24,7 @@ func ErrorHandling() gin.HandlerFunc { log.GetAppLogger().Error(fmt.Sprintf("", uid, err.Err)) } + // エラーレスポンスの送信 if err != nil { var todoneError *terrors.TodoneError if ok := xerrors.As(err.Err, &todoneError); ok { From d1c776acc1ec02932967df63bd970831594bfcbf Mon Sep 17 00:00:00 2001 From: Takumaron Date: Tue, 12 May 2020 10:33:59 +0900 Subject: [PATCH 13/15] resolve conflict --- pkg/terrors/terrors.go | 6 ------ 1 file changed, 6 deletions(-) diff --git a/pkg/terrors/terrors.go b/pkg/terrors/terrors.go index e6e8a82..8ccbedb 100644 --- a/pkg/terrors/terrors.go +++ b/pkg/terrors/terrors.go @@ -2,10 +2,7 @@ package terrors import ( "fmt" -<<<<<<< HEAD -======= "net/http" ->>>>>>> 7efff63409e3830345470475eb480d45ba99a818 "golang.org/x/xerrors" ) @@ -64,8 +61,6 @@ func Stack(err error) error { errorCode = todoneError.ErrorCode errorMessageJP = todoneError.ErrorMessageJP errorMessageEN = todoneError.ErrorMessageEN -<<<<<<< HEAD -======= } else { return &TodoneError{ ErrorCode: http.StatusInternalServerError, @@ -74,7 +69,6 @@ func Stack(err error) error { err: err, frame: xerrors.Caller(1), } ->>>>>>> 7efff63409e3830345470475eb480d45ba99a818 } return &TodoneError{ ErrorCode: errorCode, From b16cb8e6d1296a0e744e752ca4b35e7873ecf38d Mon Sep 17 00:00:00 2001 From: Takumaron Date: Sun, 17 May 2020 14:33:34 +0900 Subject: [PATCH 14/15] =?UTF-8?q?=E6=A8=99=E6=BA=96=E3=83=91=E3=83=83?= =?UTF-8?q?=E3=82=B1=E3=83=BC=E3=82=B8=E3=81=AElog=E3=81=A8=E8=A2=AB?= =?UTF-8?q?=E3=82=8B=E3=81=AE=E3=81=A7tlog=E3=81=AB=E5=91=BD=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/api/middleware/error.go | 6 +++--- pkg/{log => tlog}/logger.go | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) rename pkg/{log => tlog}/logger.go (97%) diff --git a/pkg/api/middleware/error.go b/pkg/api/middleware/error.go index 62c9822..c820216 100644 --- a/pkg/api/middleware/error.go +++ b/pkg/api/middleware/error.go @@ -3,8 +3,8 @@ package middleware import ( "fmt" "net/http" - "todone/pkg/log" "todone/pkg/terrors" + "todone/pkg/tlog" "github.com/gin-gonic/gin" "golang.org/x/xerrors" @@ -19,9 +19,9 @@ func ErrorHandling() gin.HandlerFunc { // エラーログ出力 uid, ok := c.Get(AuthCtxKey) if !ok { - log.GetAppLogger().Error(fmt.Sprintf("", err.Err)) + tlog.GetAppLogger().Error(fmt.Sprintf("", err.Err)) } else { - log.GetAppLogger().Error(fmt.Sprintf("", uid, err.Err)) + tlog.GetAppLogger().Error(fmt.Sprintf("", uid, err.Err)) } // エラーレスポンスの送信 diff --git a/pkg/log/logger.go b/pkg/tlog/logger.go similarity index 97% rename from pkg/log/logger.go rename to pkg/tlog/logger.go index 1451fb8..9a22d8c 100644 --- a/pkg/log/logger.go +++ b/pkg/tlog/logger.go @@ -1,4 +1,4 @@ -package log +package tlog import "go.uber.org/zap" From de5882c43b3bb18722a482232e1e860d0a040d82 Mon Sep 17 00:00:00 2001 From: Takumaron Date: Sun, 17 May 2020 15:46:23 +0900 Subject: [PATCH 15/15] =?UTF-8?q?=E3=82=A8=E3=83=A9=E3=83=BC=E3=81=AE?= =?UTF-8?q?=E5=87=BA=E5=8A=9B=E5=BD=A2=E5=BC=8F=E3=82=92=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?=EF=BC=86=E3=82=A8=E3=83=A9=E3=83=BC=E3=81=AE=E3=82=B3=E3=83=B3?= =?UTF-8?q?=E3=83=90=E3=83=BC=E3=83=88=E3=81=AB=E5=A4=B1=E6=95=97=E3=81=97?= =?UTF-8?q?=E3=81=A6=E3=81=97=E3=81=BE=E3=81=86=E3=83=90=E3=82=B0=E3=82=92?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/api/middleware/error.go | 6 +++--- pkg/api/middleware/firebase.go | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pkg/api/middleware/error.go b/pkg/api/middleware/error.go index c820216..73ddf73 100644 --- a/pkg/api/middleware/error.go +++ b/pkg/api/middleware/error.go @@ -19,9 +19,9 @@ func ErrorHandling() gin.HandlerFunc { // エラーログ出力 uid, ok := c.Get(AuthCtxKey) if !ok { - tlog.GetAppLogger().Error(fmt.Sprintf("", err.Err)) + tlog.GetAppLogger().Error(fmt.Sprintf("<[Unknown]:%v>", err.Err)) } else { - tlog.GetAppLogger().Error(fmt.Sprintf("", uid, err.Err)) + tlog.GetAppLogger().Error(fmt.Sprintf("<[%s]:%v>", uid, err.Err)) } // エラーレスポンスの送信 @@ -31,7 +31,7 @@ func ErrorHandling() gin.HandlerFunc { c.AbortWithStatusJSON(todoneError.ErrorCode, todoneError) return } - c.AbortWithStatusJSON(http.StatusInternalServerError, terrors.Stack(err)) + c.AbortWithStatusJSON(http.StatusInternalServerError, err) return } } diff --git a/pkg/api/middleware/firebase.go b/pkg/api/middleware/firebase.go index dae465d..d2f0186 100644 --- a/pkg/api/middleware/firebase.go +++ b/pkg/api/middleware/firebase.go @@ -70,7 +70,7 @@ func (fa *firebaseAuth) middlewareImpl(c *gin.Context) { // Authorizationヘッダーからjwtトークンを取得 var reqHeader reqheader.Auth if err := c.BindHeader(&reqHeader); err != nil { - c.AbortWithError(http.StatusBadRequest, terrors.Stack(err)) + c.AbortWithError(http.StatusBadRequest, err) return } jwtToken := strings.Replace(reqHeader.Authorization, "Bearer ", "", 1) @@ -78,7 +78,7 @@ func (fa *firebaseAuth) middlewareImpl(c *gin.Context) { // JWT の検証 authedUserToken, err := fa.client.VerifyIDToken(c, jwtToken) if err != nil { - c.AbortWithError(http.StatusBadRequest, terrors.Stack(err)) + c.AbortWithError(http.StatusBadRequest, terrors.Wrapf(err, http.StatusUnauthorized, "トークンの有効期限が過ぎています。", "token has expired.")) return } // contextにuidを格納