123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- package endpoint
- import (
- "context"
- "github.com/go-kit/kit/endpoint"
- shipping "github.com/longjoy/micro-go-course/section19/cargo/model"
- "github.com/longjoy/micro-go-course/section19/cargo/service/booking"
- "github.com/longjoy/micro-go-course/section19/cargo/service/handling"
- "time"
- )
- type CargoEndpoints struct {
- BookCargoEndpoint endpoint.Endpoint
- LoadCargoEndpoint endpoint.Endpoint
- AssignCargoToRouteEndpoint endpoint.Endpoint
- ChangeDestinationEndpoint endpoint.Endpoint
- CargosEndpoint endpoint.Endpoint
- LocationsEndpoint endpoint.Endpoint
- RegisterHandlingEventEndpoint endpoint.Endpoint
-
- }
- type RegisterHandlingEventRequest struct {
- Completed time.Time
- Id shipping.TrackingID
- VoyageNumber shipping.VoyageNumber
- UnLocode shipping.UNLocode
- EventType shipping.HandlingEventType
- }
- type RegisterHandlingEventResponse struct {
- Res bool `json:"res"`
- }
- func RegisterHandlingEventEndpoint(handlingService handling.Service) endpoint.Endpoint {
- return func(ctx context.Context, request interface{}) (response interface{}, err error) {
- req := request.(*RegisterHandlingEventRequest)
- res, err := handlingService.RegisterHandlingEvent(req.Completed, req.Id, req.VoyageNumber, req.UnLocode, req.EventType)
- return &RegisterHandlingEventResponse{Res: res}, err
- }
- }
- type LocationsResponse struct {
- Locations []booking.Location `json:"locations"`
- }
- func LocationsEndpoint(bookService booking.Service) endpoint.Endpoint {
- return func(ctx context.Context, request interface{}) (response interface{}, err error) {
- res := bookService.Locations()
- return &LocationsResponse{Locations: res}, err
- }
- }
- type CargosResponse struct {
- Cargos []booking.Cargo `json:"cargos"`
- }
- func CargosEndpoint(bookService booking.Service) endpoint.Endpoint {
- return func(ctx context.Context, request interface{}) (response interface{}, err error) {
- res := bookService.Cargos()
- return &CargosResponse{Cargos: res}, err
- }
- }
- type ChangeDestinationRequest struct {
- Id shipping.TrackingID
- Destination shipping.UNLocode
- }
- type ChangeDestinationResponse struct {
- Res bool `json:"res"`
- }
- func ChangeDestinationEndpoint(bookService booking.Service) endpoint.Endpoint {
- return func(ctx context.Context, request interface{}) (response interface{}, err error) {
- req := request.(*ChangeDestinationRequest)
- res, err := bookService.ChangeDestination(req.Id, req.Destination)
- return &ChangeDestinationResponse{Res: res}, err
- }
- }
- type AssignCargoToRouteRequest struct {
- Id shipping.TrackingID
- Itinerary shipping.Itinerary
- }
- type AssignCargoToRouteResponse struct {
- Res bool `json:"res"`
- }
- func AssignCargoToRouteEndpoint(bookService booking.Service) endpoint.Endpoint {
- return func(ctx context.Context, request interface{}) (response interface{}, err error) {
- req := request.(*AssignCargoToRouteRequest)
- res, err := bookService.AssignCargoToRoute(req.Id, req.Itinerary)
- return &AssignCargoToRouteResponse{Res: res}, err
- }
- }
- type LoadCargoRequest struct {
- Id shipping.TrackingID
- }
- type LoadCargoResponse struct {
- Cargo booking.Cargo `json:"cargo"`
- }
- func MakeLoadCargoEndpoint(bookService booking.Service) endpoint.Endpoint {
- return func(ctx context.Context, request interface{}) (response interface{}, err error) {
- req := request.(*LoadCargoRequest)
- cargo, err := bookService.LoadCargo(req.Id)
- return &LoadCargoResponse{Cargo: cargo}, err
- }
- }
- type BookCargoRequest struct {
- Origin shipping.UNLocode
- Destination shipping.UNLocode
- Deadline time.Time
- }
- type BookCargoResponse struct {
- TrackingID shipping.TrackingID `json:"tracking_id"`
- }
- type LocationsRequest struct {
- }
- func MakeBookCargoEndpoint(bookService booking.Service) endpoint.Endpoint {
- return func(ctx context.Context, request interface{}) (response interface{}, err error) {
- req := request.(*BookCargoRequest)
- trackingID, err := bookService.BookNewCargo(req.Origin, req.Destination, req.Deadline)
- return &BookCargoResponse{TrackingID: trackingID}, err
- }
- }
|