79 lines
2.9 KiB
Go
79 lines
2.9 KiB
Go
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)}
|
|
})
|
|
}
|