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
- //TrackEndpoint 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
- }
- }
- /*// UserEndpoint define endpoint
- func (ce *CargoEndpoints) BookNewCargo(ctx context.Context, origin shipping.UNLocode, destination shipping.UNLocode,
- deadline time.Time) (shipping.TrackingID, error) {
- if origin == "" || destination == "" || deadline.IsZero() {
- return "", booking.ErrInvalidArgument
- }
- id := shipping.NextTrackingID()
- rs := shipping.RouteSpecification{
- Origin: origin,
- Destination: destination,
- ArrivalDeadline: deadline,
- }
- c := shipping.NewCargo(id, rs)
- if _, err := s.cargos.Store(c); err != nil {
- return "", err
- }
- return c.TrackingID, nil
- }*/
|