package main import ( "github.com/go-openapi/runtime/middleware" "src.dualinventive.com/go/companies-service/internal/companies" "src.dualinventive.com/go/companies-service/rest/models" "src.dualinventive.com/go/companies-service/rest/server/operations" h "src.dualinventive.com/go/companies-service/rest/server/operations/companies" ) func initHandlers( api *operations.CompaniesAPI, companyService *companies.CompanyService, ) { registerGetCompanyByIDHandler(api, companyService) registerGetCompaniesHandler(api, companyService) } func registerGetCompanyByIDHandler( api *operations.CompaniesAPI, companyService *companies.CompanyService, ) { api.CompaniesGetCompanyByIDHandler = h.GetCompanyByIDHandlerFunc( func(params h.GetCompanyByIDParams, secret interface{}) middleware.Responder { token := secret.(string) company, err := companyService.GetCompanyByID(token, uint64(params.CompanyID)) if err != nil { //nolint:dupl switch err.(type) { case *companies.ErrUnauthorized: return &h.GetCompanyByIDUnauthorized{Payload: &models.ErrResponse{ErrMsg: err.Error()}} case *companies.ErrAuthFailed: return &h.GetCompanyByIDInternalServerError{Payload: &models.ErrResponse{ErrMsg: err.Error()}} case *companies.ErrCompanyNotFound: return &h.GetCompanyByIDNotFound{Payload: &models.ErrResponse{ErrMsg: err.Error()}} case *companies.ErrCompanyRepositoryErr: return &h.GetCompanyByIDInternalServerError{Payload: &models.ErrResponse{ErrMsg: err.Error()}} default: return &h.GetCompanyByIDInternalServerError{Payload: &models.ErrResponse{ErrMsg: err.Error()}} } } return &h.GetCompanyByIDOK{Payload: mapCompany(company)} }) } func registerGetCompaniesHandler( api *operations.CompaniesAPI, companyService *companies.CompanyService, ) { api.CompaniesGetCompaniesHandler = h.GetCompaniesHandlerFunc( func(params h.GetCompaniesParams, secret interface{}) middleware.Responder { token := secret.(string) companieslist, count, err := companyService.GetCompanies( token, uint64(*params.Page), uint64(*params.PerPage), mapSortCol(*params.Sort)) if err != nil { //nolint:dupl switch err.(type) { case *companies.ErrUnauthorized: return &h.GetCompanyByIDUnauthorized{Payload: &models.ErrResponse{ErrMsg: err.Error()}} case *companies.ErrAuthFailed: return &h.GetCompanyByIDInternalServerError{Payload: &models.ErrResponse{ErrMsg: err.Error()}} case *companies.ErrCompanyNotFound: return &h.GetCompanyByIDNotFound{Payload: &models.ErrResponse{ErrMsg: err.Error()}} case *companies.ErrCompanyRepositoryErr: return &h.GetCompanyByIDInternalServerError{Payload: &models.ErrResponse{ErrMsg: err.Error()}} default: return &h.GetCompanyByIDInternalServerError{Payload: &models.ErrResponse{ErrMsg: err.Error()}} } } return &h.GetCompaniesOK{Payload: mapCompanies(companieslist, count)} }) }