initial commit

This commit is contained in:
2025-03-05 00:30:53 +01:00
commit 9da7b99e5d
32 changed files with 4541 additions and 0 deletions

View 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)},
}
}

View 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
}

View 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
}

View 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
}