initial commit
This commit is contained in:
34
servers/grpc/transformers/availabilities.go
Normal file
34
servers/grpc/transformers/availabilities.go
Normal file
@@ -0,0 +1,34 @@
|
||||
package transformers
|
||||
|
||||
import (
|
||||
"git.coopgo.io/coopgo-platform/solidarity-transport/servers/grpc/proto/gen"
|
||||
"git.coopgo.io/coopgo-platform/solidarity-transport/types"
|
||||
"github.com/paulmach/orb/geojson"
|
||||
)
|
||||
|
||||
func DriverRegularAvailabilityProtoToType(a *gen.DriverRegularAvailability) *types.DriverRegularAvailability {
|
||||
address, _ := geojson.UnmarshalFeature([]byte(a.Address.Serialized))
|
||||
return &types.DriverRegularAvailability{
|
||||
ID: a.Id,
|
||||
DriverId: a.DriverId,
|
||||
Day: int(a.Day),
|
||||
StartTime: a.StartTime,
|
||||
EndTime: a.EndTime,
|
||||
Address: address,
|
||||
}
|
||||
}
|
||||
|
||||
func DriverRegularAvailabilityTypeToProto(a *types.DriverRegularAvailability) *gen.DriverRegularAvailability {
|
||||
address := []byte("")
|
||||
if a.Address != nil {
|
||||
address, _ = a.Address.MarshalJSON()
|
||||
}
|
||||
return &gen.DriverRegularAvailability{
|
||||
Id: a.ID,
|
||||
Day: int32(a.Day),
|
||||
DriverId: a.DriverId,
|
||||
StartTime: a.StartTime,
|
||||
EndTime: a.EndTime,
|
||||
Address: &gen.GeoJsonFeature{Serialized: string(address)},
|
||||
}
|
||||
}
|
||||
36
servers/grpc/transformers/bookings.go
Normal file
36
servers/grpc/transformers/bookings.go
Normal file
@@ -0,0 +1,36 @@
|
||||
package transformers
|
||||
|
||||
import (
|
||||
"git.coopgo.io/coopgo-platform/solidarity-transport/servers/grpc/proto/gen"
|
||||
"git.coopgo.io/coopgo-platform/solidarity-transport/types"
|
||||
)
|
||||
|
||||
func BookingTypeToProto(booking *types.Booking) (*gen.SolidarityTransportBooking, error) {
|
||||
journey, err := DriverJourneyTypeToProto(booking.Journey)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &gen.SolidarityTransportBooking{
|
||||
Id: booking.Id,
|
||||
GroupId: booking.GroupId,
|
||||
DriverId: booking.DriverId,
|
||||
PassengerId: booking.PassengerId,
|
||||
Status: booking.Status,
|
||||
Journey: journey,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func BookingProtoToType(booking *gen.SolidarityTransportBooking) (*types.Booking, error) {
|
||||
journey, err := DriverJourneyProtoToType(booking.Journey)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &types.Booking{
|
||||
Id: booking.Id,
|
||||
GroupId: booking.GroupId,
|
||||
DriverId: booking.DriverId,
|
||||
PassengerId: booking.PassengerId,
|
||||
Status: booking.Status,
|
||||
Journey: journey,
|
||||
}, nil
|
||||
}
|
||||
24
servers/grpc/transformers/geojson.go
Normal file
24
servers/grpc/transformers/geojson.go
Normal file
@@ -0,0 +1,24 @@
|
||||
package transformers
|
||||
|
||||
import (
|
||||
"git.coopgo.io/coopgo-platform/solidarity-transport/servers/grpc/proto/gen"
|
||||
"github.com/paulmach/orb/geojson"
|
||||
)
|
||||
|
||||
func GeoJsonToProto(feature *geojson.Feature) (*gen.GeoJsonFeature, error) {
|
||||
serialized, err := feature.MarshalJSON()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &gen.GeoJsonFeature{
|
||||
Serialized: string(serialized),
|
||||
}, nil
|
||||
}
|
||||
|
||||
func ProtoToGeoJson(feature *gen.GeoJsonFeature) (*geojson.Feature, error) {
|
||||
gj, err := geojson.UnmarshalFeature([]byte(feature.Serialized))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return gj, err
|
||||
}
|
||||
100
servers/grpc/transformers/journeys.go
Normal file
100
servers/grpc/transformers/journeys.go
Normal file
@@ -0,0 +1,100 @@
|
||||
package transformers
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"git.coopgo.io/coopgo-platform/solidarity-transport/servers/grpc/proto/gen"
|
||||
"git.coopgo.io/coopgo-platform/solidarity-transport/types"
|
||||
"github.com/paulmach/orb/geojson"
|
||||
"google.golang.org/protobuf/types/known/timestamppb"
|
||||
)
|
||||
|
||||
func DriverJourneyTypeToProto(j *types.DriverJourney) (*gen.SolidarityTransportDriverJourney, error) {
|
||||
passengerPickup, err := j.PassengerPickup.MarshalJSON()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
passengerDrop, err := j.PassengerDrop.MarshalJSON()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
driverDeparture, err := j.DriverDeparture.MarshalJSON()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
driverArrival, err := j.DriverArrival.MarshalJSON()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &gen.SolidarityTransportDriverJourney{
|
||||
Id: j.Id,
|
||||
DriverId: j.DriverId,
|
||||
PassengerPickup: &gen.GeoJsonFeature{
|
||||
Serialized: string(passengerPickup),
|
||||
},
|
||||
PassengerDrop: &gen.GeoJsonFeature{
|
||||
Serialized: string(passengerDrop),
|
||||
},
|
||||
PassengerDistance: j.PassengerDistance,
|
||||
DriverDeparture: &gen.GeoJsonFeature{
|
||||
Serialized: string(driverDeparture),
|
||||
},
|
||||
DriverArrival: &gen.GeoJsonFeature{
|
||||
Serialized: string(driverArrival),
|
||||
},
|
||||
DriverDistance: j.DriverDistance,
|
||||
Duration: int64(j.Duration.Seconds()),
|
||||
JourneyPolyline: &j.JourneyPolyline,
|
||||
DriverDepartureDate: timestamppb.New(j.DriverDepartureDate),
|
||||
PassengerPickupDate: timestamppb.New(j.PassengerPickupDate),
|
||||
Price: &gen.SolidarityTransportPrice{
|
||||
Amount: 0,
|
||||
Currency: "EUR",
|
||||
},
|
||||
}, nil
|
||||
}
|
||||
|
||||
func DriverJourneyProtoToType(j *gen.SolidarityTransportDriverJourney) (*types.DriverJourney, error) {
|
||||
passengerPickup, err := geojson.UnmarshalFeature([]byte(j.PassengerPickup.Serialized))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
passengerDrop, err := geojson.UnmarshalFeature([]byte(j.PassengerDrop.Serialized))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
driverDeparture, err := geojson.UnmarshalFeature([]byte(j.DriverDeparture.Serialized))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
driverArrival, err := geojson.UnmarshalFeature([]byte(j.DriverArrival.Serialized))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &types.DriverJourney{
|
||||
Id: j.Id,
|
||||
DriverId: j.DriverId,
|
||||
PassengerPickup: passengerPickup,
|
||||
PassengerDrop: passengerDrop,
|
||||
PassengerDistance: j.PassengerDistance,
|
||||
DriverDeparture: driverDeparture,
|
||||
DriverArrival: driverArrival,
|
||||
DriverDistance: j.DriverDistance,
|
||||
Duration: time.Duration(j.Duration) * time.Second,
|
||||
JourneyPolyline: *j.JourneyPolyline,
|
||||
DriverDepartureDate: j.DriverDepartureDate.AsTime(),
|
||||
PassengerPickupDate: j.PassengerPickupDate.AsTime(),
|
||||
Price: types.SolidarityTransportPrice{
|
||||
Amount: j.Price.Amount,
|
||||
Currency: j.Price.Currency,
|
||||
},
|
||||
}, nil
|
||||
}
|
||||
Reference in New Issue
Block a user