initial commit
This commit is contained in:
		
						commit
						9da7b99e5d
					
				| 
						 | 
					@ -0,0 +1,65 @@
 | 
				
			||||||
 | 
					name: Build and Push Docker Image
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					on:
 | 
				
			||||||
 | 
					  push:
 | 
				
			||||||
 | 
					    tags:
 | 
				
			||||||
 | 
					      - "*"
 | 
				
			||||||
 | 
					    branches:
 | 
				
			||||||
 | 
					      - main
 | 
				
			||||||
 | 
					      - dev
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					jobs:
 | 
				
			||||||
 | 
					  build_and_push:
 | 
				
			||||||
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					      - name: Install Docker
 | 
				
			||||||
 | 
					        run: |
 | 
				
			||||||
 | 
					          apt-get update
 | 
				
			||||||
 | 
					          apt-get install -y docker.io
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      - name: Checkout Repository
 | 
				
			||||||
 | 
					        uses: actions/checkout@v4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      - name: Set Kubernetes Context
 | 
				
			||||||
 | 
					        uses: azure/k8s-set-context@v4
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          method: kubeconfig
 | 
				
			||||||
 | 
					          kubeconfig: ${{secrets.buildx_kubeconfig}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      - name: Set up Docker Buildx
 | 
				
			||||||
 | 
					        uses: docker/setup-buildx-action@v3
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          driver: kubernetes
 | 
				
			||||||
 | 
					          driver-opts: |
 | 
				
			||||||
 | 
					            namespace=gitea
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      - name: Login to Docker Registry
 | 
				
			||||||
 | 
					        uses: docker/login-action@v3
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          registry: git.coopgo.io
 | 
				
			||||||
 | 
					          username: ${{ secrets.REGISTRY_USER }}
 | 
				
			||||||
 | 
					          password: ${{ secrets.REGISTRY_TOKEN }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      - name: Extract metadata (tags, labels) for Docker image
 | 
				
			||||||
 | 
					        id: metadata
 | 
				
			||||||
 | 
					        uses: docker/metadata-action@v3
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          images: git.coopgo.io/${{gitea.repository}}
 | 
				
			||||||
 | 
					          tags: |
 | 
				
			||||||
 | 
					            type=ref,event=branch
 | 
				
			||||||
 | 
					            type=ref,event=tag
 | 
				
			||||||
 | 
					            type=ref,event=pr
 | 
				
			||||||
 | 
					          flavor: |
 | 
				
			||||||
 | 
					            latest=auto
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      - name: Build and push
 | 
				
			||||||
 | 
					        uses: docker/build-push-action@v5
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          context: .
 | 
				
			||||||
 | 
					          push: true
 | 
				
			||||||
 | 
					          tags: |
 | 
				
			||||||
 | 
					            ${{ steps.metadata.outputs.tags }}
 | 
				
			||||||
 | 
					          build-args: |
 | 
				
			||||||
 | 
					            ACCESS_TOKEN_USR=${{gitea.actor}}
 | 
				
			||||||
 | 
					            ACCESS_TOKEN_PWD=${{gitea.token}}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					config.yaml
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,27 @@
 | 
				
			||||||
 | 
					FROM golang:alpine as builder
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ARG ACCESS_TOKEN_USR="nothing"
 | 
				
			||||||
 | 
					ARG ACCESS_TOKEN_PWD="nothing"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					RUN apk add --no-cache ca-certificates tzdata git
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					WORKDIR /
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Create a netrc file using the credentials specified using --build-arg
 | 
				
			||||||
 | 
					RUN printf "machine git.coopgo.io\n\
 | 
				
			||||||
 | 
					  login ${ACCESS_TOKEN_USR}\n\
 | 
				
			||||||
 | 
					  password ${ACCESS_TOKEN_PWD}\n"\
 | 
				
			||||||
 | 
					  >> ~/.netrc
 | 
				
			||||||
 | 
					RUN chmod 600 ~/.netrc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					COPY . .
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					RUN go mod download && CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o /server
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FROM scratch
 | 
				
			||||||
 | 
					COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
 | 
				
			||||||
 | 
					COPY --from=builder /usr/share/zoneinfo /usr/share/zoneinfo
 | 
				
			||||||
 | 
					COPY --from=builder /server /
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EXPOSE 8080
 | 
				
			||||||
 | 
					ENTRYPOINT ["/server"]
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,7 @@
 | 
				
			||||||
 | 
					# COOPGO Solidarity Transport 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					COOPGO Solidarity Transport is a solidarity transport management microservice. It handles :
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- driver availabilities declarations
 | 
				
			||||||
 | 
					- passenger journeys requests
 | 
				
			||||||
 | 
					- matching between passenger journeys requests and driver availabilities
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,50 @@
 | 
				
			||||||
 | 
					package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"strings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/spf13/viper"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func ReadConfig() (*viper.Viper, error) {
 | 
				
			||||||
 | 
						defaults := map[string]any{
 | 
				
			||||||
 | 
							"name":    "COOPGO Solidarity Transport",
 | 
				
			||||||
 | 
							"dev_env": false,
 | 
				
			||||||
 | 
							"storage": map[string]any{
 | 
				
			||||||
 | 
								"db": map[string]any{
 | 
				
			||||||
 | 
									"type": "mongodb",
 | 
				
			||||||
 | 
									"mongodb": map[string]any{
 | 
				
			||||||
 | 
										"host":    "localhost",
 | 
				
			||||||
 | 
										"port":    27017,
 | 
				
			||||||
 | 
										"db_name": "coopgo_platform",
 | 
				
			||||||
 | 
										"collections": map[string]any{
 | 
				
			||||||
 | 
											"drivers_regular_availabilities": "solidarity_drivers_regular_availabilities",
 | 
				
			||||||
 | 
											"bookings":                       "solidarity_bookings",
 | 
				
			||||||
 | 
											"driver_journeys":                "solidarity_driver_journeys",
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							"services": map[string]any{
 | 
				
			||||||
 | 
								"grpc": map[string]any{
 | 
				
			||||||
 | 
									"enable": true,
 | 
				
			||||||
 | 
									"port":   8080,
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							"routing": map[string]any{
 | 
				
			||||||
 | 
								"type":     "valhalla",
 | 
				
			||||||
 | 
								"base_url": "https://valhalla.coopgo.io",
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						v := viper.New()
 | 
				
			||||||
 | 
						for key, value := range defaults {
 | 
				
			||||||
 | 
							v.SetDefault(key, value)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						v.SetConfigName("config")
 | 
				
			||||||
 | 
						v.AddConfigPath(".")
 | 
				
			||||||
 | 
						v.SetEnvKeyReplacer(strings.NewReplacer(".", "_"))
 | 
				
			||||||
 | 
						v.AutomaticEnv()
 | 
				
			||||||
 | 
						err := v.ReadInConfig()
 | 
				
			||||||
 | 
						return v, err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,52 @@
 | 
				
			||||||
 | 
					module git.coopgo.io/coopgo-platform/solidarity-transport
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					go 1.23.3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					replace git.coopgo.io/coopgo-platform/routing-service => ../../coopgo-platform/routing-service/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require (
 | 
				
			||||||
 | 
						github.com/google/uuid v1.6.0
 | 
				
			||||||
 | 
						github.com/rs/zerolog v1.33.0
 | 
				
			||||||
 | 
						github.com/spf13/viper v1.19.0
 | 
				
			||||||
 | 
						go.mongodb.org/mongo-driver/v2 v2.1.0
 | 
				
			||||||
 | 
						google.golang.org/grpc v1.70.0
 | 
				
			||||||
 | 
						google.golang.org/protobuf v1.35.2
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require (
 | 
				
			||||||
 | 
						git.coopgo.io/coopgo-platform/routing-service v0.0.0-20240919052617-d03cd410081c // indirect
 | 
				
			||||||
 | 
						github.com/fsnotify/fsnotify v1.7.0 // indirect
 | 
				
			||||||
 | 
						github.com/golang/snappy v0.0.4 // indirect
 | 
				
			||||||
 | 
						github.com/hashicorp/hcl v1.0.0 // indirect
 | 
				
			||||||
 | 
						github.com/klauspost/compress v1.17.2 // indirect
 | 
				
			||||||
 | 
						github.com/magiconair/properties v1.8.7 // indirect
 | 
				
			||||||
 | 
						github.com/mattn/go-colorable v0.1.13 // indirect
 | 
				
			||||||
 | 
						github.com/mattn/go-isatty v0.0.19 // indirect
 | 
				
			||||||
 | 
						github.com/mitchellh/mapstructure v1.5.0 // indirect
 | 
				
			||||||
 | 
						github.com/paulmach/orb v0.11.1 // indirect
 | 
				
			||||||
 | 
						github.com/pelletier/go-toml/v2 v2.2.2 // indirect
 | 
				
			||||||
 | 
						github.com/sagikazarmark/locafero v0.4.0 // indirect
 | 
				
			||||||
 | 
						github.com/sagikazarmark/slog-shim v0.1.0 // indirect
 | 
				
			||||||
 | 
						github.com/sourcegraph/conc v0.3.0 // indirect
 | 
				
			||||||
 | 
						github.com/spf13/afero v1.11.0 // indirect
 | 
				
			||||||
 | 
						github.com/spf13/cast v1.6.0 // indirect
 | 
				
			||||||
 | 
						github.com/spf13/pflag v1.0.5 // indirect
 | 
				
			||||||
 | 
						github.com/subosito/gotenv v1.6.0 // indirect
 | 
				
			||||||
 | 
						github.com/twpayne/go-polyline v1.1.1 // indirect
 | 
				
			||||||
 | 
						github.com/xdg-go/pbkdf2 v1.0.0 // indirect
 | 
				
			||||||
 | 
						github.com/xdg-go/scram v1.1.2 // indirect
 | 
				
			||||||
 | 
						github.com/xdg-go/stringprep v1.0.4 // indirect
 | 
				
			||||||
 | 
						github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect
 | 
				
			||||||
 | 
						go.mongodb.org/mongo-driver v1.11.4 // indirect
 | 
				
			||||||
 | 
						go.uber.org/atomic v1.9.0 // indirect
 | 
				
			||||||
 | 
						go.uber.org/multierr v1.9.0 // indirect
 | 
				
			||||||
 | 
						golang.org/x/crypto v0.33.0 // indirect
 | 
				
			||||||
 | 
						golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect
 | 
				
			||||||
 | 
						golang.org/x/net v0.32.0 // indirect
 | 
				
			||||||
 | 
						golang.org/x/sync v0.11.0 // indirect
 | 
				
			||||||
 | 
						golang.org/x/sys v0.30.0 // indirect
 | 
				
			||||||
 | 
						golang.org/x/text v0.22.0 // indirect
 | 
				
			||||||
 | 
						google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect
 | 
				
			||||||
 | 
						gopkg.in/ini.v1 v1.67.0 // indirect
 | 
				
			||||||
 | 
						gopkg.in/yaml.v3 v3.0.1 // indirect
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,209 @@
 | 
				
			||||||
 | 
					git.coopgo.io/coopgo-platform/routing-service v0.0.0-20240919052617-d03cd410081c h1:I0pJtlpW7Eloiro+VXVRzdQYJW9AMmjNIczBlROCX9Y=
 | 
				
			||||||
 | 
					git.coopgo.io/coopgo-platform/routing-service v0.0.0-20240919052617-d03cd410081c/go.mod h1:Nh7o15LlV0OuO9zxvJIs9FlelpeAaLYkXtFdgIkFrgg=
 | 
				
			||||||
 | 
					github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
 | 
				
			||||||
 | 
					github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 | 
				
			||||||
 | 
					github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 | 
				
			||||||
 | 
					github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
 | 
				
			||||||
 | 
					github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 | 
				
			||||||
 | 
					github.com/dvyukov/go-fuzz v0.0.0-20200318091601-be3528f3a813/go.mod h1:11Gm+ccJnvAhCNLlf5+cS9KjtbaD5I5zaZpFMsTHWTw=
 | 
				
			||||||
 | 
					github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
 | 
				
			||||||
 | 
					github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
 | 
				
			||||||
 | 
					github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
 | 
				
			||||||
 | 
					github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
 | 
				
			||||||
 | 
					github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
 | 
				
			||||||
 | 
					github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 | 
				
			||||||
 | 
					github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
 | 
				
			||||||
 | 
					github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
 | 
				
			||||||
 | 
					github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
 | 
				
			||||||
 | 
					github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
 | 
				
			||||||
 | 
					github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
 | 
				
			||||||
 | 
					github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
 | 
				
			||||||
 | 
					github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
 | 
				
			||||||
 | 
					github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
 | 
				
			||||||
 | 
					github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
 | 
				
			||||||
 | 
					github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
 | 
				
			||||||
 | 
					github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 | 
				
			||||||
 | 
					github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 | 
				
			||||||
 | 
					github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
 | 
				
			||||||
 | 
					github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
 | 
				
			||||||
 | 
					github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
 | 
				
			||||||
 | 
					github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 | 
				
			||||||
 | 
					github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
 | 
				
			||||||
 | 
					github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
 | 
				
			||||||
 | 
					github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
 | 
				
			||||||
 | 
					github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
 | 
				
			||||||
 | 
					github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
 | 
				
			||||||
 | 
					github.com/klauspost/compress v1.17.2 h1:RlWWUY/Dr4fL8qk9YG7DTZ7PDgME2V4csBXA8L/ixi4=
 | 
				
			||||||
 | 
					github.com/klauspost/compress v1.17.2/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
 | 
				
			||||||
 | 
					github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
 | 
				
			||||||
 | 
					github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
 | 
				
			||||||
 | 
					github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
 | 
				
			||||||
 | 
					github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
 | 
				
			||||||
 | 
					github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
 | 
				
			||||||
 | 
					github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
 | 
				
			||||||
 | 
					github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
 | 
				
			||||||
 | 
					github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
 | 
				
			||||||
 | 
					github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
 | 
				
			||||||
 | 
					github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
 | 
				
			||||||
 | 
					github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
 | 
				
			||||||
 | 
					github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
 | 
				
			||||||
 | 
					github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA=
 | 
				
			||||||
 | 
					github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
 | 
				
			||||||
 | 
					github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
 | 
				
			||||||
 | 
					github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
 | 
				
			||||||
 | 
					github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc=
 | 
				
			||||||
 | 
					github.com/paulmach/orb v0.11.1 h1:3koVegMC4X/WeiXYz9iswopaTwMem53NzTJuTF20JzU=
 | 
				
			||||||
 | 
					github.com/paulmach/orb v0.11.1/go.mod h1:5mULz1xQfs3bmQm63QEJA6lNGujuRafwA5S/EnuLaLU=
 | 
				
			||||||
 | 
					github.com/paulmach/protoscan v0.2.1/go.mod h1:SpcSwydNLrxUGSDvXvO0P7g7AuhJ7lcKfDlhJCDw2gY=
 | 
				
			||||||
 | 
					github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM=
 | 
				
			||||||
 | 
					github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs=
 | 
				
			||||||
 | 
					github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 | 
				
			||||||
 | 
					github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
				
			||||||
 | 
					github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
 | 
				
			||||||
 | 
					github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
				
			||||||
 | 
					github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
 | 
				
			||||||
 | 
					github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
 | 
				
			||||||
 | 
					github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
 | 
				
			||||||
 | 
					github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8=
 | 
				
			||||||
 | 
					github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss=
 | 
				
			||||||
 | 
					github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ=
 | 
				
			||||||
 | 
					github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4=
 | 
				
			||||||
 | 
					github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE=
 | 
				
			||||||
 | 
					github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ=
 | 
				
			||||||
 | 
					github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo=
 | 
				
			||||||
 | 
					github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0=
 | 
				
			||||||
 | 
					github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8=
 | 
				
			||||||
 | 
					github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY=
 | 
				
			||||||
 | 
					github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0=
 | 
				
			||||||
 | 
					github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo=
 | 
				
			||||||
 | 
					github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
 | 
				
			||||||
 | 
					github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
 | 
				
			||||||
 | 
					github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI=
 | 
				
			||||||
 | 
					github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg=
 | 
				
			||||||
 | 
					github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
 | 
				
			||||||
 | 
					github.com/stretchr/objx v0.3.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
 | 
				
			||||||
 | 
					github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
 | 
				
			||||||
 | 
					github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
 | 
				
			||||||
 | 
					github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
 | 
				
			||||||
 | 
					github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
 | 
				
			||||||
 | 
					github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 | 
				
			||||||
 | 
					github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 | 
				
			||||||
 | 
					github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 | 
				
			||||||
 | 
					github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
 | 
				
			||||||
 | 
					github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
 | 
				
			||||||
 | 
					github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
 | 
				
			||||||
 | 
					github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
 | 
				
			||||||
 | 
					github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=
 | 
				
			||||||
 | 
					github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU=
 | 
				
			||||||
 | 
					github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
 | 
				
			||||||
 | 
					github.com/twpayne/go-polyline v1.1.1 h1:/tSF1BR7rN4HWj4XKqvRUNrCiYVMCvywxTFVofvDV0w=
 | 
				
			||||||
 | 
					github.com/twpayne/go-polyline v1.1.1/go.mod h1:ybd9IWWivW/rlXPXuuckeKUyF3yrIim+iqA7kSl4NFY=
 | 
				
			||||||
 | 
					github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c=
 | 
				
			||||||
 | 
					github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI=
 | 
				
			||||||
 | 
					github.com/xdg-go/scram v1.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g=
 | 
				
			||||||
 | 
					github.com/xdg-go/scram v1.1.2 h1:FHX5I5B4i4hKRVRBCFRxq1iQRej7WO3hhBuJf+UUySY=
 | 
				
			||||||
 | 
					github.com/xdg-go/scram v1.1.2/go.mod h1:RT/sEzTbU5y00aCK8UOx6R7YryM0iF1N2MOmC3kKLN4=
 | 
				
			||||||
 | 
					github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgklLGvcBnW8=
 | 
				
			||||||
 | 
					github.com/xdg-go/stringprep v1.0.4 h1:XLI/Ng3O1Atzq0oBs3TWm+5ZVgkq2aqdlvP9JtoZ6c8=
 | 
				
			||||||
 | 
					github.com/xdg-go/stringprep v1.0.4/go.mod h1:mPGuuIYwz7CmR2bT9j4GbQqutWS1zV24gijq1dTyGkM=
 | 
				
			||||||
 | 
					github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA=
 | 
				
			||||||
 | 
					github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 h1:ilQV1hzziu+LLM3zUTJ0trRztfwgjqKnBWNtSRkbmwM=
 | 
				
			||||||
 | 
					github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78/go.mod h1:aL8wCCfTfSfmXjznFBSZNN13rSJjlIOI1fUNAtF7rmI=
 | 
				
			||||||
 | 
					github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
 | 
				
			||||||
 | 
					github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
 | 
				
			||||||
 | 
					github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
 | 
				
			||||||
 | 
					go.mongodb.org/mongo-driver v1.11.4 h1:4ayjakA013OdpGyL2K3ZqylTac/rMjrJOMZ1EHizXas=
 | 
				
			||||||
 | 
					go.mongodb.org/mongo-driver v1.11.4/go.mod h1:PTSz5yu21bkT/wXpkS7WR5f0ddqw5quethTUn9WM+2g=
 | 
				
			||||||
 | 
					go.mongodb.org/mongo-driver/v2 v2.1.0 h1:/ELnVNjmfUKDsoBisXxuJL0noR9CfeUIrP7Yt3R+egg=
 | 
				
			||||||
 | 
					go.mongodb.org/mongo-driver/v2 v2.1.0/go.mod h1:AWiLRShSrk5RHQS3AEn3RL19rqOzVq49MCpWQ3x/huI=
 | 
				
			||||||
 | 
					go.opentelemetry.io/otel v1.32.0 h1:WnBN+Xjcteh0zdk01SVqV55d/m62NJLJdIyb4y/WO5U=
 | 
				
			||||||
 | 
					go.opentelemetry.io/otel v1.32.0/go.mod h1:00DCVSB0RQcnzlwyTfqtxSm+DRr9hpYrHjNGiBHVQIg=
 | 
				
			||||||
 | 
					go.opentelemetry.io/otel/metric v1.32.0 h1:xV2umtmNcThh2/a/aCP+h64Xx5wsj8qqnkYZktzNa0M=
 | 
				
			||||||
 | 
					go.opentelemetry.io/otel/metric v1.32.0/go.mod h1:jH7CIbbK6SH2V2wE16W05BHCtIDzauciCRLoc/SyMv8=
 | 
				
			||||||
 | 
					go.opentelemetry.io/otel/sdk v1.32.0 h1:RNxepc9vK59A8XsgZQouW8ue8Gkb4jpWtJm9ge5lEG4=
 | 
				
			||||||
 | 
					go.opentelemetry.io/otel/sdk v1.32.0/go.mod h1:LqgegDBjKMmb2GC6/PrTnteJG39I8/vJCAP9LlJXEjU=
 | 
				
			||||||
 | 
					go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU=
 | 
				
			||||||
 | 
					go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ=
 | 
				
			||||||
 | 
					go.opentelemetry.io/otel/trace v1.32.0 h1:WIC9mYrXf8TmY/EXuULKc8hR17vE+Hjv2cssQDe03fM=
 | 
				
			||||||
 | 
					go.opentelemetry.io/otel/trace v1.32.0/go.mod h1:+i4rkvCraA+tG6AzwloGaCtkx53Fa+L+V8e9a7YvhT8=
 | 
				
			||||||
 | 
					go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE=
 | 
				
			||||||
 | 
					go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
 | 
				
			||||||
 | 
					go.uber.org/multierr v1.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI=
 | 
				
			||||||
 | 
					go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ=
 | 
				
			||||||
 | 
					golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
				
			||||||
 | 
					golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
				
			||||||
 | 
					golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 | 
				
			||||||
 | 
					golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
 | 
				
			||||||
 | 
					golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
 | 
				
			||||||
 | 
					golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus=
 | 
				
			||||||
 | 
					golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M=
 | 
				
			||||||
 | 
					golang.org/x/exp v0.0.0-20230905200255-921286631fa9 h1:GoHiUyI/Tp2nVkLI2mCxVkOjsbSXD66ic0XW0js0R9g=
 | 
				
			||||||
 | 
					golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k=
 | 
				
			||||||
 | 
					golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 | 
				
			||||||
 | 
					golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 | 
				
			||||||
 | 
					golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
 | 
				
			||||||
 | 
					golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
 | 
				
			||||||
 | 
					golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 | 
				
			||||||
 | 
					golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 | 
				
			||||||
 | 
					golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
				
			||||||
 | 
					golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
 | 
				
			||||||
 | 
					golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
 | 
				
			||||||
 | 
					golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
 | 
				
			||||||
 | 
					golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI=
 | 
				
			||||||
 | 
					golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs=
 | 
				
			||||||
 | 
					golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
 | 
					golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
 | 
					golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
 | 
					golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
 | 
					golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
 | 
					golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w=
 | 
				
			||||||
 | 
					golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
 | 
				
			||||||
 | 
					golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
 | 
				
			||||||
 | 
					golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
 | 
				
			||||||
 | 
					golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 | 
				
			||||||
 | 
					golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 | 
				
			||||||
 | 
					golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 | 
				
			||||||
 | 
					golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
 | 
				
			||||||
 | 
					golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
 | 
				
			||||||
 | 
					golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM=
 | 
				
			||||||
 | 
					golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY=
 | 
				
			||||||
 | 
					golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 | 
				
			||||||
 | 
					golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 | 
				
			||||||
 | 
					golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
 | 
				
			||||||
 | 
					golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
 | 
				
			||||||
 | 
					golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
 | 
				
			||||||
 | 
					golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 | 
				
			||||||
 | 
					golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 | 
				
			||||||
 | 
					golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 | 
				
			||||||
 | 
					golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 | 
				
			||||||
 | 
					google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o=
 | 
				
			||||||
 | 
					google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU=
 | 
				
			||||||
 | 
					google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ=
 | 
				
			||||||
 | 
					google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw=
 | 
				
			||||||
 | 
					google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
 | 
				
			||||||
 | 
					google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
 | 
				
			||||||
 | 
					google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io=
 | 
				
			||||||
 | 
					google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
 | 
				
			||||||
 | 
					gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 | 
				
			||||||
 | 
					gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 | 
				
			||||||
 | 
					gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
 | 
				
			||||||
 | 
					gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 | 
				
			||||||
 | 
					gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
 | 
				
			||||||
 | 
					gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
 | 
				
			||||||
 | 
					gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
				
			||||||
 | 
					gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
				
			||||||
 | 
					gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 | 
				
			||||||
 | 
					gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,41 @@
 | 
				
			||||||
 | 
					package handler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import "git.coopgo.io/coopgo-platform/solidarity-transport/types"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (h *Handler) AddRegularAvailability(driver string, day int, startTime string, endTime string) error {
 | 
				
			||||||
 | 
						availability := types.DriverRegularAvailability{
 | 
				
			||||||
 | 
							DriverId:  driver,
 | 
				
			||||||
 | 
							Day:       day,
 | 
				
			||||||
 | 
							StartTime: startTime,
 | 
				
			||||||
 | 
							EndTime:   endTime,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if err := h.Storage.CreateDriverRegularAvailability(availability); err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (h *Handler) AddDriverRegularAvailabilities(availabilities []*types.DriverRegularAvailability) error {
 | 
				
			||||||
 | 
						if err := h.Storage.CreateDriverRegularAvailabilities(availabilities); err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (h *Handler) GetDriverRegularAvailabilities(driver string) ([]*types.DriverRegularAvailability, error) {
 | 
				
			||||||
 | 
						availabilities, err := h.Storage.GetDriverRegularAvailabilities(driver)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return availabilities, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (h *Handler) DeleteDriverRegularAvailabilities(driver string, availability string) error {
 | 
				
			||||||
 | 
						if err := h.Storage.DeleteDriverRegularAvailability(driver, availability); err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,73 @@
 | 
				
			||||||
 | 
					package handler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"errors"
 | 
				
			||||||
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"git.coopgo.io/coopgo-platform/solidarity-transport/types"
 | 
				
			||||||
 | 
						"github.com/google/uuid"
 | 
				
			||||||
 | 
						"github.com/rs/zerolog/log"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (h Handler) BookDriverJourney(passengerid string, driverid string, journeyid string) error {
 | 
				
			||||||
 | 
						journey, err := h.Storage.GetDriverJourney(journeyid)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							log.Error().Err(err).Msg("could not find driver journey")
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if journey.DriverId != driverid {
 | 
				
			||||||
 | 
							return errors.New("not authorized : journey id driver and driverid mismatch")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						booking := types.Booking{
 | 
				
			||||||
 | 
							Id:          uuid.NewString(),
 | 
				
			||||||
 | 
							GroupId:     uuid.NewString(),
 | 
				
			||||||
 | 
							Status:      "WAITING_CONFIRMATION",
 | 
				
			||||||
 | 
							PassengerId: passengerid,
 | 
				
			||||||
 | 
							DriverId:    driverid,
 | 
				
			||||||
 | 
							Journey:     journey,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if err := h.Storage.CreateBooking(booking); err != nil {
 | 
				
			||||||
 | 
							log.Error().Err(err).Msg("error creating booking")
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (h Handler) GetBookings(startdate time.Time, enddate time.Time) ([]*types.Booking, error) {
 | 
				
			||||||
 | 
						res := []*types.Booking{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bookings, err := h.Storage.GetAllBookings()
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							log.Error().Err(err).Msg("error retrieving bookings")
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for _, b := range bookings {
 | 
				
			||||||
 | 
							if b.Journey.DriverDepartureDate.After(startdate) && b.Journey.DriverDepartureDate.Before(enddate) {
 | 
				
			||||||
 | 
								res = append(res, b)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return res, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (h Handler) GetBooking(id string) (*types.Booking, error) {
 | 
				
			||||||
 | 
						booking, err := h.Storage.GetBooking(id)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							log.Error().Err(err).Msg("could not get booking")
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return booking, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (h Handler) UpdateBookingStatus(bookingid string, newStatus string) error {
 | 
				
			||||||
 | 
						if err := h.Storage.UpdateBookingStatus(bookingid, newStatus); err != nil {
 | 
				
			||||||
 | 
							log.Error().Err(err).Msg("could not update booking")
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,21 @@
 | 
				
			||||||
 | 
					package handler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"git.coopgo.io/coopgo-platform/routing-service"
 | 
				
			||||||
 | 
						"git.coopgo.io/coopgo-platform/solidarity-transport/storage"
 | 
				
			||||||
 | 
						"github.com/spf13/viper"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type Handler struct {
 | 
				
			||||||
 | 
						Config  *viper.Viper
 | 
				
			||||||
 | 
						Storage storage.Storage
 | 
				
			||||||
 | 
						Routing routing.RoutingService
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewSolidarityTransportHandler(cfg *viper.Viper, store storage.Storage, routing routing.RoutingService) (*Handler, error) {
 | 
				
			||||||
 | 
						return &Handler{
 | 
				
			||||||
 | 
							Config:  cfg,
 | 
				
			||||||
 | 
							Storage: store,
 | 
				
			||||||
 | 
							Routing: routing,
 | 
				
			||||||
 | 
						}, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,85 @@
 | 
				
			||||||
 | 
					package handler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"errors"
 | 
				
			||||||
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"git.coopgo.io/coopgo-platform/solidarity-transport/types"
 | 
				
			||||||
 | 
						"github.com/google/uuid"
 | 
				
			||||||
 | 
						"github.com/paulmach/orb"
 | 
				
			||||||
 | 
						"github.com/paulmach/orb/geojson"
 | 
				
			||||||
 | 
						"github.com/rs/zerolog/log"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (h *Handler) GetDriverJourneys(departure *geojson.Feature, arrival *geojson.Feature, departureDate time.Time) ([]*types.DriverJourney, error) {
 | 
				
			||||||
 | 
						day := int(departureDate.Weekday())
 | 
				
			||||||
 | 
						timeInDay := departureDate.Format("15:04")
 | 
				
			||||||
 | 
						driverJourneys := []*types.DriverJourney{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Get Availabilities
 | 
				
			||||||
 | 
						availabilities, err := h.Storage.GetRegularAvailabilities(day, timeInDay)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							log.Error().Err(err).Msg("error in GetRegularAvailabilities")
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for _, a := range availabilities {
 | 
				
			||||||
 | 
							log.Debug().Any("availability", a).Msg("Availability found")
 | 
				
			||||||
 | 
							if a.Address != nil {
 | 
				
			||||||
 | 
								route, err := h.Routing.Route(
 | 
				
			||||||
 | 
									[]orb.Point{
 | 
				
			||||||
 | 
										a.Address.Point(),
 | 
				
			||||||
 | 
										departure.Point(),
 | 
				
			||||||
 | 
										arrival.Point(),
 | 
				
			||||||
 | 
										a.Address.Point(),
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
								)
 | 
				
			||||||
 | 
								if err != nil {
 | 
				
			||||||
 | 
									log.Error().Err(err).Msg("failedcomputing route request")
 | 
				
			||||||
 | 
									continue
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								log.Debug().Any("route", route).Msg("debug route")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								driverJourney := &types.DriverJourney{
 | 
				
			||||||
 | 
									Id:                  uuid.NewString(),
 | 
				
			||||||
 | 
									DriverId:            a.DriverId,
 | 
				
			||||||
 | 
									PassengerPickup:     departure,
 | 
				
			||||||
 | 
									PassengerDrop:       arrival,
 | 
				
			||||||
 | 
									PassengerDistance:   int64(route.Legs[1].Distance),
 | 
				
			||||||
 | 
									DriverDeparture:     a.Address,
 | 
				
			||||||
 | 
									DriverArrival:       a.Address,
 | 
				
			||||||
 | 
									DriverDistance:      int64(route.Distance),
 | 
				
			||||||
 | 
									Duration:            route.Legs[1].Duration,
 | 
				
			||||||
 | 
									JourneyPolyline:     route.Polyline,
 | 
				
			||||||
 | 
									PassengerPickupDate: departureDate,
 | 
				
			||||||
 | 
									DriverDepartureDate: departureDate.Add(-1 * route.Legs[0].Duration),
 | 
				
			||||||
 | 
									Price: types.SolidarityTransportPrice{
 | 
				
			||||||
 | 
										Currency: "EUR",
 | 
				
			||||||
 | 
										Amount:   0,
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								driverJourneys = append(driverJourneys, driverJourney)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if err := h.Storage.PushDriverJourneys(driverJourneys); err != nil {
 | 
				
			||||||
 | 
							log.Error().Err(err).Msg("error storing driver journeys in database")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return driverJourneys, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (h Handler) GetDriverJourney(driverid string, journeyid string) (*types.DriverJourney, error) {
 | 
				
			||||||
 | 
						journey, err := h.Storage.GetDriverJourney(journeyid)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							log.Error().Err(err).Msg("error retrieving journey")
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if driverid != journey.DriverId {
 | 
				
			||||||
 | 
							return nil, errors.New("not allowed, driver id mismatch")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return journey, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,62 @@
 | 
				
			||||||
 | 
					package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"os"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						routing "git.coopgo.io/coopgo-platform/routing-service"
 | 
				
			||||||
 | 
						"git.coopgo.io/coopgo-platform/solidarity-transport/handler"
 | 
				
			||||||
 | 
						grpcserver "git.coopgo.io/coopgo-platform/solidarity-transport/servers/grpc/server"
 | 
				
			||||||
 | 
						"git.coopgo.io/coopgo-platform/solidarity-transport/storage"
 | 
				
			||||||
 | 
						"github.com/rs/zerolog"
 | 
				
			||||||
 | 
						"github.com/rs/zerolog/log"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func main() {
 | 
				
			||||||
 | 
						zerolog.TimeFieldFormat = zerolog.TimeFormatUnix
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cfg, err := ReadConfig()
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							panic(err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var (
 | 
				
			||||||
 | 
							service_name         = cfg.GetString("name")
 | 
				
			||||||
 | 
							grpc_enable          = cfg.GetBool("services.grpc.enable")
 | 
				
			||||||
 | 
							dev_env              = cfg.GetBool("dev_env")
 | 
				
			||||||
 | 
							routing_service_type = cfg.GetString("routing.type")
 | 
				
			||||||
 | 
							valhalla_base_url    = cfg.GetString("routing.valhalla.base_url")
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
						if dev_env {
 | 
				
			||||||
 | 
							log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr})
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						log.Info().Msg("Running " + service_name)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						storage, err := storage.NewStorage(cfg)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							log.Fatal().Err(err).Msg("could not initiate storage")
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						routing, err := routing.NewRoutingService(routing_service_type, valhalla_base_url)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							log.Fatal().Err(err).Msg("Could not initiate the routing service")
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						handler, err := handler.NewSolidarityTransportHandler(cfg, storage, routing)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							log.Fatal().Err(err).Msg("could not initialize solidarity transport handler")
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						failed := make(chan error)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if grpc_enable {
 | 
				
			||||||
 | 
							log.Info().Msg("Running grpc server")
 | 
				
			||||||
 | 
							go grpcserver.Run(failed, cfg, handler)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						err = <-failed
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						log.Fatal().Err(err).Msg("Terminating")
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,7 @@
 | 
				
			||||||
 | 
					# Protocol buffer definition
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					From this directory, generate protocol buffer server and client boilerplate using :
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protoc --go_out=paths=source_relative:./gen --go-grpc_out=paths=source_relative:./gen ./*.proto
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(You need some dependencies like protoc, protoc-gen-go ... To get them easily, you can use the <https://git.coopgo.io/coopgo-platform/dev-environment> nix shell)
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,727 @@
 | 
				
			||||||
 | 
					// Code generated by protoc-gen-go. DO NOT EDIT.
 | 
				
			||||||
 | 
					// versions:
 | 
				
			||||||
 | 
					// 	protoc-gen-go v1.34.1
 | 
				
			||||||
 | 
					// 	protoc        v4.24.4
 | 
				
			||||||
 | 
					// source: solidarity-transport-types.proto
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package gen
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						protoreflect "google.golang.org/protobuf/reflect/protoreflect"
 | 
				
			||||||
 | 
						protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 | 
				
			||||||
 | 
						timestamppb "google.golang.org/protobuf/types/known/timestamppb"
 | 
				
			||||||
 | 
						reflect "reflect"
 | 
				
			||||||
 | 
						sync "sync"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						// Verify that this generated code is sufficiently up-to-date.
 | 
				
			||||||
 | 
						_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
 | 
				
			||||||
 | 
						// Verify that runtime/protoimpl is sufficiently up-to-date.
 | 
				
			||||||
 | 
						_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type GeoJsonFeature struct {
 | 
				
			||||||
 | 
						state         protoimpl.MessageState
 | 
				
			||||||
 | 
						sizeCache     protoimpl.SizeCache
 | 
				
			||||||
 | 
						unknownFields protoimpl.UnknownFields
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Serialized string `protobuf:"bytes,1,opt,name=serialized,proto3" json:"serialized,omitempty"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *GeoJsonFeature) Reset() {
 | 
				
			||||||
 | 
						*x = GeoJsonFeature{}
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
 | 
							mi := &file_solidarity_transport_types_proto_msgTypes[0]
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *GeoJsonFeature) String() string {
 | 
				
			||||||
 | 
						return protoimpl.X.MessageStringOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (*GeoJsonFeature) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *GeoJsonFeature) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
 | 
						mi := &file_solidarity_transport_types_proto_msgTypes[0]
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
 | 
								ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return ms
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return mi.MessageOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Deprecated: Use GeoJsonFeature.ProtoReflect.Descriptor instead.
 | 
				
			||||||
 | 
					func (*GeoJsonFeature) Descriptor() ([]byte, []int) {
 | 
				
			||||||
 | 
						return file_solidarity_transport_types_proto_rawDescGZIP(), []int{0}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *GeoJsonFeature) GetSerialized() string {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.Serialized
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return ""
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type GeoJsonFeatureCollection struct {
 | 
				
			||||||
 | 
						state         protoimpl.MessageState
 | 
				
			||||||
 | 
						sizeCache     protoimpl.SizeCache
 | 
				
			||||||
 | 
						unknownFields protoimpl.UnknownFields
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Serialized string `protobuf:"bytes,1,opt,name=serialized,proto3" json:"serialized,omitempty"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *GeoJsonFeatureCollection) Reset() {
 | 
				
			||||||
 | 
						*x = GeoJsonFeatureCollection{}
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
 | 
							mi := &file_solidarity_transport_types_proto_msgTypes[1]
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *GeoJsonFeatureCollection) String() string {
 | 
				
			||||||
 | 
						return protoimpl.X.MessageStringOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (*GeoJsonFeatureCollection) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *GeoJsonFeatureCollection) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
 | 
						mi := &file_solidarity_transport_types_proto_msgTypes[1]
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
 | 
								ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return ms
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return mi.MessageOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Deprecated: Use GeoJsonFeatureCollection.ProtoReflect.Descriptor instead.
 | 
				
			||||||
 | 
					func (*GeoJsonFeatureCollection) Descriptor() ([]byte, []int) {
 | 
				
			||||||
 | 
						return file_solidarity_transport_types_proto_rawDescGZIP(), []int{1}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *GeoJsonFeatureCollection) GetSerialized() string {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.Serialized
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return ""
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type DriverRegularAvailability struct {
 | 
				
			||||||
 | 
						state         protoimpl.MessageState
 | 
				
			||||||
 | 
						sizeCache     protoimpl.SizeCache
 | 
				
			||||||
 | 
						unknownFields protoimpl.UnknownFields
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Id        string          `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
 | 
				
			||||||
 | 
						DriverId  string          `protobuf:"bytes,2,opt,name=driver_id,json=driverId,proto3" json:"driver_id,omitempty"`
 | 
				
			||||||
 | 
						Day       int32           `protobuf:"varint,3,opt,name=day,proto3" json:"day,omitempty"`
 | 
				
			||||||
 | 
						StartTime string          `protobuf:"bytes,4,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
 | 
				
			||||||
 | 
						EndTime   string          `protobuf:"bytes,5,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
 | 
				
			||||||
 | 
						Address   *GeoJsonFeature `protobuf:"bytes,6,opt,name=address,proto3" json:"address,omitempty"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *DriverRegularAvailability) Reset() {
 | 
				
			||||||
 | 
						*x = DriverRegularAvailability{}
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
 | 
							mi := &file_solidarity_transport_types_proto_msgTypes[2]
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *DriverRegularAvailability) String() string {
 | 
				
			||||||
 | 
						return protoimpl.X.MessageStringOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (*DriverRegularAvailability) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *DriverRegularAvailability) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
 | 
						mi := &file_solidarity_transport_types_proto_msgTypes[2]
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
 | 
								ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return ms
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return mi.MessageOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Deprecated: Use DriverRegularAvailability.ProtoReflect.Descriptor instead.
 | 
				
			||||||
 | 
					func (*DriverRegularAvailability) Descriptor() ([]byte, []int) {
 | 
				
			||||||
 | 
						return file_solidarity_transport_types_proto_rawDescGZIP(), []int{2}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *DriverRegularAvailability) GetId() string {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.Id
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return ""
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *DriverRegularAvailability) GetDriverId() string {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.DriverId
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return ""
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *DriverRegularAvailability) GetDay() int32 {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.Day
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *DriverRegularAvailability) GetStartTime() string {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.StartTime
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return ""
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *DriverRegularAvailability) GetEndTime() string {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.EndTime
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return ""
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *DriverRegularAvailability) GetAddress() *GeoJsonFeature {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.Address
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type SolidarityTransportDriverJourney struct {
 | 
				
			||||||
 | 
						state         protoimpl.MessageState
 | 
				
			||||||
 | 
						sizeCache     protoimpl.SizeCache
 | 
				
			||||||
 | 
						unknownFields protoimpl.UnknownFields
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Id                  string                    `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
 | 
				
			||||||
 | 
						DriverId            string                    `protobuf:"bytes,2,opt,name=driver_id,json=driverId,proto3" json:"driver_id,omitempty"`
 | 
				
			||||||
 | 
						PassengerPickup     *GeoJsonFeature           `protobuf:"bytes,3,opt,name=passenger_pickup,json=passengerPickup,proto3" json:"passenger_pickup,omitempty"`
 | 
				
			||||||
 | 
						PassengerDrop       *GeoJsonFeature           `protobuf:"bytes,4,opt,name=passenger_drop,json=passengerDrop,proto3" json:"passenger_drop,omitempty"`
 | 
				
			||||||
 | 
						PassengerDistance   int64                     `protobuf:"varint,5,opt,name=passenger_distance,json=passengerDistance,proto3" json:"passenger_distance,omitempty"`
 | 
				
			||||||
 | 
						DriverDeparture     *GeoJsonFeature           `protobuf:"bytes,6,opt,name=driver_departure,json=driverDeparture,proto3" json:"driver_departure,omitempty"`
 | 
				
			||||||
 | 
						DriverArrival       *GeoJsonFeature           `protobuf:"bytes,7,opt,name=driver_arrival,json=driverArrival,proto3" json:"driver_arrival,omitempty"`
 | 
				
			||||||
 | 
						DriverDistance      int64                     `protobuf:"varint,8,opt,name=driver_distance,json=driverDistance,proto3" json:"driver_distance,omitempty"`
 | 
				
			||||||
 | 
						Duration            int64                     `protobuf:"varint,9,opt,name=duration,proto3" json:"duration,omitempty"`
 | 
				
			||||||
 | 
						JourneyPolyline     *string                   `protobuf:"bytes,10,opt,name=journey_polyline,json=journeyPolyline,proto3,oneof" json:"journey_polyline,omitempty"`
 | 
				
			||||||
 | 
						PassengerPickupDate *timestamppb.Timestamp    `protobuf:"bytes,11,opt,name=passenger_pickup_date,json=passengerPickupDate,proto3" json:"passenger_pickup_date,omitempty"`
 | 
				
			||||||
 | 
						DriverDepartureDate *timestamppb.Timestamp    `protobuf:"bytes,12,opt,name=driver_departure_date,json=driverDepartureDate,proto3,oneof" json:"driver_departure_date,omitempty"`
 | 
				
			||||||
 | 
						Price               *SolidarityTransportPrice `protobuf:"bytes,13,opt,name=price,proto3,oneof" json:"price,omitempty"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *SolidarityTransportDriverJourney) Reset() {
 | 
				
			||||||
 | 
						*x = SolidarityTransportDriverJourney{}
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
 | 
							mi := &file_solidarity_transport_types_proto_msgTypes[3]
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *SolidarityTransportDriverJourney) String() string {
 | 
				
			||||||
 | 
						return protoimpl.X.MessageStringOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (*SolidarityTransportDriverJourney) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *SolidarityTransportDriverJourney) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
 | 
						mi := &file_solidarity_transport_types_proto_msgTypes[3]
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
 | 
								ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return ms
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return mi.MessageOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Deprecated: Use SolidarityTransportDriverJourney.ProtoReflect.Descriptor instead.
 | 
				
			||||||
 | 
					func (*SolidarityTransportDriverJourney) Descriptor() ([]byte, []int) {
 | 
				
			||||||
 | 
						return file_solidarity_transport_types_proto_rawDescGZIP(), []int{3}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *SolidarityTransportDriverJourney) GetId() string {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.Id
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return ""
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *SolidarityTransportDriverJourney) GetDriverId() string {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.DriverId
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return ""
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *SolidarityTransportDriverJourney) GetPassengerPickup() *GeoJsonFeature {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.PassengerPickup
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *SolidarityTransportDriverJourney) GetPassengerDrop() *GeoJsonFeature {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.PassengerDrop
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *SolidarityTransportDriverJourney) GetPassengerDistance() int64 {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.PassengerDistance
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *SolidarityTransportDriverJourney) GetDriverDeparture() *GeoJsonFeature {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.DriverDeparture
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *SolidarityTransportDriverJourney) GetDriverArrival() *GeoJsonFeature {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.DriverArrival
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *SolidarityTransportDriverJourney) GetDriverDistance() int64 {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.DriverDistance
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *SolidarityTransportDriverJourney) GetDuration() int64 {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.Duration
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *SolidarityTransportDriverJourney) GetJourneyPolyline() string {
 | 
				
			||||||
 | 
						if x != nil && x.JourneyPolyline != nil {
 | 
				
			||||||
 | 
							return *x.JourneyPolyline
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return ""
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *SolidarityTransportDriverJourney) GetPassengerPickupDate() *timestamppb.Timestamp {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.PassengerPickupDate
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *SolidarityTransportDriverJourney) GetDriverDepartureDate() *timestamppb.Timestamp {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.DriverDepartureDate
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *SolidarityTransportDriverJourney) GetPrice() *SolidarityTransportPrice {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.Price
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type SolidarityTransportPrice struct {
 | 
				
			||||||
 | 
						state         protoimpl.MessageState
 | 
				
			||||||
 | 
						sizeCache     protoimpl.SizeCache
 | 
				
			||||||
 | 
						unknownFields protoimpl.UnknownFields
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Amount   float64 `protobuf:"fixed64,1,opt,name=amount,proto3" json:"amount,omitempty"`
 | 
				
			||||||
 | 
						Currency string  `protobuf:"bytes,2,opt,name=currency,proto3" json:"currency,omitempty"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *SolidarityTransportPrice) Reset() {
 | 
				
			||||||
 | 
						*x = SolidarityTransportPrice{}
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
 | 
							mi := &file_solidarity_transport_types_proto_msgTypes[4]
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *SolidarityTransportPrice) String() string {
 | 
				
			||||||
 | 
						return protoimpl.X.MessageStringOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (*SolidarityTransportPrice) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *SolidarityTransportPrice) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
 | 
						mi := &file_solidarity_transport_types_proto_msgTypes[4]
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
 | 
								ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return ms
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return mi.MessageOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Deprecated: Use SolidarityTransportPrice.ProtoReflect.Descriptor instead.
 | 
				
			||||||
 | 
					func (*SolidarityTransportPrice) Descriptor() ([]byte, []int) {
 | 
				
			||||||
 | 
						return file_solidarity_transport_types_proto_rawDescGZIP(), []int{4}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *SolidarityTransportPrice) GetAmount() float64 {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.Amount
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *SolidarityTransportPrice) GetCurrency() string {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.Currency
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return ""
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type SolidarityTransportBooking struct {
 | 
				
			||||||
 | 
						state         protoimpl.MessageState
 | 
				
			||||||
 | 
						sizeCache     protoimpl.SizeCache
 | 
				
			||||||
 | 
						unknownFields protoimpl.UnknownFields
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Id          string                            `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
 | 
				
			||||||
 | 
						GroupId     string                            `protobuf:"bytes,2,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`
 | 
				
			||||||
 | 
						DriverId    string                            `protobuf:"bytes,3,opt,name=driver_id,json=driverId,proto3" json:"driver_id,omitempty"`
 | 
				
			||||||
 | 
						PassengerId string                            `protobuf:"bytes,4,opt,name=passenger_id,json=passengerId,proto3" json:"passenger_id,omitempty"`
 | 
				
			||||||
 | 
						Status      string                            `protobuf:"bytes,5,opt,name=status,proto3" json:"status,omitempty"`
 | 
				
			||||||
 | 
						Journey     *SolidarityTransportDriverJourney `protobuf:"bytes,10,opt,name=journey,proto3" json:"journey,omitempty"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *SolidarityTransportBooking) Reset() {
 | 
				
			||||||
 | 
						*x = SolidarityTransportBooking{}
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
 | 
							mi := &file_solidarity_transport_types_proto_msgTypes[5]
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *SolidarityTransportBooking) String() string {
 | 
				
			||||||
 | 
						return protoimpl.X.MessageStringOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (*SolidarityTransportBooking) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *SolidarityTransportBooking) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
 | 
						mi := &file_solidarity_transport_types_proto_msgTypes[5]
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
 | 
								ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return ms
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return mi.MessageOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Deprecated: Use SolidarityTransportBooking.ProtoReflect.Descriptor instead.
 | 
				
			||||||
 | 
					func (*SolidarityTransportBooking) Descriptor() ([]byte, []int) {
 | 
				
			||||||
 | 
						return file_solidarity_transport_types_proto_rawDescGZIP(), []int{5}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *SolidarityTransportBooking) GetId() string {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.Id
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return ""
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *SolidarityTransportBooking) GetGroupId() string {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.GroupId
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return ""
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *SolidarityTransportBooking) GetDriverId() string {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.DriverId
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return ""
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *SolidarityTransportBooking) GetPassengerId() string {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.PassengerId
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return ""
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *SolidarityTransportBooking) GetStatus() string {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.Status
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return ""
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *SolidarityTransportBooking) GetJourney() *SolidarityTransportDriverJourney {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.Journey
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var File_solidarity_transport_types_proto protoreflect.FileDescriptor
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var file_solidarity_transport_types_proto_rawDesc = []byte{
 | 
				
			||||||
 | 
						0x0a, 0x20, 0x73, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69, 0x74, 0x79, 0x2d, 0x74, 0x72, 0x61,
 | 
				
			||||||
 | 
						0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f,
 | 
				
			||||||
 | 
						0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
 | 
				
			||||||
 | 
						0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72,
 | 
				
			||||||
 | 
						0x6f, 0x74, 0x6f, 0x22, 0x30, 0x0a, 0x0e, 0x47, 0x65, 0x6f, 0x4a, 0x73, 0x6f, 0x6e, 0x46, 0x65,
 | 
				
			||||||
 | 
						0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69,
 | 
				
			||||||
 | 
						0x7a, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x69, 0x61,
 | 
				
			||||||
 | 
						0x6c, 0x69, 0x7a, 0x65, 0x64, 0x22, 0x3a, 0x0a, 0x18, 0x47, 0x65, 0x6f, 0x4a, 0x73, 0x6f, 0x6e,
 | 
				
			||||||
 | 
						0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f,
 | 
				
			||||||
 | 
						0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18,
 | 
				
			||||||
 | 
						0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65,
 | 
				
			||||||
 | 
						0x64, 0x22, 0xbf, 0x01, 0x0a, 0x19, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x67, 0x75,
 | 
				
			||||||
 | 
						0x6c, 0x61, 0x72, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12,
 | 
				
			||||||
 | 
						0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12,
 | 
				
			||||||
 | 
						0x1b, 0x0a, 0x09, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
 | 
				
			||||||
 | 
						0x28, 0x09, 0x52, 0x08, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03,
 | 
				
			||||||
 | 
						0x64, 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x64, 0x61, 0x79, 0x12, 0x1d,
 | 
				
			||||||
 | 
						0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01,
 | 
				
			||||||
 | 
						0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a,
 | 
				
			||||||
 | 
						0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
 | 
				
			||||||
 | 
						0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72,
 | 
				
			||||||
 | 
						0x65, 0x73, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x47, 0x65, 0x6f, 0x4a,
 | 
				
			||||||
 | 
						0x73, 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72,
 | 
				
			||||||
 | 
						0x65, 0x73, 0x73, 0x22, 0xef, 0x05, 0x0a, 0x20, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69,
 | 
				
			||||||
 | 
						0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x72, 0x69, 0x76, 0x65,
 | 
				
			||||||
 | 
						0x72, 0x4a, 0x6f, 0x75, 0x72, 0x6e, 0x65, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
 | 
				
			||||||
 | 
						0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x72, 0x69, 0x76,
 | 
				
			||||||
 | 
						0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x72, 0x69,
 | 
				
			||||||
 | 
						0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x10, 0x70, 0x61, 0x73, 0x73, 0x65, 0x6e, 0x67,
 | 
				
			||||||
 | 
						0x65, 0x72, 0x5f, 0x70, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
 | 
				
			||||||
 | 
						0x0f, 0x2e, 0x47, 0x65, 0x6f, 0x4a, 0x73, 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65,
 | 
				
			||||||
 | 
						0x52, 0x0f, 0x70, 0x61, 0x73, 0x73, 0x65, 0x6e, 0x67, 0x65, 0x72, 0x50, 0x69, 0x63, 0x6b, 0x75,
 | 
				
			||||||
 | 
						0x70, 0x12, 0x36, 0x0a, 0x0e, 0x70, 0x61, 0x73, 0x73, 0x65, 0x6e, 0x67, 0x65, 0x72, 0x5f, 0x64,
 | 
				
			||||||
 | 
						0x72, 0x6f, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x47, 0x65, 0x6f, 0x4a,
 | 
				
			||||||
 | 
						0x73, 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x0d, 0x70, 0x61, 0x73, 0x73,
 | 
				
			||||||
 | 
						0x65, 0x6e, 0x67, 0x65, 0x72, 0x44, 0x72, 0x6f, 0x70, 0x12, 0x2d, 0x0a, 0x12, 0x70, 0x61, 0x73,
 | 
				
			||||||
 | 
						0x73, 0x65, 0x6e, 0x67, 0x65, 0x72, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18,
 | 
				
			||||||
 | 
						0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x70, 0x61, 0x73, 0x73, 0x65, 0x6e, 0x67, 0x65, 0x72,
 | 
				
			||||||
 | 
						0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x3a, 0x0a, 0x10, 0x64, 0x72, 0x69, 0x76,
 | 
				
			||||||
 | 
						0x65, 0x72, 0x5f, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x75, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01,
 | 
				
			||||||
 | 
						0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x47, 0x65, 0x6f, 0x4a, 0x73, 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74,
 | 
				
			||||||
 | 
						0x75, 0x72, 0x65, 0x52, 0x0f, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x44, 0x65, 0x70, 0x61, 0x72,
 | 
				
			||||||
 | 
						0x74, 0x75, 0x72, 0x65, 0x12, 0x36, 0x0a, 0x0e, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x61,
 | 
				
			||||||
 | 
						0x72, 0x72, 0x69, 0x76, 0x61, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x47,
 | 
				
			||||||
 | 
						0x65, 0x6f, 0x4a, 0x73, 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x0d, 0x64,
 | 
				
			||||||
 | 
						0x72, 0x69, 0x76, 0x65, 0x72, 0x41, 0x72, 0x72, 0x69, 0x76, 0x61, 0x6c, 0x12, 0x27, 0x0a, 0x0f,
 | 
				
			||||||
 | 
						0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18,
 | 
				
			||||||
 | 
						0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x44, 0x69, 0x73,
 | 
				
			||||||
 | 
						0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
 | 
				
			||||||
 | 
						0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
 | 
				
			||||||
 | 
						0x6e, 0x12, 0x2e, 0x0a, 0x10, 0x6a, 0x6f, 0x75, 0x72, 0x6e, 0x65, 0x79, 0x5f, 0x70, 0x6f, 0x6c,
 | 
				
			||||||
 | 
						0x79, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0f, 0x6a,
 | 
				
			||||||
 | 
						0x6f, 0x75, 0x72, 0x6e, 0x65, 0x79, 0x50, 0x6f, 0x6c, 0x79, 0x6c, 0x69, 0x6e, 0x65, 0x88, 0x01,
 | 
				
			||||||
 | 
						0x01, 0x12, 0x4e, 0x0a, 0x15, 0x70, 0x61, 0x73, 0x73, 0x65, 0x6e, 0x67, 0x65, 0x72, 0x5f, 0x70,
 | 
				
			||||||
 | 
						0x69, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b,
 | 
				
			||||||
 | 
						0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
 | 
				
			||||||
 | 
						0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x13, 0x70, 0x61,
 | 
				
			||||||
 | 
						0x73, 0x73, 0x65, 0x6e, 0x67, 0x65, 0x72, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x44, 0x61, 0x74,
 | 
				
			||||||
 | 
						0x65, 0x12, 0x53, 0x0a, 0x15, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x70, 0x61,
 | 
				
			||||||
 | 
						0x72, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b,
 | 
				
			||||||
 | 
						0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
 | 
				
			||||||
 | 
						0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x01, 0x52, 0x13,
 | 
				
			||||||
 | 
						0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x75, 0x72, 0x65, 0x44,
 | 
				
			||||||
 | 
						0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18,
 | 
				
			||||||
 | 
						0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69,
 | 
				
			||||||
 | 
						0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65,
 | 
				
			||||||
 | 
						0x48, 0x02, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11,
 | 
				
			||||||
 | 
						0x5f, 0x6a, 0x6f, 0x75, 0x72, 0x6e, 0x65, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x79, 0x6c, 0x69, 0x6e,
 | 
				
			||||||
 | 
						0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x70,
 | 
				
			||||||
 | 
						0x61, 0x72, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f,
 | 
				
			||||||
 | 
						0x70, 0x72, 0x69, 0x63, 0x65, 0x22, 0x4e, 0x0a, 0x18, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72,
 | 
				
			||||||
 | 
						0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x69, 0x63,
 | 
				
			||||||
 | 
						0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
 | 
				
			||||||
 | 
						0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x75, 0x72,
 | 
				
			||||||
 | 
						0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x75, 0x72,
 | 
				
			||||||
 | 
						0x72, 0x65, 0x6e, 0x63, 0x79, 0x22, 0xdc, 0x01, 0x0a, 0x1a, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61,
 | 
				
			||||||
 | 
						0x72, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x6f, 0x6f,
 | 
				
			||||||
 | 
						0x6b, 0x69, 0x6e, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
 | 
				
			||||||
 | 
						0x52, 0x02, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64,
 | 
				
			||||||
 | 
						0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12,
 | 
				
			||||||
 | 
						0x1b, 0x0a, 0x09, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01,
 | 
				
			||||||
 | 
						0x28, 0x09, 0x52, 0x08, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c,
 | 
				
			||||||
 | 
						0x70, 0x61, 0x73, 0x73, 0x65, 0x6e, 0x67, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01,
 | 
				
			||||||
 | 
						0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x73, 0x73, 0x65, 0x6e, 0x67, 0x65, 0x72, 0x49, 0x64, 0x12,
 | 
				
			||||||
 | 
						0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
 | 
				
			||||||
 | 
						0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3b, 0x0a, 0x07, 0x6a, 0x6f, 0x75, 0x72, 0x6e,
 | 
				
			||||||
 | 
						0x65, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x53, 0x6f, 0x6c, 0x69, 0x64,
 | 
				
			||||||
 | 
						0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x72,
 | 
				
			||||||
 | 
						0x69, 0x76, 0x65, 0x72, 0x4a, 0x6f, 0x75, 0x72, 0x6e, 0x65, 0x79, 0x52, 0x07, 0x6a, 0x6f, 0x75,
 | 
				
			||||||
 | 
						0x72, 0x6e, 0x65, 0x79, 0x42, 0x4b, 0x5a, 0x49, 0x67, 0x69, 0x74, 0x2e, 0x63, 0x6f, 0x6f, 0x70,
 | 
				
			||||||
 | 
						0x67, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x63, 0x6f, 0x6f, 0x70, 0x67, 0x6f, 0x2d, 0x70, 0x6c, 0x61,
 | 
				
			||||||
 | 
						0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69, 0x74, 0x79,
 | 
				
			||||||
 | 
						0x2d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65,
 | 
				
			||||||
 | 
						0x72, 0x73, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65,
 | 
				
			||||||
 | 
						0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var (
 | 
				
			||||||
 | 
						file_solidarity_transport_types_proto_rawDescOnce sync.Once
 | 
				
			||||||
 | 
						file_solidarity_transport_types_proto_rawDescData = file_solidarity_transport_types_proto_rawDesc
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func file_solidarity_transport_types_proto_rawDescGZIP() []byte {
 | 
				
			||||||
 | 
						file_solidarity_transport_types_proto_rawDescOnce.Do(func() {
 | 
				
			||||||
 | 
							file_solidarity_transport_types_proto_rawDescData = protoimpl.X.CompressGZIP(file_solidarity_transport_types_proto_rawDescData)
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
						return file_solidarity_transport_types_proto_rawDescData
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var file_solidarity_transport_types_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
 | 
				
			||||||
 | 
					var file_solidarity_transport_types_proto_goTypes = []interface{}{
 | 
				
			||||||
 | 
						(*GeoJsonFeature)(nil),                   // 0: GeoJsonFeature
 | 
				
			||||||
 | 
						(*GeoJsonFeatureCollection)(nil),         // 1: GeoJsonFeatureCollection
 | 
				
			||||||
 | 
						(*DriverRegularAvailability)(nil),        // 2: DriverRegularAvailability
 | 
				
			||||||
 | 
						(*SolidarityTransportDriverJourney)(nil), // 3: SolidarityTransportDriverJourney
 | 
				
			||||||
 | 
						(*SolidarityTransportPrice)(nil),         // 4: SolidarityTransportPrice
 | 
				
			||||||
 | 
						(*SolidarityTransportBooking)(nil),       // 5: SolidarityTransportBooking
 | 
				
			||||||
 | 
						(*timestamppb.Timestamp)(nil),            // 6: google.protobuf.Timestamp
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					var file_solidarity_transport_types_proto_depIdxs = []int32{
 | 
				
			||||||
 | 
						0, // 0: DriverRegularAvailability.address:type_name -> GeoJsonFeature
 | 
				
			||||||
 | 
						0, // 1: SolidarityTransportDriverJourney.passenger_pickup:type_name -> GeoJsonFeature
 | 
				
			||||||
 | 
						0, // 2: SolidarityTransportDriverJourney.passenger_drop:type_name -> GeoJsonFeature
 | 
				
			||||||
 | 
						0, // 3: SolidarityTransportDriverJourney.driver_departure:type_name -> GeoJsonFeature
 | 
				
			||||||
 | 
						0, // 4: SolidarityTransportDriverJourney.driver_arrival:type_name -> GeoJsonFeature
 | 
				
			||||||
 | 
						6, // 5: SolidarityTransportDriverJourney.passenger_pickup_date:type_name -> google.protobuf.Timestamp
 | 
				
			||||||
 | 
						6, // 6: SolidarityTransportDriverJourney.driver_departure_date:type_name -> google.protobuf.Timestamp
 | 
				
			||||||
 | 
						4, // 7: SolidarityTransportDriverJourney.price:type_name -> SolidarityTransportPrice
 | 
				
			||||||
 | 
						3, // 8: SolidarityTransportBooking.journey:type_name -> SolidarityTransportDriverJourney
 | 
				
			||||||
 | 
						9, // [9:9] is the sub-list for method output_type
 | 
				
			||||||
 | 
						9, // [9:9] is the sub-list for method input_type
 | 
				
			||||||
 | 
						9, // [9:9] is the sub-list for extension type_name
 | 
				
			||||||
 | 
						9, // [9:9] is the sub-list for extension extendee
 | 
				
			||||||
 | 
						0, // [0:9] is the sub-list for field type_name
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func init() { file_solidarity_transport_types_proto_init() }
 | 
				
			||||||
 | 
					func file_solidarity_transport_types_proto_init() {
 | 
				
			||||||
 | 
						if File_solidarity_transport_types_proto != nil {
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if !protoimpl.UnsafeEnabled {
 | 
				
			||||||
 | 
							file_solidarity_transport_types_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
 | 
				
			||||||
 | 
								switch v := v.(*GeoJsonFeature); i {
 | 
				
			||||||
 | 
								case 0:
 | 
				
			||||||
 | 
									return &v.state
 | 
				
			||||||
 | 
								case 1:
 | 
				
			||||||
 | 
									return &v.sizeCache
 | 
				
			||||||
 | 
								case 2:
 | 
				
			||||||
 | 
									return &v.unknownFields
 | 
				
			||||||
 | 
								default:
 | 
				
			||||||
 | 
									return nil
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							file_solidarity_transport_types_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
 | 
				
			||||||
 | 
								switch v := v.(*GeoJsonFeatureCollection); i {
 | 
				
			||||||
 | 
								case 0:
 | 
				
			||||||
 | 
									return &v.state
 | 
				
			||||||
 | 
								case 1:
 | 
				
			||||||
 | 
									return &v.sizeCache
 | 
				
			||||||
 | 
								case 2:
 | 
				
			||||||
 | 
									return &v.unknownFields
 | 
				
			||||||
 | 
								default:
 | 
				
			||||||
 | 
									return nil
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							file_solidarity_transport_types_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
 | 
				
			||||||
 | 
								switch v := v.(*DriverRegularAvailability); i {
 | 
				
			||||||
 | 
								case 0:
 | 
				
			||||||
 | 
									return &v.state
 | 
				
			||||||
 | 
								case 1:
 | 
				
			||||||
 | 
									return &v.sizeCache
 | 
				
			||||||
 | 
								case 2:
 | 
				
			||||||
 | 
									return &v.unknownFields
 | 
				
			||||||
 | 
								default:
 | 
				
			||||||
 | 
									return nil
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							file_solidarity_transport_types_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
 | 
				
			||||||
 | 
								switch v := v.(*SolidarityTransportDriverJourney); i {
 | 
				
			||||||
 | 
								case 0:
 | 
				
			||||||
 | 
									return &v.state
 | 
				
			||||||
 | 
								case 1:
 | 
				
			||||||
 | 
									return &v.sizeCache
 | 
				
			||||||
 | 
								case 2:
 | 
				
			||||||
 | 
									return &v.unknownFields
 | 
				
			||||||
 | 
								default:
 | 
				
			||||||
 | 
									return nil
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							file_solidarity_transport_types_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
 | 
				
			||||||
 | 
								switch v := v.(*SolidarityTransportPrice); i {
 | 
				
			||||||
 | 
								case 0:
 | 
				
			||||||
 | 
									return &v.state
 | 
				
			||||||
 | 
								case 1:
 | 
				
			||||||
 | 
									return &v.sizeCache
 | 
				
			||||||
 | 
								case 2:
 | 
				
			||||||
 | 
									return &v.unknownFields
 | 
				
			||||||
 | 
								default:
 | 
				
			||||||
 | 
									return nil
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							file_solidarity_transport_types_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
 | 
				
			||||||
 | 
								switch v := v.(*SolidarityTransportBooking); i {
 | 
				
			||||||
 | 
								case 0:
 | 
				
			||||||
 | 
									return &v.state
 | 
				
			||||||
 | 
								case 1:
 | 
				
			||||||
 | 
									return &v.sizeCache
 | 
				
			||||||
 | 
								case 2:
 | 
				
			||||||
 | 
									return &v.unknownFields
 | 
				
			||||||
 | 
								default:
 | 
				
			||||||
 | 
									return nil
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						file_solidarity_transport_types_proto_msgTypes[3].OneofWrappers = []interface{}{}
 | 
				
			||||||
 | 
						type x struct{}
 | 
				
			||||||
 | 
						out := protoimpl.TypeBuilder{
 | 
				
			||||||
 | 
							File: protoimpl.DescBuilder{
 | 
				
			||||||
 | 
								GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 | 
				
			||||||
 | 
								RawDescriptor: file_solidarity_transport_types_proto_rawDesc,
 | 
				
			||||||
 | 
								NumEnums:      0,
 | 
				
			||||||
 | 
								NumMessages:   6,
 | 
				
			||||||
 | 
								NumExtensions: 0,
 | 
				
			||||||
 | 
								NumServices:   0,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							GoTypes:           file_solidarity_transport_types_proto_goTypes,
 | 
				
			||||||
 | 
							DependencyIndexes: file_solidarity_transport_types_proto_depIdxs,
 | 
				
			||||||
 | 
							MessageInfos:      file_solidarity_transport_types_proto_msgTypes,
 | 
				
			||||||
 | 
						}.Build()
 | 
				
			||||||
 | 
						File_solidarity_transport_types_proto = out.File
 | 
				
			||||||
 | 
						file_solidarity_transport_types_proto_rawDesc = nil
 | 
				
			||||||
 | 
						file_solidarity_transport_types_proto_goTypes = nil
 | 
				
			||||||
 | 
						file_solidarity_transport_types_proto_depIdxs = nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| 
						 | 
					@ -0,0 +1,448 @@
 | 
				
			||||||
 | 
					// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
 | 
				
			||||||
 | 
					// versions:
 | 
				
			||||||
 | 
					// - protoc-gen-go-grpc v1.3.0
 | 
				
			||||||
 | 
					// - protoc             v4.24.4
 | 
				
			||||||
 | 
					// source: solidarity-transport.proto
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package gen
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						context "context"
 | 
				
			||||||
 | 
						grpc "google.golang.org/grpc"
 | 
				
			||||||
 | 
						codes "google.golang.org/grpc/codes"
 | 
				
			||||||
 | 
						status "google.golang.org/grpc/status"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// This is a compile-time assertion to ensure that this generated file
 | 
				
			||||||
 | 
					// is compatible with the grpc package it is being compiled against.
 | 
				
			||||||
 | 
					// Requires gRPC-Go v1.32.0 or later.
 | 
				
			||||||
 | 
					const _ = grpc.SupportPackageIsVersion7
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						SolidarityTransport_AddDriverRegularAvailability_FullMethodName           = "/SolidarityTransport/AddDriverRegularAvailability"
 | 
				
			||||||
 | 
						SolidarityTransport_AddDriverRegularAvailabilities_FullMethodName         = "/SolidarityTransport/AddDriverRegularAvailabilities"
 | 
				
			||||||
 | 
						SolidarityTransport_GetDriverRegularAvailabilities_FullMethodName         = "/SolidarityTransport/GetDriverRegularAvailabilities"
 | 
				
			||||||
 | 
						SolidarityTransport_DeleteDriverRegularAvailability_FullMethodName        = "/SolidarityTransport/DeleteDriverRegularAvailability"
 | 
				
			||||||
 | 
						SolidarityTransport_GetDriverJourneys_FullMethodName                      = "/SolidarityTransport/GetDriverJourneys"
 | 
				
			||||||
 | 
						SolidarityTransport_GetDriverJourney_FullMethodName                       = "/SolidarityTransport/GetDriverJourney"
 | 
				
			||||||
 | 
						SolidarityTransport_BookDriverJourney_FullMethodName                      = "/SolidarityTransport/BookDriverJourney"
 | 
				
			||||||
 | 
						SolidarityTransport_GetSolidarityTransportBookings_FullMethodName         = "/SolidarityTransport/GetSolidarityTransportBookings"
 | 
				
			||||||
 | 
						SolidarityTransport_GetSolidarityTransportBooking_FullMethodName          = "/SolidarityTransport/GetSolidarityTransportBooking"
 | 
				
			||||||
 | 
						SolidarityTransport_UpdateSolidarityTransportBookingStatus_FullMethodName = "/SolidarityTransport/UpdateSolidarityTransportBookingStatus"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// SolidarityTransportClient is the client API for SolidarityTransport service.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
 | 
				
			||||||
 | 
					type SolidarityTransportClient interface {
 | 
				
			||||||
 | 
						// Availabilities management
 | 
				
			||||||
 | 
						AddDriverRegularAvailability(ctx context.Context, in *AddDriverRegularAvailabilityRequest, opts ...grpc.CallOption) (*AddDriverRegularAvailabilityResponse, error)
 | 
				
			||||||
 | 
						AddDriverRegularAvailabilities(ctx context.Context, in *AddDriverRegularAvailabilitiesRequest, opts ...grpc.CallOption) (*AddDriverRegularAvailabilitiesResponse, error)
 | 
				
			||||||
 | 
						GetDriverRegularAvailabilities(ctx context.Context, in *GetDriverRegularAvailabilitiesRequest, opts ...grpc.CallOption) (*GetDriverRegularAvailabilitiesResponse, error)
 | 
				
			||||||
 | 
						DeleteDriverRegularAvailability(ctx context.Context, in *DeleteDriverRegularAvailabilityRequest, opts ...grpc.CallOption) (*DeleteDriverRegularAvailabilityResponse, error)
 | 
				
			||||||
 | 
						// Search / Journeys
 | 
				
			||||||
 | 
						GetDriverJourneys(ctx context.Context, in *GetDriverJourneysRequest, opts ...grpc.CallOption) (*GetDriverJourneysResponse, error)
 | 
				
			||||||
 | 
						GetDriverJourney(ctx context.Context, in *GetDriverJourneyRequest, opts ...grpc.CallOption) (*GetDriverJourneyResponse, error)
 | 
				
			||||||
 | 
						// Booking flows
 | 
				
			||||||
 | 
						BookDriverJourney(ctx context.Context, in *BookDriverJourneyRequest, opts ...grpc.CallOption) (*BookDriverJourneyResponse, error)
 | 
				
			||||||
 | 
						GetSolidarityTransportBookings(ctx context.Context, in *GetSolidarityTransportBookingsRequest, opts ...grpc.CallOption) (*GetSolidarityTransportBookingsResponse, error)
 | 
				
			||||||
 | 
						GetSolidarityTransportBooking(ctx context.Context, in *GetSolidarityTransportBookingRequest, opts ...grpc.CallOption) (*GetSolidarityTransportBookingResponse, error)
 | 
				
			||||||
 | 
						UpdateSolidarityTransportBookingStatus(ctx context.Context, in *UpdateSolidarityTransportBookingStatusRequest, opts ...grpc.CallOption) (*UpdateSolidarityTransportBookingStatusResponse, error)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type solidarityTransportClient struct {
 | 
				
			||||||
 | 
						cc grpc.ClientConnInterface
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewSolidarityTransportClient(cc grpc.ClientConnInterface) SolidarityTransportClient {
 | 
				
			||||||
 | 
						return &solidarityTransportClient{cc}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (c *solidarityTransportClient) AddDriverRegularAvailability(ctx context.Context, in *AddDriverRegularAvailabilityRequest, opts ...grpc.CallOption) (*AddDriverRegularAvailabilityResponse, error) {
 | 
				
			||||||
 | 
						out := new(AddDriverRegularAvailabilityResponse)
 | 
				
			||||||
 | 
						err := c.cc.Invoke(ctx, SolidarityTransport_AddDriverRegularAvailability_FullMethodName, in, out, opts...)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return out, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (c *solidarityTransportClient) AddDriverRegularAvailabilities(ctx context.Context, in *AddDriverRegularAvailabilitiesRequest, opts ...grpc.CallOption) (*AddDriverRegularAvailabilitiesResponse, error) {
 | 
				
			||||||
 | 
						out := new(AddDriverRegularAvailabilitiesResponse)
 | 
				
			||||||
 | 
						err := c.cc.Invoke(ctx, SolidarityTransport_AddDriverRegularAvailabilities_FullMethodName, in, out, opts...)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return out, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (c *solidarityTransportClient) GetDriverRegularAvailabilities(ctx context.Context, in *GetDriverRegularAvailabilitiesRequest, opts ...grpc.CallOption) (*GetDriverRegularAvailabilitiesResponse, error) {
 | 
				
			||||||
 | 
						out := new(GetDriverRegularAvailabilitiesResponse)
 | 
				
			||||||
 | 
						err := c.cc.Invoke(ctx, SolidarityTransport_GetDriverRegularAvailabilities_FullMethodName, in, out, opts...)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return out, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (c *solidarityTransportClient) DeleteDriverRegularAvailability(ctx context.Context, in *DeleteDriverRegularAvailabilityRequest, opts ...grpc.CallOption) (*DeleteDriverRegularAvailabilityResponse, error) {
 | 
				
			||||||
 | 
						out := new(DeleteDriverRegularAvailabilityResponse)
 | 
				
			||||||
 | 
						err := c.cc.Invoke(ctx, SolidarityTransport_DeleteDriverRegularAvailability_FullMethodName, in, out, opts...)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return out, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (c *solidarityTransportClient) GetDriverJourneys(ctx context.Context, in *GetDriverJourneysRequest, opts ...grpc.CallOption) (*GetDriverJourneysResponse, error) {
 | 
				
			||||||
 | 
						out := new(GetDriverJourneysResponse)
 | 
				
			||||||
 | 
						err := c.cc.Invoke(ctx, SolidarityTransport_GetDriverJourneys_FullMethodName, in, out, opts...)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return out, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (c *solidarityTransportClient) GetDriverJourney(ctx context.Context, in *GetDriverJourneyRequest, opts ...grpc.CallOption) (*GetDriverJourneyResponse, error) {
 | 
				
			||||||
 | 
						out := new(GetDriverJourneyResponse)
 | 
				
			||||||
 | 
						err := c.cc.Invoke(ctx, SolidarityTransport_GetDriverJourney_FullMethodName, in, out, opts...)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return out, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (c *solidarityTransportClient) BookDriverJourney(ctx context.Context, in *BookDriverJourneyRequest, opts ...grpc.CallOption) (*BookDriverJourneyResponse, error) {
 | 
				
			||||||
 | 
						out := new(BookDriverJourneyResponse)
 | 
				
			||||||
 | 
						err := c.cc.Invoke(ctx, SolidarityTransport_BookDriverJourney_FullMethodName, in, out, opts...)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return out, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (c *solidarityTransportClient) GetSolidarityTransportBookings(ctx context.Context, in *GetSolidarityTransportBookingsRequest, opts ...grpc.CallOption) (*GetSolidarityTransportBookingsResponse, error) {
 | 
				
			||||||
 | 
						out := new(GetSolidarityTransportBookingsResponse)
 | 
				
			||||||
 | 
						err := c.cc.Invoke(ctx, SolidarityTransport_GetSolidarityTransportBookings_FullMethodName, in, out, opts...)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return out, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (c *solidarityTransportClient) GetSolidarityTransportBooking(ctx context.Context, in *GetSolidarityTransportBookingRequest, opts ...grpc.CallOption) (*GetSolidarityTransportBookingResponse, error) {
 | 
				
			||||||
 | 
						out := new(GetSolidarityTransportBookingResponse)
 | 
				
			||||||
 | 
						err := c.cc.Invoke(ctx, SolidarityTransport_GetSolidarityTransportBooking_FullMethodName, in, out, opts...)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return out, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (c *solidarityTransportClient) UpdateSolidarityTransportBookingStatus(ctx context.Context, in *UpdateSolidarityTransportBookingStatusRequest, opts ...grpc.CallOption) (*UpdateSolidarityTransportBookingStatusResponse, error) {
 | 
				
			||||||
 | 
						out := new(UpdateSolidarityTransportBookingStatusResponse)
 | 
				
			||||||
 | 
						err := c.cc.Invoke(ctx, SolidarityTransport_UpdateSolidarityTransportBookingStatus_FullMethodName, in, out, opts...)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return out, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// SolidarityTransportServer is the server API for SolidarityTransport service.
 | 
				
			||||||
 | 
					// All implementations must embed UnimplementedSolidarityTransportServer
 | 
				
			||||||
 | 
					// for forward compatibility
 | 
				
			||||||
 | 
					type SolidarityTransportServer interface {
 | 
				
			||||||
 | 
						// Availabilities management
 | 
				
			||||||
 | 
						AddDriverRegularAvailability(context.Context, *AddDriverRegularAvailabilityRequest) (*AddDriverRegularAvailabilityResponse, error)
 | 
				
			||||||
 | 
						AddDriverRegularAvailabilities(context.Context, *AddDriverRegularAvailabilitiesRequest) (*AddDriverRegularAvailabilitiesResponse, error)
 | 
				
			||||||
 | 
						GetDriverRegularAvailabilities(context.Context, *GetDriverRegularAvailabilitiesRequest) (*GetDriverRegularAvailabilitiesResponse, error)
 | 
				
			||||||
 | 
						DeleteDriverRegularAvailability(context.Context, *DeleteDriverRegularAvailabilityRequest) (*DeleteDriverRegularAvailabilityResponse, error)
 | 
				
			||||||
 | 
						// Search / Journeys
 | 
				
			||||||
 | 
						GetDriverJourneys(context.Context, *GetDriverJourneysRequest) (*GetDriverJourneysResponse, error)
 | 
				
			||||||
 | 
						GetDriverJourney(context.Context, *GetDriverJourneyRequest) (*GetDriverJourneyResponse, error)
 | 
				
			||||||
 | 
						// Booking flows
 | 
				
			||||||
 | 
						BookDriverJourney(context.Context, *BookDriverJourneyRequest) (*BookDriverJourneyResponse, error)
 | 
				
			||||||
 | 
						GetSolidarityTransportBookings(context.Context, *GetSolidarityTransportBookingsRequest) (*GetSolidarityTransportBookingsResponse, error)
 | 
				
			||||||
 | 
						GetSolidarityTransportBooking(context.Context, *GetSolidarityTransportBookingRequest) (*GetSolidarityTransportBookingResponse, error)
 | 
				
			||||||
 | 
						UpdateSolidarityTransportBookingStatus(context.Context, *UpdateSolidarityTransportBookingStatusRequest) (*UpdateSolidarityTransportBookingStatusResponse, error)
 | 
				
			||||||
 | 
						mustEmbedUnimplementedSolidarityTransportServer()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// UnimplementedSolidarityTransportServer must be embedded to have forward compatible implementations.
 | 
				
			||||||
 | 
					type UnimplementedSolidarityTransportServer struct {
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (UnimplementedSolidarityTransportServer) AddDriverRegularAvailability(context.Context, *AddDriverRegularAvailabilityRequest) (*AddDriverRegularAvailabilityResponse, error) {
 | 
				
			||||||
 | 
						return nil, status.Errorf(codes.Unimplemented, "method AddDriverRegularAvailability not implemented")
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					func (UnimplementedSolidarityTransportServer) AddDriverRegularAvailabilities(context.Context, *AddDriverRegularAvailabilitiesRequest) (*AddDriverRegularAvailabilitiesResponse, error) {
 | 
				
			||||||
 | 
						return nil, status.Errorf(codes.Unimplemented, "method AddDriverRegularAvailabilities not implemented")
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					func (UnimplementedSolidarityTransportServer) GetDriverRegularAvailabilities(context.Context, *GetDriverRegularAvailabilitiesRequest) (*GetDriverRegularAvailabilitiesResponse, error) {
 | 
				
			||||||
 | 
						return nil, status.Errorf(codes.Unimplemented, "method GetDriverRegularAvailabilities not implemented")
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					func (UnimplementedSolidarityTransportServer) DeleteDriverRegularAvailability(context.Context, *DeleteDriverRegularAvailabilityRequest) (*DeleteDriverRegularAvailabilityResponse, error) {
 | 
				
			||||||
 | 
						return nil, status.Errorf(codes.Unimplemented, "method DeleteDriverRegularAvailability not implemented")
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					func (UnimplementedSolidarityTransportServer) GetDriverJourneys(context.Context, *GetDriverJourneysRequest) (*GetDriverJourneysResponse, error) {
 | 
				
			||||||
 | 
						return nil, status.Errorf(codes.Unimplemented, "method GetDriverJourneys not implemented")
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					func (UnimplementedSolidarityTransportServer) GetDriverJourney(context.Context, *GetDriverJourneyRequest) (*GetDriverJourneyResponse, error) {
 | 
				
			||||||
 | 
						return nil, status.Errorf(codes.Unimplemented, "method GetDriverJourney not implemented")
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					func (UnimplementedSolidarityTransportServer) BookDriverJourney(context.Context, *BookDriverJourneyRequest) (*BookDriverJourneyResponse, error) {
 | 
				
			||||||
 | 
						return nil, status.Errorf(codes.Unimplemented, "method BookDriverJourney not implemented")
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					func (UnimplementedSolidarityTransportServer) GetSolidarityTransportBookings(context.Context, *GetSolidarityTransportBookingsRequest) (*GetSolidarityTransportBookingsResponse, error) {
 | 
				
			||||||
 | 
						return nil, status.Errorf(codes.Unimplemented, "method GetSolidarityTransportBookings not implemented")
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					func (UnimplementedSolidarityTransportServer) GetSolidarityTransportBooking(context.Context, *GetSolidarityTransportBookingRequest) (*GetSolidarityTransportBookingResponse, error) {
 | 
				
			||||||
 | 
						return nil, status.Errorf(codes.Unimplemented, "method GetSolidarityTransportBooking not implemented")
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					func (UnimplementedSolidarityTransportServer) UpdateSolidarityTransportBookingStatus(context.Context, *UpdateSolidarityTransportBookingStatusRequest) (*UpdateSolidarityTransportBookingStatusResponse, error) {
 | 
				
			||||||
 | 
						return nil, status.Errorf(codes.Unimplemented, "method UpdateSolidarityTransportBookingStatus not implemented")
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					func (UnimplementedSolidarityTransportServer) mustEmbedUnimplementedSolidarityTransportServer() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// UnsafeSolidarityTransportServer may be embedded to opt out of forward compatibility for this service.
 | 
				
			||||||
 | 
					// Use of this interface is not recommended, as added methods to SolidarityTransportServer will
 | 
				
			||||||
 | 
					// result in compilation errors.
 | 
				
			||||||
 | 
					type UnsafeSolidarityTransportServer interface {
 | 
				
			||||||
 | 
						mustEmbedUnimplementedSolidarityTransportServer()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func RegisterSolidarityTransportServer(s grpc.ServiceRegistrar, srv SolidarityTransportServer) {
 | 
				
			||||||
 | 
						s.RegisterService(&SolidarityTransport_ServiceDesc, srv)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func _SolidarityTransport_AddDriverRegularAvailability_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 | 
				
			||||||
 | 
						in := new(AddDriverRegularAvailabilityRequest)
 | 
				
			||||||
 | 
						if err := dec(in); err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if interceptor == nil {
 | 
				
			||||||
 | 
							return srv.(SolidarityTransportServer).AddDriverRegularAvailability(ctx, in)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
 | 
							Server:     srv,
 | 
				
			||||||
 | 
							FullMethod: SolidarityTransport_AddDriverRegularAvailability_FullMethodName,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
 | 
							return srv.(SolidarityTransportServer).AddDriverRegularAvailability(ctx, req.(*AddDriverRegularAvailabilityRequest))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return interceptor(ctx, in, info, handler)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func _SolidarityTransport_AddDriverRegularAvailabilities_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 | 
				
			||||||
 | 
						in := new(AddDriverRegularAvailabilitiesRequest)
 | 
				
			||||||
 | 
						if err := dec(in); err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if interceptor == nil {
 | 
				
			||||||
 | 
							return srv.(SolidarityTransportServer).AddDriverRegularAvailabilities(ctx, in)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
 | 
							Server:     srv,
 | 
				
			||||||
 | 
							FullMethod: SolidarityTransport_AddDriverRegularAvailabilities_FullMethodName,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
 | 
							return srv.(SolidarityTransportServer).AddDriverRegularAvailabilities(ctx, req.(*AddDriverRegularAvailabilitiesRequest))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return interceptor(ctx, in, info, handler)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func _SolidarityTransport_GetDriverRegularAvailabilities_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 | 
				
			||||||
 | 
						in := new(GetDriverRegularAvailabilitiesRequest)
 | 
				
			||||||
 | 
						if err := dec(in); err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if interceptor == nil {
 | 
				
			||||||
 | 
							return srv.(SolidarityTransportServer).GetDriverRegularAvailabilities(ctx, in)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
 | 
							Server:     srv,
 | 
				
			||||||
 | 
							FullMethod: SolidarityTransport_GetDriverRegularAvailabilities_FullMethodName,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
 | 
							return srv.(SolidarityTransportServer).GetDriverRegularAvailabilities(ctx, req.(*GetDriverRegularAvailabilitiesRequest))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return interceptor(ctx, in, info, handler)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func _SolidarityTransport_DeleteDriverRegularAvailability_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 | 
				
			||||||
 | 
						in := new(DeleteDriverRegularAvailabilityRequest)
 | 
				
			||||||
 | 
						if err := dec(in); err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if interceptor == nil {
 | 
				
			||||||
 | 
							return srv.(SolidarityTransportServer).DeleteDriverRegularAvailability(ctx, in)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
 | 
							Server:     srv,
 | 
				
			||||||
 | 
							FullMethod: SolidarityTransport_DeleteDriverRegularAvailability_FullMethodName,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
 | 
							return srv.(SolidarityTransportServer).DeleteDriverRegularAvailability(ctx, req.(*DeleteDriverRegularAvailabilityRequest))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return interceptor(ctx, in, info, handler)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func _SolidarityTransport_GetDriverJourneys_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 | 
				
			||||||
 | 
						in := new(GetDriverJourneysRequest)
 | 
				
			||||||
 | 
						if err := dec(in); err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if interceptor == nil {
 | 
				
			||||||
 | 
							return srv.(SolidarityTransportServer).GetDriverJourneys(ctx, in)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
 | 
							Server:     srv,
 | 
				
			||||||
 | 
							FullMethod: SolidarityTransport_GetDriverJourneys_FullMethodName,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
 | 
							return srv.(SolidarityTransportServer).GetDriverJourneys(ctx, req.(*GetDriverJourneysRequest))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return interceptor(ctx, in, info, handler)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func _SolidarityTransport_GetDriverJourney_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 | 
				
			||||||
 | 
						in := new(GetDriverJourneyRequest)
 | 
				
			||||||
 | 
						if err := dec(in); err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if interceptor == nil {
 | 
				
			||||||
 | 
							return srv.(SolidarityTransportServer).GetDriverJourney(ctx, in)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
 | 
							Server:     srv,
 | 
				
			||||||
 | 
							FullMethod: SolidarityTransport_GetDriverJourney_FullMethodName,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
 | 
							return srv.(SolidarityTransportServer).GetDriverJourney(ctx, req.(*GetDriverJourneyRequest))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return interceptor(ctx, in, info, handler)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func _SolidarityTransport_BookDriverJourney_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 | 
				
			||||||
 | 
						in := new(BookDriverJourneyRequest)
 | 
				
			||||||
 | 
						if err := dec(in); err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if interceptor == nil {
 | 
				
			||||||
 | 
							return srv.(SolidarityTransportServer).BookDriverJourney(ctx, in)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
 | 
							Server:     srv,
 | 
				
			||||||
 | 
							FullMethod: SolidarityTransport_BookDriverJourney_FullMethodName,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
 | 
							return srv.(SolidarityTransportServer).BookDriverJourney(ctx, req.(*BookDriverJourneyRequest))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return interceptor(ctx, in, info, handler)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func _SolidarityTransport_GetSolidarityTransportBookings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 | 
				
			||||||
 | 
						in := new(GetSolidarityTransportBookingsRequest)
 | 
				
			||||||
 | 
						if err := dec(in); err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if interceptor == nil {
 | 
				
			||||||
 | 
							return srv.(SolidarityTransportServer).GetSolidarityTransportBookings(ctx, in)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
 | 
							Server:     srv,
 | 
				
			||||||
 | 
							FullMethod: SolidarityTransport_GetSolidarityTransportBookings_FullMethodName,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
 | 
							return srv.(SolidarityTransportServer).GetSolidarityTransportBookings(ctx, req.(*GetSolidarityTransportBookingsRequest))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return interceptor(ctx, in, info, handler)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func _SolidarityTransport_GetSolidarityTransportBooking_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 | 
				
			||||||
 | 
						in := new(GetSolidarityTransportBookingRequest)
 | 
				
			||||||
 | 
						if err := dec(in); err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if interceptor == nil {
 | 
				
			||||||
 | 
							return srv.(SolidarityTransportServer).GetSolidarityTransportBooking(ctx, in)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
 | 
							Server:     srv,
 | 
				
			||||||
 | 
							FullMethod: SolidarityTransport_GetSolidarityTransportBooking_FullMethodName,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
 | 
							return srv.(SolidarityTransportServer).GetSolidarityTransportBooking(ctx, req.(*GetSolidarityTransportBookingRequest))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return interceptor(ctx, in, info, handler)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func _SolidarityTransport_UpdateSolidarityTransportBookingStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 | 
				
			||||||
 | 
						in := new(UpdateSolidarityTransportBookingStatusRequest)
 | 
				
			||||||
 | 
						if err := dec(in); err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if interceptor == nil {
 | 
				
			||||||
 | 
							return srv.(SolidarityTransportServer).UpdateSolidarityTransportBookingStatus(ctx, in)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
 | 
							Server:     srv,
 | 
				
			||||||
 | 
							FullMethod: SolidarityTransport_UpdateSolidarityTransportBookingStatus_FullMethodName,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
 | 
							return srv.(SolidarityTransportServer).UpdateSolidarityTransportBookingStatus(ctx, req.(*UpdateSolidarityTransportBookingStatusRequest))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return interceptor(ctx, in, info, handler)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// SolidarityTransport_ServiceDesc is the grpc.ServiceDesc for SolidarityTransport service.
 | 
				
			||||||
 | 
					// It's only intended for direct use with grpc.RegisterService,
 | 
				
			||||||
 | 
					// and not to be introspected or modified (even as a copy)
 | 
				
			||||||
 | 
					var SolidarityTransport_ServiceDesc = grpc.ServiceDesc{
 | 
				
			||||||
 | 
						ServiceName: "SolidarityTransport",
 | 
				
			||||||
 | 
						HandlerType: (*SolidarityTransportServer)(nil),
 | 
				
			||||||
 | 
						Methods: []grpc.MethodDesc{
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								MethodName: "AddDriverRegularAvailability",
 | 
				
			||||||
 | 
								Handler:    _SolidarityTransport_AddDriverRegularAvailability_Handler,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								MethodName: "AddDriverRegularAvailabilities",
 | 
				
			||||||
 | 
								Handler:    _SolidarityTransport_AddDriverRegularAvailabilities_Handler,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								MethodName: "GetDriverRegularAvailabilities",
 | 
				
			||||||
 | 
								Handler:    _SolidarityTransport_GetDriverRegularAvailabilities_Handler,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								MethodName: "DeleteDriverRegularAvailability",
 | 
				
			||||||
 | 
								Handler:    _SolidarityTransport_DeleteDriverRegularAvailability_Handler,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								MethodName: "GetDriverJourneys",
 | 
				
			||||||
 | 
								Handler:    _SolidarityTransport_GetDriverJourneys_Handler,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								MethodName: "GetDriverJourney",
 | 
				
			||||||
 | 
								Handler:    _SolidarityTransport_GetDriverJourney_Handler,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								MethodName: "BookDriverJourney",
 | 
				
			||||||
 | 
								Handler:    _SolidarityTransport_BookDriverJourney_Handler,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								MethodName: "GetSolidarityTransportBookings",
 | 
				
			||||||
 | 
								Handler:    _SolidarityTransport_GetSolidarityTransportBookings_Handler,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								MethodName: "GetSolidarityTransportBooking",
 | 
				
			||||||
 | 
								Handler:    _SolidarityTransport_GetSolidarityTransportBooking_Handler,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								MethodName: "UpdateSolidarityTransportBookingStatus",
 | 
				
			||||||
 | 
								Handler:    _SolidarityTransport_UpdateSolidarityTransportBookingStatus_Handler,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
						Streams:  []grpc.StreamDesc{},
 | 
				
			||||||
 | 
						Metadata: "solidarity-transport.proto",
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,52 @@
 | 
				
			||||||
 | 
					syntax = "proto3";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					option go_package = "git.coopgo.io/coopgo-platform/solidarity-transport/servers/grpc/proto/gen";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import "google/protobuf/timestamp.proto";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message GeoJsonFeature {
 | 
				
			||||||
 | 
					    string serialized = 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					message GeoJsonFeatureCollection {
 | 
				
			||||||
 | 
					    string serialized = 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message DriverRegularAvailability {
 | 
				
			||||||
 | 
					    string id = 1;
 | 
				
			||||||
 | 
					    string driver_id = 2;
 | 
				
			||||||
 | 
					    int32 day = 3;
 | 
				
			||||||
 | 
					    string start_time = 4;
 | 
				
			||||||
 | 
					    string end_time = 5;
 | 
				
			||||||
 | 
					    GeoJsonFeature address = 6;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message SolidarityTransportDriverJourney{
 | 
				
			||||||
 | 
					    string id = 1;
 | 
				
			||||||
 | 
					    string driver_id = 2;
 | 
				
			||||||
 | 
					    GeoJsonFeature passenger_pickup = 3;
 | 
				
			||||||
 | 
					    GeoJsonFeature passenger_drop = 4;
 | 
				
			||||||
 | 
					    int64 passenger_distance = 5;
 | 
				
			||||||
 | 
					    GeoJsonFeature driver_departure = 6;
 | 
				
			||||||
 | 
					    GeoJsonFeature driver_arrival = 7;
 | 
				
			||||||
 | 
					    int64 driver_distance = 8;
 | 
				
			||||||
 | 
					    int64 duration = 9;
 | 
				
			||||||
 | 
					    optional string journey_polyline = 10;
 | 
				
			||||||
 | 
					    google.protobuf.Timestamp passenger_pickup_date = 11;
 | 
				
			||||||
 | 
					    optional google.protobuf.Timestamp driver_departure_date = 12;
 | 
				
			||||||
 | 
					    optional SolidarityTransportPrice price = 13;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message SolidarityTransportPrice {
 | 
				
			||||||
 | 
					    double amount = 1;
 | 
				
			||||||
 | 
					    string currency = 2;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message SolidarityTransportBooking {
 | 
				
			||||||
 | 
					    string id = 1;
 | 
				
			||||||
 | 
					    string group_id = 2;
 | 
				
			||||||
 | 
					    string driver_id = 3;
 | 
				
			||||||
 | 
					    string passenger_id = 4;
 | 
				
			||||||
 | 
					    string status = 5;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    SolidarityTransportDriverJourney journey = 10;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,110 @@
 | 
				
			||||||
 | 
					syntax = "proto3";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					option go_package = "git.coopgo.io/coopgo-platform/solidarity-transport/servers/grpc/proto/gen";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import "google/protobuf/timestamp.proto";
 | 
				
			||||||
 | 
					import "solidarity-transport-types.proto";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					service SolidarityTransport {
 | 
				
			||||||
 | 
					    //Availabilities management
 | 
				
			||||||
 | 
					    rpc AddDriverRegularAvailability(AddDriverRegularAvailabilityRequest) returns (AddDriverRegularAvailabilityResponse) {}
 | 
				
			||||||
 | 
					    rpc AddDriverRegularAvailabilities(AddDriverRegularAvailabilitiesRequest) returns (AddDriverRegularAvailabilitiesResponse) {}
 | 
				
			||||||
 | 
					    rpc GetDriverRegularAvailabilities(GetDriverRegularAvailabilitiesRequest) returns (GetDriverRegularAvailabilitiesResponse) {}
 | 
				
			||||||
 | 
					    rpc DeleteDriverRegularAvailability(DeleteDriverRegularAvailabilityRequest) returns (DeleteDriverRegularAvailabilityResponse) {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Search / Journeys 
 | 
				
			||||||
 | 
					    rpc GetDriverJourneys(GetDriverJourneysRequest) returns (GetDriverJourneysResponse) {}
 | 
				
			||||||
 | 
					    rpc GetDriverJourney(GetDriverJourneyRequest) returns (GetDriverJourneyResponse) {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Booking flows
 | 
				
			||||||
 | 
					    rpc BookDriverJourney(BookDriverJourneyRequest) returns (BookDriverJourneyResponse) {}
 | 
				
			||||||
 | 
					    rpc GetSolidarityTransportBookings(GetSolidarityTransportBookingsRequest) returns (GetSolidarityTransportBookingsResponse) {}
 | 
				
			||||||
 | 
					    rpc GetSolidarityTransportBooking(GetSolidarityTransportBookingRequest) returns (GetSolidarityTransportBookingResponse) {}
 | 
				
			||||||
 | 
					    rpc UpdateSolidarityTransportBookingStatus(UpdateSolidarityTransportBookingStatusRequest) returns (UpdateSolidarityTransportBookingStatusResponse) {}
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message AddDriverRegularAvailabilityRequest{
 | 
				
			||||||
 | 
					    string driver_id = 1;
 | 
				
			||||||
 | 
					    int32 day = 2;
 | 
				
			||||||
 | 
					    string start_time = 3;
 | 
				
			||||||
 | 
					    string end_time = 4;
 | 
				
			||||||
 | 
					    GeoJsonFeature address = 5;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message AddDriverRegularAvailabilityResponse{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message AddDriverRegularAvailabilitiesRequest{
 | 
				
			||||||
 | 
					  repeated DriverRegularAvailability availabilities = 1;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message AddDriverRegularAvailabilitiesResponse{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message GetDriverRegularAvailabilitiesRequest {
 | 
				
			||||||
 | 
					    string driver_id = 1;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message GetDriverRegularAvailabilitiesResponse {
 | 
				
			||||||
 | 
					    repeated DriverRegularAvailability results = 1;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message DeleteDriverRegularAvailabilityRequest {
 | 
				
			||||||
 | 
					    string driver_id = 1;
 | 
				
			||||||
 | 
					    string availability_id = 2;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message DeleteDriverRegularAvailabilityResponse {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Search / Journeys 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message GetDriverJourneysRequest {
 | 
				
			||||||
 | 
					    GeoJsonFeature departure = 1;
 | 
				
			||||||
 | 
					    GeoJsonFeature arrival = 3;
 | 
				
			||||||
 | 
					    google.protobuf.Timestamp departure_date = 5;
 | 
				
			||||||
 | 
					    optional int64 time_delta = 6;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message GetDriverJourneysResponse {
 | 
				
			||||||
 | 
					    repeated SolidarityTransportDriverJourney driver_journeys = 1;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message GetDriverJourneyRequest {
 | 
				
			||||||
 | 
					    string driver_id = 1;
 | 
				
			||||||
 | 
					    string journey_id = 2;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message GetDriverJourneyResponse {
 | 
				
			||||||
 | 
					    SolidarityTransportDriverJourney driver_journey = 1;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message BookDriverJourneyRequest {
 | 
				
			||||||
 | 
					    string passenger_id = 1;
 | 
				
			||||||
 | 
					    string driver_id = 2;
 | 
				
			||||||
 | 
					    string driver_journey_id = 3;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message BookDriverJourneyResponse {
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message GetSolidarityTransportBookingsRequest {
 | 
				
			||||||
 | 
					    google.protobuf.Timestamp start_date = 1;
 | 
				
			||||||
 | 
					    google.protobuf.Timestamp end_date = 2;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message GetSolidarityTransportBookingsResponse {
 | 
				
			||||||
 | 
					    repeated SolidarityTransportBooking bookings = 1;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message GetSolidarityTransportBookingRequest {
 | 
				
			||||||
 | 
					    string id = 1;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message GetSolidarityTransportBookingResponse {
 | 
				
			||||||
 | 
					    SolidarityTransportBooking booking = 1;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message UpdateSolidarityTransportBookingStatusRequest {
 | 
				
			||||||
 | 
					    string booking_id = 1;
 | 
				
			||||||
 | 
					    string new_status = 2;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message UpdateSolidarityTransportBookingStatusResponse {}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,74 @@
 | 
				
			||||||
 | 
					package server
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"context"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"git.coopgo.io/coopgo-platform/solidarity-transport/servers/grpc/proto/gen"
 | 
				
			||||||
 | 
						"git.coopgo.io/coopgo-platform/solidarity-transport/servers/grpc/transformers"
 | 
				
			||||||
 | 
						"git.coopgo.io/coopgo-platform/solidarity-transport/types"
 | 
				
			||||||
 | 
						"github.com/rs/zerolog/log"
 | 
				
			||||||
 | 
						"google.golang.org/grpc/codes"
 | 
				
			||||||
 | 
						"google.golang.org/grpc/status"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (s SolidarityTransportServerImpl) AddDriverRegularAvailability(ctx context.Context, req *gen.AddDriverRegularAvailabilityRequest) (*gen.AddDriverRegularAvailabilityResponse, error) {
 | 
				
			||||||
 | 
						if err := s.Handler.AddRegularAvailability(req.DriverId, int(req.Day), req.StartTime, req.EndTime); err != nil {
 | 
				
			||||||
 | 
							return nil, status.Errorf(codes.Internal, "AddDriverRegularAvailability : %v", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return &gen.AddDriverRegularAvailabilityResponse{}, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (s SolidarityTransportServerImpl) AddDriverRegularAvailabilities(ctx context.Context, req *gen.AddDriverRegularAvailabilitiesRequest) (*gen.AddDriverRegularAvailabilitiesResponse, error) {
 | 
				
			||||||
 | 
						log.Info().Msg("grpc call - AddDriverRegularAvailabilities")
 | 
				
			||||||
 | 
						availabilities := []*types.DriverRegularAvailability{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for _, a := range req.Availabilities {
 | 
				
			||||||
 | 
							if a != nil {
 | 
				
			||||||
 | 
								log.Debug().Any("availability", a).Msg("New availability")
 | 
				
			||||||
 | 
								na := transformers.DriverRegularAvailabilityProtoToType(a)
 | 
				
			||||||
 | 
								availabilities = append(availabilities, na)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if err := s.Handler.AddDriverRegularAvailabilities(availabilities); err != nil {
 | 
				
			||||||
 | 
							log.Error().Err(err).Msg("AddDriverAvailabilities error")
 | 
				
			||||||
 | 
							return nil, status.Errorf(codes.Internal, "AddDriverRegularAvailabilities : %v", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return &gen.AddDriverRegularAvailabilitiesResponse{}, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (s SolidarityTransportServerImpl) GetDriverRegularAvailabilities(ctx context.Context, req *gen.GetDriverRegularAvailabilitiesRequest) (*gen.GetDriverRegularAvailabilitiesResponse, error) {
 | 
				
			||||||
 | 
						log.Info().Str("driver", req.DriverId).Msg("grpc call - GetDriverRegularAvailabilities")
 | 
				
			||||||
 | 
						availabilities, err := s.Handler.GetDriverRegularAvailabilities(req.DriverId)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							log.Error().Err(err).Msg("GetDriverRegularAvailabilities error")
 | 
				
			||||||
 | 
							return nil, status.Errorf(codes.Internal, "GetDriverRegularAvailabilities : %v", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						results := []*gen.DriverRegularAvailability{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						log.Debug().Any("availabilities", availabilities).Msg("retrieved availabilities")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for _, a := range availabilities {
 | 
				
			||||||
 | 
							if a != nil {
 | 
				
			||||||
 | 
								log.Debug().Any("availability", a).Msg("Availability")
 | 
				
			||||||
 | 
								protoavailability := transformers.DriverRegularAvailabilityTypeToProto(a)
 | 
				
			||||||
 | 
								results = append(results, protoavailability)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return &gen.GetDriverRegularAvailabilitiesResponse{
 | 
				
			||||||
 | 
							Results: results,
 | 
				
			||||||
 | 
						}, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (s SolidarityTransportServerImpl) DeleteDriverRegularAvailability(ctx context.Context, req *gen.DeleteDriverRegularAvailabilityRequest) (*gen.DeleteDriverRegularAvailabilityResponse, error) {
 | 
				
			||||||
 | 
						driverid := req.DriverId
 | 
				
			||||||
 | 
						availabilityid := req.AvailabilityId
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if err := s.Handler.DeleteDriverRegularAvailabilities(driverid, availabilityid); err != nil {
 | 
				
			||||||
 | 
							log.Error().Err(err).Msg("DeleteDriverRegularAvailability error")
 | 
				
			||||||
 | 
							return nil, status.Errorf(codes.Internal, "DeleteDriverRegularAvailability error : %v", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return &gen.DeleteDriverRegularAvailabilityResponse{}, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,76 @@
 | 
				
			||||||
 | 
					package server
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"context"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"git.coopgo.io/coopgo-platform/solidarity-transport/servers/grpc/proto/gen"
 | 
				
			||||||
 | 
						"git.coopgo.io/coopgo-platform/solidarity-transport/servers/grpc/transformers"
 | 
				
			||||||
 | 
						"github.com/rs/zerolog/log"
 | 
				
			||||||
 | 
						"google.golang.org/grpc/codes"
 | 
				
			||||||
 | 
						"google.golang.org/grpc/status"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (s SolidarityTransportServerImpl) BookDriverJourney(ctx context.Context, req *gen.BookDriverJourneyRequest) (*gen.BookDriverJourneyResponse, error) {
 | 
				
			||||||
 | 
						passengerId := req.PassengerId
 | 
				
			||||||
 | 
						driverId := req.DriverId
 | 
				
			||||||
 | 
						journeyId := req.DriverJourneyId
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if err := s.Handler.BookDriverJourney(passengerId, driverId, journeyId); err != nil {
 | 
				
			||||||
 | 
							log.Error().Err(err).Msg("issue in BookDriverJourney handler")
 | 
				
			||||||
 | 
							return nil, status.Errorf(codes.Internal, "could not create booking : %v", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return &gen.BookDriverJourneyResponse{}, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (s SolidarityTransportServerImpl) GetSolidarityTransportBookings(ctx context.Context, req *gen.GetSolidarityTransportBookingsRequest) (*gen.GetSolidarityTransportBookingsResponse, error) {
 | 
				
			||||||
 | 
						startdate := req.StartDate.AsTime()
 | 
				
			||||||
 | 
						enddate := req.EndDate.AsTime()
 | 
				
			||||||
 | 
						bookings, err := s.Handler.GetBookings(startdate, enddate)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							log.Error().Err(err).Msg("issue in GetBookings handler")
 | 
				
			||||||
 | 
							return nil, status.Errorf(codes.NotFound, "could not get bookings : %v", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						protobookings := []*gen.SolidarityTransportBooking{}
 | 
				
			||||||
 | 
						for _, b := range bookings {
 | 
				
			||||||
 | 
							protobooking, _ := transformers.BookingTypeToProto(b)
 | 
				
			||||||
 | 
							protobookings = append(protobookings, protobooking)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return &gen.GetSolidarityTransportBookingsResponse{
 | 
				
			||||||
 | 
							Bookings: protobookings,
 | 
				
			||||||
 | 
						}, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (s SolidarityTransportServerImpl) GetSolidarityTransportBooking(ctx context.Context, req *gen.GetSolidarityTransportBookingRequest) (*gen.GetSolidarityTransportBookingResponse, error) {
 | 
				
			||||||
 | 
						bookingid := req.Id
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						booking, err := s.Handler.GetBooking(bookingid)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							log.Error().Err(err).Msg("issue in GetBooking handler")
 | 
				
			||||||
 | 
							return nil, status.Errorf(codes.NotFound, "could not get booking : %v", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bookingproto, err := transformers.BookingTypeToProto(booking)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							log.Error().Err(err).Msg("issue in GetBooking handler")
 | 
				
			||||||
 | 
							return nil, status.Errorf(codes.NotFound, "transformer issue on booking : %v", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return &gen.GetSolidarityTransportBookingResponse{
 | 
				
			||||||
 | 
							Booking: bookingproto,
 | 
				
			||||||
 | 
						}, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (s SolidarityTransportServerImpl) UpdateSolidarityTransportBookingStatus(ctx context.Context, req *gen.UpdateSolidarityTransportBookingStatusRequest) (*gen.UpdateSolidarityTransportBookingStatusResponse, error) {
 | 
				
			||||||
 | 
						bookingid := req.BookingId
 | 
				
			||||||
 | 
						newStatus := req.NewStatus
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						err := s.Handler.UpdateBookingStatus(bookingid, newStatus)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							log.Error().Err(err).Msg("issue in GetBooking handler")
 | 
				
			||||||
 | 
							return nil, status.Errorf(codes.NotFound, "transformer issue on booking : %v", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return &gen.UpdateSolidarityTransportBookingStatusResponse{}, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,67 @@
 | 
				
			||||||
 | 
					package server
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"context"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"git.coopgo.io/coopgo-platform/solidarity-transport/servers/grpc/proto/gen"
 | 
				
			||||||
 | 
						"git.coopgo.io/coopgo-platform/solidarity-transport/servers/grpc/transformers"
 | 
				
			||||||
 | 
						"github.com/paulmach/orb/geojson"
 | 
				
			||||||
 | 
						"github.com/rs/zerolog/log"
 | 
				
			||||||
 | 
						"google.golang.org/grpc/codes"
 | 
				
			||||||
 | 
						"google.golang.org/grpc/status"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (s SolidarityTransportServerImpl) GetDriverJourneys(ctx context.Context, req *gen.GetDriverJourneysRequest) (*gen.GetDriverJourneysResponse, error) {
 | 
				
			||||||
 | 
						departureDate := req.DepartureDate.AsTime()
 | 
				
			||||||
 | 
						departure, err := geojson.UnmarshalFeature([]byte(req.Departure.Serialized))
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, status.Errorf(codes.Internal, "departure unmarshalling error: %v", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						arrival, err := geojson.UnmarshalFeature([]byte(req.Arrival.Serialized))
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, status.Errorf(codes.Internal, "arrival unmarhsalling error : %v", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						driverJourneys, err := s.Handler.GetDriverJourneys(departure, arrival, departureDate)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							log.Error().Err(err).Msg("issue in GetDriverJourneys handler")
 | 
				
			||||||
 | 
							return nil, status.Errorf(codes.Internal, "could not get driver journeys : %v", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						results := []*gen.SolidarityTransportDriverJourney{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for _, j := range driverJourneys {
 | 
				
			||||||
 | 
							// transformer
 | 
				
			||||||
 | 
							dj, err := transformers.DriverJourneyTypeToProto(j)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								log.Error().Err(err).Msg("issue while converting DriverJourney type to protobuf")
 | 
				
			||||||
 | 
								continue
 | 
				
			||||||
 | 
								// return nil, status.Errorf(codes.Internal, "could not get driver journeys : %v", err)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							results = append(results, dj)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return &gen.GetDriverJourneysResponse{
 | 
				
			||||||
 | 
							DriverJourneys: results,
 | 
				
			||||||
 | 
						}, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (s SolidarityTransportServerImpl) GetDriverJourney(ctx context.Context, req *gen.GetDriverJourneyRequest) (*gen.GetDriverJourneyResponse, error) {
 | 
				
			||||||
 | 
						driverid := req.DriverId
 | 
				
			||||||
 | 
						journeyid := req.JourneyId
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						journey, err := s.Handler.GetDriverJourney(driverid, journeyid)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, status.Errorf(codes.NotFound, "could not get driver journey : %v", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						protojourney, err := transformers.DriverJourneyTypeToProto(journey)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							log.Error().Err(err).Msg("transformation error")
 | 
				
			||||||
 | 
							return nil, status.Errorf(codes.NotFound, "transformation error : %v", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return &gen.GetDriverJourneyResponse{
 | 
				
			||||||
 | 
							DriverJourney: protojourney,
 | 
				
			||||||
 | 
						}, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,50 @@
 | 
				
			||||||
 | 
					package server
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
						"net"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"git.coopgo.io/coopgo-platform/solidarity-transport/handler"
 | 
				
			||||||
 | 
						"git.coopgo.io/coopgo-platform/solidarity-transport/servers/grpc/proto/gen"
 | 
				
			||||||
 | 
						"github.com/rs/zerolog/log"
 | 
				
			||||||
 | 
						"github.com/spf13/viper"
 | 
				
			||||||
 | 
						"google.golang.org/grpc"
 | 
				
			||||||
 | 
						"google.golang.org/grpc/reflection"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type SolidarityTransportServerImpl struct {
 | 
				
			||||||
 | 
						Handler *handler.Handler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						gen.UnimplementedSolidarityTransportServer
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewSolidarityTransportServer(handler *handler.Handler) *SolidarityTransportServerImpl {
 | 
				
			||||||
 | 
						return &SolidarityTransportServerImpl{
 | 
				
			||||||
 | 
							Handler: handler,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func Run(done chan error, cfg *viper.Viper, handler *handler.Handler) {
 | 
				
			||||||
 | 
						var (
 | 
				
			||||||
 | 
							dev_env = cfg.GetBool("dev_env")
 | 
				
			||||||
 | 
							address = ":" + cfg.GetString("services.grpc.port")
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						server := grpc.NewServer()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						gen.RegisterSolidarityTransportServer(server, NewSolidarityTransportServer(handler))
 | 
				
			||||||
 | 
						l, err := net.Listen("tcp", address)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							log.Fatal().Err(err).Msg("could not register solidarity transport grpc server")
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if dev_env {
 | 
				
			||||||
 | 
							reflection.Register(server)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if err := server.Serve(l); err != nil {
 | 
				
			||||||
 | 
							fmt.Println("gRPC service ended")
 | 
				
			||||||
 | 
							done <- err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -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)},
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -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
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -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
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -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
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,152 @@
 | 
				
			||||||
 | 
					package storage
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"errors"
 | 
				
			||||||
 | 
						"strings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"git.coopgo.io/coopgo-platform/solidarity-transport/types"
 | 
				
			||||||
 | 
						"github.com/google/uuid"
 | 
				
			||||||
 | 
						"github.com/spf13/viper"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type MemoryStorage struct {
 | 
				
			||||||
 | 
						DriverRegularAvailabilities map[string]*types.DriverRegularAvailability
 | 
				
			||||||
 | 
						DriverJourneys              map[string]*types.DriverJourney
 | 
				
			||||||
 | 
						Bookings                    map[string]*types.Booking
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewMemoryStorage(cfg *viper.Viper) (MemoryStorage, error) {
 | 
				
			||||||
 | 
						return MemoryStorage{
 | 
				
			||||||
 | 
							DriverRegularAvailabilities: map[string]*types.DriverRegularAvailability{},
 | 
				
			||||||
 | 
						}, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (s MemoryStorage) CreateDriverRegularAvailability(availability types.DriverRegularAvailability) error {
 | 
				
			||||||
 | 
						if availability.ID == "" {
 | 
				
			||||||
 | 
							availability.ID = uuid.NewString()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if s.DriverRegularAvailabilities[availability.ID] != nil {
 | 
				
			||||||
 | 
							return errors.New("availability already exists")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						s.DriverRegularAvailabilities[availability.ID] = &availability
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (s MemoryStorage) CreateDriverRegularAvailabilities(availabilities []*types.DriverRegularAvailability) error {
 | 
				
			||||||
 | 
						for _, availability := range availabilities {
 | 
				
			||||||
 | 
							if availability != nil {
 | 
				
			||||||
 | 
								if err := s.CreateDriverRegularAvailability(*availability); err != nil {
 | 
				
			||||||
 | 
									return err
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (s MemoryStorage) DeleteDriverRegularAvailability(driverid string, availabilityid string) error {
 | 
				
			||||||
 | 
						if s.DriverRegularAvailabilities[availabilityid] == nil {
 | 
				
			||||||
 | 
							return errors.New("availability doesn't exist")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if s.DriverRegularAvailabilities[availabilityid].DriverId != driverid {
 | 
				
			||||||
 | 
							return errors.New("unallowed to delete this availability : driver mismatch")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						s.DriverRegularAvailabilities[availabilityid] = nil
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (s MemoryStorage) GetDriverRegularAvailability(driverid string, availabilityid string) (*types.DriverRegularAvailability, error) {
 | 
				
			||||||
 | 
						if s.DriverRegularAvailabilities[availabilityid] == nil {
 | 
				
			||||||
 | 
							return nil, errors.New("availability doesn't exist")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if s.DriverRegularAvailabilities[availabilityid].DriverId != driverid {
 | 
				
			||||||
 | 
							return nil, errors.New("unallowed to get this availability : driver mismatch")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return s.DriverRegularAvailabilities[availabilityid], nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (s MemoryStorage) GetDriverRegularAvailabilities(driverid string) ([]*types.DriverRegularAvailability, error) {
 | 
				
			||||||
 | 
						result := []*types.DriverRegularAvailability{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for _, a := range s.DriverRegularAvailabilities {
 | 
				
			||||||
 | 
							if a.DriverId == driverid {
 | 
				
			||||||
 | 
								result = append(result, a)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return result, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (s MemoryStorage) GetRegularAvailabilities(day int, timeInDay string) ([]*types.DriverRegularAvailability, error) {
 | 
				
			||||||
 | 
						results := []*types.DriverRegularAvailability{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for _, a := range s.DriverRegularAvailabilities {
 | 
				
			||||||
 | 
							if a.Day == day && strings.Compare(a.StartTime, timeInDay) <= 0 && strings.Compare(a.EndTime, timeInDay) >= 0 {
 | 
				
			||||||
 | 
								results = append(results, a)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return results, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (s MemoryStorage) PushDriverJourneys(driverjourneys []*types.DriverJourney) error {
 | 
				
			||||||
 | 
						for _, j := range driverjourneys {
 | 
				
			||||||
 | 
							s.DriverJourneys[j.Id] = j
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (s MemoryStorage) GetDriverJourney(id string) (res *types.DriverJourney, err error) {
 | 
				
			||||||
 | 
						res = s.DriverJourneys[id]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if res == nil {
 | 
				
			||||||
 | 
							err = errors.New("not found")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (s MemoryStorage) CreateBooking(booking types.Booking) error {
 | 
				
			||||||
 | 
						if booking.Id == "" {
 | 
				
			||||||
 | 
							booking.Id = uuid.NewString()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if s.Bookings[booking.Id] != nil {
 | 
				
			||||||
 | 
							return errors.New("booking already exists")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						s.Bookings[booking.Id] = &booking
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (s MemoryStorage) GetAllBookings() ([]*types.Booking, error) {
 | 
				
			||||||
 | 
						res := []*types.Booking{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for _, b := range s.Bookings {
 | 
				
			||||||
 | 
							res = append(res, b)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return res, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (s MemoryStorage) GetBooking(id string) (res *types.Booking, err error) {
 | 
				
			||||||
 | 
						res = s.Bookings[id]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if res == nil {
 | 
				
			||||||
 | 
							err = errors.New("not found")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (s MemoryStorage) UpdateBookingStatus(bookingid string, newStatus string) error {
 | 
				
			||||||
 | 
						b := s.Bookings[bookingid]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if b == nil {
 | 
				
			||||||
 | 
							return errors.New("booking doesn't exist")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						b.Status = newStatus
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,214 @@
 | 
				
			||||||
 | 
					package storage
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"context"
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"git.coopgo.io/coopgo-platform/solidarity-transport/types"
 | 
				
			||||||
 | 
						"github.com/google/uuid"
 | 
				
			||||||
 | 
						"github.com/rs/zerolog/log"
 | 
				
			||||||
 | 
						"github.com/spf13/viper"
 | 
				
			||||||
 | 
						"go.mongodb.org/mongo-driver/v2/bson"
 | 
				
			||||||
 | 
						"go.mongodb.org/mongo-driver/v2/mongo"
 | 
				
			||||||
 | 
						"go.mongodb.org/mongo-driver/v2/mongo/options"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type MongoDBCollections struct {
 | 
				
			||||||
 | 
						DriversRegularAvailabilities *mongo.Collection
 | 
				
			||||||
 | 
						Bookings                     *mongo.Collection
 | 
				
			||||||
 | 
						DriverJourneys               *mongo.Collection
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type MongoDBStorage struct {
 | 
				
			||||||
 | 
						Client      *mongo.Client
 | 
				
			||||||
 | 
						DbName      string
 | 
				
			||||||
 | 
						Collections MongoDBCollections
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewMongoDBStorage(cfg *viper.Viper) (MongoDBStorage, error) {
 | 
				
			||||||
 | 
						var (
 | 
				
			||||||
 | 
							mongodb_uri                            = cfg.GetString("storage.db.mongodb.uri")
 | 
				
			||||||
 | 
							mongodb_host                           = cfg.GetString("storage.db.mongodb.host")
 | 
				
			||||||
 | 
							mongodb_port                           = cfg.GetString("storage.db.mongodb.port")
 | 
				
			||||||
 | 
							mongodb_dbname                         = cfg.GetString("storage.db.mongodb.db_name")
 | 
				
			||||||
 | 
							mongodb_drivers_regular_availabilities = cfg.GetString("storage.db.mongodb.collections.drivers_regular_availabilities")
 | 
				
			||||||
 | 
							mongodb_bookings                       = cfg.GetString("storage.db.mongodb.collections.bookings")
 | 
				
			||||||
 | 
							mongodb_driver_journeys                = cfg.GetString("storage.db.mongodb.collections.driver_journeys")
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if mongodb_uri == "" {
 | 
				
			||||||
 | 
							mongodb_uri = fmt.Sprintf("mongodb://%s:%s/%s", mongodb_host, mongodb_port, mongodb_dbname)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						client, err := mongo.Connect(options.Client().ApplyURI(mongodb_uri))
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return MongoDBStorage{}, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						log.Info().Str("regular availabilities", mongodb_drivers_regular_availabilities).Str("bookings", mongodb_bookings).Msg("mongodb collections")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return MongoDBStorage{
 | 
				
			||||||
 | 
							Client: client,
 | 
				
			||||||
 | 
							DbName: mongodb_dbname,
 | 
				
			||||||
 | 
							Collections: MongoDBCollections{
 | 
				
			||||||
 | 
								DriversRegularAvailabilities: client.Database(mongodb_dbname).Collection(mongodb_drivers_regular_availabilities),
 | 
				
			||||||
 | 
								Bookings:                     client.Database(mongodb_dbname).Collection(mongodb_bookings),
 | 
				
			||||||
 | 
								DriverJourneys:               client.Database(mongodb_dbname).Collection(mongodb_driver_journeys),
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						}, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (s MongoDBStorage) CreateDriverRegularAvailability(availability types.DriverRegularAvailability) error {
 | 
				
			||||||
 | 
						if availability.ID == "" {
 | 
				
			||||||
 | 
							availability.ID = uuid.NewString()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if _, err := s.Collections.DriversRegularAvailabilities.InsertOne(context.Background(), availability); err != nil {
 | 
				
			||||||
 | 
							log.Error().Err(err).Msg("CreateDriverAvailability error")
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (s MongoDBStorage) CreateDriverRegularAvailabilities(availabilities []*types.DriverRegularAvailability) error {
 | 
				
			||||||
 | 
						for _, availability := range availabilities {
 | 
				
			||||||
 | 
							if availability.ID == "" {
 | 
				
			||||||
 | 
								availability.ID = uuid.NewString()
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if _, err := s.Collections.DriversRegularAvailabilities.InsertMany(context.Background(), availabilities); err != nil {
 | 
				
			||||||
 | 
							log.Error().Err(err).Msg("CreateDriverAvailabilities error")
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (s MongoDBStorage) DeleteDriverRegularAvailability(driverid string, availabilityid string) error {
 | 
				
			||||||
 | 
						if _, err := s.Collections.DriversRegularAvailabilities.DeleteOne(context.Background(), bson.M{"_id": availabilityid, "driver_id": driverid}); err != nil {
 | 
				
			||||||
 | 
							log.Error().Err(err).Msg("DeleteDriverRegularAvailability error")
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (s MongoDBStorage) GetDriverRegularAvailability(driverid string, availabilityid string) (*types.DriverRegularAvailability, error) {
 | 
				
			||||||
 | 
						var result types.DriverRegularAvailability
 | 
				
			||||||
 | 
						if err := s.Collections.DriversRegularAvailabilities.FindOne(context.Background(), bson.M{"_id": availabilityid, "driver_id": driverid}).Decode(&result); err != nil {
 | 
				
			||||||
 | 
							log.Error().Err(err).Msg("GetDriverRegularAvailability - error")
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return &result, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (s MongoDBStorage) GetDriverRegularAvailabilities(driverid string) ([]*types.DriverRegularAvailability, error) {
 | 
				
			||||||
 | 
						result := []*types.DriverRegularAvailability{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cur, err := s.Collections.DriversRegularAvailabilities.Find(context.Background(), bson.M{"driver_id": driverid})
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							log.Error().Err(err).Msg("GetDriverAvailabilities DB find - error")
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if err = cur.All(context.Background(), &result); err != nil {
 | 
				
			||||||
 | 
							log.Error().Err(err).Msg("GetDriverAvailabilities cursor decoding - error")
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return result, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (s MongoDBStorage) GetRegularAvailabilities(day int, timeInDay string) ([]*types.DriverRegularAvailability, error) {
 | 
				
			||||||
 | 
						result := []*types.DriverRegularAvailability{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cur, err := s.Collections.DriversRegularAvailabilities.Find(context.Background(),
 | 
				
			||||||
 | 
							bson.M{
 | 
				
			||||||
 | 
								"day":        day,
 | 
				
			||||||
 | 
								"start_time": bson.M{"$lt": timeInDay},
 | 
				
			||||||
 | 
								"end_time":   bson.M{"$gt": timeInDay},
 | 
				
			||||||
 | 
							})
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							log.Error().Err(err).Msg("GetDriverAvailabilities DB find - error")
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if err = cur.All(context.Background(), &result); err != nil {
 | 
				
			||||||
 | 
							log.Error().Err(err).Msg("GetDriverAvailabilities cursor decoding - error")
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return result, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (s MongoDBStorage) PushDriverJourneys(driverjourneys []*types.DriverJourney) error {
 | 
				
			||||||
 | 
						for _, journey := range driverjourneys {
 | 
				
			||||||
 | 
							if journey.Id == "" {
 | 
				
			||||||
 | 
								journey.Id = uuid.NewString()
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if _, err := s.Collections.DriverJourneys.InsertMany(context.Background(), driverjourneys); err != nil {
 | 
				
			||||||
 | 
							log.Error().Err(err).Msg("PushDriverJourneys error")
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (s MongoDBStorage) GetDriverJourney(id string) (*types.DriverJourney, error) {
 | 
				
			||||||
 | 
						var res types.DriverJourney
 | 
				
			||||||
 | 
						err := s.Collections.DriverJourneys.FindOne(context.Background(), bson.M{"_id": id}).Decode(&res)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return &res, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (s MongoDBStorage) CreateBooking(booking types.Booking) error {
 | 
				
			||||||
 | 
						if booking.Id == "" {
 | 
				
			||||||
 | 
							booking.Id = uuid.NewString()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if _, err := s.Collections.Bookings.InsertOne(context.Background(), booking); err != nil {
 | 
				
			||||||
 | 
							log.Error().Err(err).Msg("CreateBooking error")
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (s MongoDBStorage) GetAllBookings() ([]*types.Booking, error) {
 | 
				
			||||||
 | 
						res := []*types.Booking{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cur, err := s.Collections.Bookings.Find(context.Background(), bson.M{})
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						err = cur.All(context.Background(), &res)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return res, err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (s MongoDBStorage) GetBooking(id string) (*types.Booking, error) {
 | 
				
			||||||
 | 
						var res types.Booking
 | 
				
			||||||
 | 
						err := s.Collections.Bookings.FindOne(context.Background(), bson.M{"_id": id}).Decode(&res)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return &res, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (s MongoDBStorage) UpdateBookingStatus(bookingid string, newStatus string) error {
 | 
				
			||||||
 | 
						// filter := bson.M{"_id": bookingid}
 | 
				
			||||||
 | 
						replacement := bson.M{"$set": bson.M{"status": newStatus}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if _, err := s.Collections.Bookings.UpdateByID(context.Background(), bookingid, replacement); err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,40 @@
 | 
				
			||||||
 | 
					package storage
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"git.coopgo.io/coopgo-platform/solidarity-transport/types"
 | 
				
			||||||
 | 
						"github.com/spf13/viper"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type Storage interface {
 | 
				
			||||||
 | 
						CreateDriverRegularAvailability(types.DriverRegularAvailability) error
 | 
				
			||||||
 | 
						CreateDriverRegularAvailabilities([]*types.DriverRegularAvailability) error
 | 
				
			||||||
 | 
						DeleteDriverRegularAvailability(driverid string, availabilityid string) error
 | 
				
			||||||
 | 
						GetDriverRegularAvailability(driverid string, availabilityid string) (*types.DriverRegularAvailability, error)
 | 
				
			||||||
 | 
						GetDriverRegularAvailabilities(driverid string) ([]*types.DriverRegularAvailability, error)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						GetRegularAvailabilities(day int, timeInDay string) ([]*types.DriverRegularAvailability, error)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						PushDriverJourneys([]*types.DriverJourney) error
 | 
				
			||||||
 | 
						GetDriverJourney(id string) (*types.DriverJourney, error)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						CreateBooking(types.Booking) error
 | 
				
			||||||
 | 
						GetAllBookings() ([]*types.Booking, error)
 | 
				
			||||||
 | 
						GetBooking(id string) (*types.Booking, error)
 | 
				
			||||||
 | 
						UpdateBookingStatus(bookingid string, newStatus string) error
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewStorage(cfg *viper.Viper) (Storage, error) {
 | 
				
			||||||
 | 
						storage_type := cfg.GetString("storage.db.type")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						switch storage_type {
 | 
				
			||||||
 | 
						case "mongodb":
 | 
				
			||||||
 | 
							return NewMongoDBStorage(cfg)
 | 
				
			||||||
 | 
						case "memory":
 | 
				
			||||||
 | 
							return NewMemoryStorage(cfg)
 | 
				
			||||||
 | 
						default:
 | 
				
			||||||
 | 
							return nil, fmt.Errorf("storage type %v is not supported", storage_type)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,12 @@
 | 
				
			||||||
 | 
					package types
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import geojson "github.com/paulmach/orb/geojson"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type DriverRegularAvailability struct {
 | 
				
			||||||
 | 
						ID        string           `json:"id" bson:"_id"`
 | 
				
			||||||
 | 
						DriverId  string           `json:"driver_id" bson:"driver_id"`
 | 
				
			||||||
 | 
						Day       int              `json:"day" bson:"day"`
 | 
				
			||||||
 | 
						StartTime string           `json:"start_time" bson:"start_time"`
 | 
				
			||||||
 | 
						EndTime   string           `json:"end_time" bson:"end_time"`
 | 
				
			||||||
 | 
						Address   *geojson.Feature `json:"address" bson:"address"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,11 @@
 | 
				
			||||||
 | 
					package types
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type Booking struct {
 | 
				
			||||||
 | 
						Id          string `json:"id" bson:"_id"`
 | 
				
			||||||
 | 
						GroupId     string `json:"group_id" bson:"group_id"`
 | 
				
			||||||
 | 
						DriverId    string `json:"driver_id" bson:"driver_id"`
 | 
				
			||||||
 | 
						PassengerId string `json:"passenger_id" bson:"passenger_id"`
 | 
				
			||||||
 | 
						Status      string `json:"status" bson:"status"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Journey *DriverJourney `json:"journey,omitempty" bson:"journey,omitempty"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,36 @@
 | 
				
			||||||
 | 
					package types
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						geojson "github.com/paulmach/orb/geojson"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type SolidarityTransportPrice struct {
 | 
				
			||||||
 | 
						Amount   float64
 | 
				
			||||||
 | 
						Currency string
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type DriverJourney struct {
 | 
				
			||||||
 | 
						Id                  string           `json:"id" bson:"_id"`
 | 
				
			||||||
 | 
						DriverId            string           `json:"driver_id" bson:"driver_id"`
 | 
				
			||||||
 | 
						PassengerPickup     *geojson.Feature `json:"passenger_pickup" bson:"passenger_pickup"`
 | 
				
			||||||
 | 
						PassengerDrop       *geojson.Feature `json:"passenger_drop" bson:"passenger_drop"`
 | 
				
			||||||
 | 
						PassengerDistance   int64            `json:"passenger_distance" bson:"passenger_distance"`
 | 
				
			||||||
 | 
						DriverDeparture     *geojson.Feature `json:"driver_departure" bson:"driver_departure"`
 | 
				
			||||||
 | 
						DriverArrival       *geojson.Feature `json:"driver_arrival" bson:"driver_arrival"`
 | 
				
			||||||
 | 
						DriverDistance      int64            `json:"driver_distance" bson:"driver_distance"`
 | 
				
			||||||
 | 
						Duration            time.Duration
 | 
				
			||||||
 | 
						JourneyPolyline     string    `json:"journey_polyline" bson:"journey_polyline"`
 | 
				
			||||||
 | 
						PassengerPickupDate time.Time `json:"passenger_pickup_date" bson:"passenger_pickup_date"`
 | 
				
			||||||
 | 
						DriverDepartureDate time.Time `json:"driver_departure_date" bson:"driver_departure_date"`
 | 
				
			||||||
 | 
						Price               SolidarityTransportPrice
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type PassengerTrip struct {
 | 
				
			||||||
 | 
						Id                  string           `json:"id" bson:"_id"`
 | 
				
			||||||
 | 
						PassengerId         string           `json:"passenger_id" bson:"passenger_id"`
 | 
				
			||||||
 | 
						PassengerPickup     *geojson.Feature `json:"passenger_pickup" bson:"passenger_pickup"`
 | 
				
			||||||
 | 
						PassengerDrop       *geojson.Feature `json:"passenger_drop" bson:"passenger_drop"`
 | 
				
			||||||
 | 
						PassengerPickupDate time.Time        `json:"passenger_pickup_date" bson:"passenger_pickup_date"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
		Reference in New Issue