Compare commits
27 Commits
main
...
mongodbMod
Author | SHA1 | Date |
---|---|---|
Maxime | f19ecbb2b4 | |
Maxime | 6bceee5b43 | |
Maxime | a68bec8fb4 | |
Maxime | 0f5da4b5d9 | |
Maxime | f82f771bfa | |
Maxime | 575a3cc828 | |
Maxime | 2dee240595 | |
Maxime | 1d01133e1a | |
Maxime | 5c722cfcb1 | |
Maxime | 4dbe0bd926 | |
Maxime | 089d8e9c28 | |
Maxime | 065d1cecfd | |
Maxime | 935176da52 | |
Maxime | 860e3624d7 | |
Maxime | 87cd476a4f | |
Maxime | 6ac3aa3f46 | |
Maxime | 215ff8c264 | |
Maxime | fe58a2d37d | |
Maxime | 7e4b6f4971 | |
Maxime | 231477ccb8 | |
Maxime | 900eef52cf | |
Maxime | 4dc39b60d4 | |
Maxime | ea9450c23f | |
Maxime | 15b04da26f | |
Maxime | 1630105fb6 | |
Maxime | ac8d9fe1fc | |
Maxime | b971fdc861 |
14
config.yaml
14
config.yaml
|
@ -8,8 +8,8 @@ storage:
|
|||
psql:
|
||||
host: localhost
|
||||
dbname: coopgo_platform
|
||||
user: postgres
|
||||
password: postgres
|
||||
user: maxime
|
||||
password: posgres
|
||||
sslmode: disable
|
||||
port: 5432
|
||||
schema: solidarity_service
|
||||
|
@ -20,18 +20,14 @@ storage:
|
|||
|
||||
services:
|
||||
grpc:
|
||||
ip: 0.0.0.0
|
||||
ip: 192.168.238.1 #10.73.190.5
|
||||
enable: true
|
||||
port: 8089
|
||||
solidarity-api:
|
||||
enable: true
|
||||
address: 0.0.0.0:9999
|
||||
address: 192.168.238.1:9999 #10.73.190.5:9999
|
||||
|
||||
routing:
|
||||
type: valhalla
|
||||
valhalla:
|
||||
base_url: https://valhalla.coopgo.io/
|
||||
|
||||
|
||||
|
||||
|
||||
base_url: https://valhalla.coopgo.io/
|
77
go.mod
77
go.mod
|
@ -1,44 +1,75 @@
|
|||
module solidarity-service
|
||||
|
||||
go 1.20
|
||||
go 1.21
|
||||
|
||||
toolchain go1.23.2
|
||||
|
||||
require (
|
||||
git.coopgo.io/coopgo-platform/geocode v0.0.0-20240919052438-16ad0c51895a
|
||||
git.coopgo.io/coopgo-platform/mobility-accounts v0.0.0-20230430115320-f5bb2e7c2c26
|
||||
git.coopgo.io/coopgo-platform/routing-service v0.0.0-20230403183358-4d30329f06be
|
||||
github.com/golang/protobuf v1.5.3
|
||||
github.com/google/uuid v1.3.1
|
||||
github.com/appleboy/gorush v1.18.8
|
||||
github.com/golang-jwt/jwt/v4 v4.5.0
|
||||
github.com/golang/protobuf v1.5.4
|
||||
github.com/google/uuid v1.6.0
|
||||
github.com/gorilla/mux v1.8.1
|
||||
github.com/lib/pq v1.10.9
|
||||
github.com/paulmach/orb v0.10.0
|
||||
github.com/rs/zerolog v1.31.0
|
||||
github.com/spf13/viper v1.17.0
|
||||
google.golang.org/grpc v1.58.3
|
||||
google.golang.org/protobuf v1.31.0
|
||||
github.com/paulmach/orb v0.11.1
|
||||
github.com/pkg/errors v0.9.1
|
||||
github.com/rs/zerolog v1.32.0
|
||||
github.com/spf13/viper v1.18.2
|
||||
go.mongodb.org/mongo-driver v1.15.0
|
||||
google.golang.org/genproto v0.0.0-20240604185151-ef581f913117
|
||||
google.golang.org/grpc v1.66.2
|
||||
google.golang.org/protobuf v1.34.2
|
||||
gopkg.in/mail.v2 v2.3.1
|
||||
)
|
||||
|
||||
require (
|
||||
github.com/fsnotify/fsnotify v1.6.0 // indirect
|
||||
github.com/gorilla/mux v1.8.0 // indirect
|
||||
cloud.google.com/go/maps v1.11.0 // indirect
|
||||
github.com/coreos/go-semver v0.3.0 // indirect
|
||||
github.com/coreos/go-systemd/v22 v22.5.0 // indirect
|
||||
github.com/fsnotify/fsnotify v1.7.0 // indirect
|
||||
github.com/gogo/protobuf v1.3.2 // indirect
|
||||
github.com/golang/snappy v0.0.4 // indirect
|
||||
github.com/hashicorp/hcl v1.0.0 // indirect
|
||||
github.com/klauspost/compress v1.17.7 // 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/mattn/go-isatty v0.0.20 // indirect
|
||||
github.com/mitchellh/mapstructure v1.5.0 // indirect
|
||||
github.com/pelletier/go-toml/v2 v2.1.0 // indirect
|
||||
github.com/sagikazarmark/locafero v0.3.0 // indirect
|
||||
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe // indirect
|
||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // 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/santhosh-tekuri/jsonschema/v5 v5.0.0 // indirect
|
||||
github.com/sourcegraph/conc v0.3.0 // indirect
|
||||
github.com/spf13/afero v1.10.0 // indirect
|
||||
github.com/spf13/cast v1.5.1 // 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
|
||||
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/exp v0.0.0-20230905200255-921286631fa9 // indirect
|
||||
golang.org/x/net v0.15.0 // indirect
|
||||
golang.org/x/sys v0.12.0 // indirect
|
||||
golang.org/x/text v0.13.0 // indirect
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20230920204549-e6e6cdab5c13 // 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-20181117223130-1be2e3e5546d // indirect
|
||||
go.etcd.io/etcd/api/v3 v3.5.10 // indirect
|
||||
go.etcd.io/etcd/client/pkg/v3 v3.5.10 // indirect
|
||||
go.etcd.io/etcd/client/v3 v3.5.10 // indirect
|
||||
go.uber.org/atomic v1.11.0 // indirect
|
||||
go.uber.org/multierr v1.11.0 // indirect
|
||||
go.uber.org/zap v1.21.0 // indirect
|
||||
golang.org/x/crypto v0.24.0 // indirect
|
||||
golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f // indirect
|
||||
golang.org/x/net v0.26.0 // indirect
|
||||
golang.org/x/sync v0.7.0 // indirect
|
||||
golang.org/x/sys v0.21.0 // indirect
|
||||
golang.org/x/text v0.16.0 // indirect
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117 // indirect
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117 // indirect
|
||||
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect
|
||||
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f // indirect
|
||||
gopkg.in/ini.v1 v1.67.0 // indirect
|
||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||
)
|
||||
|
|
567
go.sum
567
go.sum
|
@ -1,153 +1,61 @@
|
|||
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||
cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
|
||||
cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU=
|
||||
cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
|
||||
cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
|
||||
cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
|
||||
cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
|
||||
cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
|
||||
cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=
|
||||
cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=
|
||||
cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=
|
||||
cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk=
|
||||
cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=
|
||||
cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc=
|
||||
cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=
|
||||
cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI=
|
||||
cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk=
|
||||
cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY=
|
||||
cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
|
||||
cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
|
||||
cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=
|
||||
cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=
|
||||
cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=
|
||||
cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=
|
||||
cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
|
||||
cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
|
||||
cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
|
||||
cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
|
||||
cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=
|
||||
cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=
|
||||
cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
|
||||
cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=
|
||||
cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
|
||||
cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
|
||||
cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
|
||||
cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo=
|
||||
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
|
||||
cloud.google.com/go/maps v1.11.0 h1:+//LeUr5ARVau1wVsxLkLnFtYviq9YFS+fB/mhfAOGQ=
|
||||
cloud.google.com/go/maps v1.11.0/go.mod h1:XcSsd8lg4ZhLPCtJ2YHcu/xLVePBzZOlI7GmR2cRCws=
|
||||
git.coopgo.io/coopgo-platform/geocode v0.0.0-20240919052438-16ad0c51895a h1:fdh8EewE46YyU+/BophnWgP33GYfSg2cBt3kYrumFV4=
|
||||
git.coopgo.io/coopgo-platform/geocode v0.0.0-20240919052438-16ad0c51895a/go.mod h1:v1ZKauCJ989bUkLHmsGdaxEa0S/L2OajERePcRqwMM8=
|
||||
git.coopgo.io/coopgo-platform/mobility-accounts v0.0.0-20230430115320-f5bb2e7c2c26 h1:qiYVLLNU29xgT0RRj0Jz0WrjEJnz1Eng1X7l1UW9jGU=
|
||||
git.coopgo.io/coopgo-platform/mobility-accounts v0.0.0-20230430115320-f5bb2e7c2c26/go.mod h1:1typNYtO+PQT6KG77vs/PUv0fO60/nbeSGZL2tt1LLg=
|
||||
git.coopgo.io/coopgo-platform/routing-service v0.0.0-20230403183358-4d30329f06be h1:VIzWX8NftKzQX1clunLaMf79Ut1dygcCc/ZLV/iWOaY=
|
||||
git.coopgo.io/coopgo-platform/routing-service v0.0.0-20230403183358-4d30329f06be/go.mod h1:Nh7o15LlV0OuO9zxvJIs9FlelpeAaLYkXtFdgIkFrgg=
|
||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
|
||||
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
||||
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
|
||||
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
|
||||
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
|
||||
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
||||
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
|
||||
github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
|
||||
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
|
||||
github.com/appleboy/gorush v1.18.8 h1:pwPjLPEeSc6OrlYrqFOAr6ombH7tKKhJdaaQa2Ul4sA=
|
||||
github.com/appleboy/gorush v1.18.8/go.mod h1:qoLmAkmDIuMd2c1qPYMo1/eEqQ5CfVaCscRYd0Y+flU=
|
||||
github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=
|
||||
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
|
||||
github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM=
|
||||
github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
|
||||
github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs=
|
||||
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/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
|
||||
github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po=
|
||||
github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
|
||||
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
||||
github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY=
|
||||
github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY=
|
||||
github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw=
|
||||
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
|
||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
||||
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/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
|
||||
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
|
||||
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
|
||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||
github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||
github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
|
||||
github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
|
||||
github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
|
||||
github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
|
||||
github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=
|
||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
|
||||
github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
|
||||
github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=
|
||||
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
|
||||
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
|
||||
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
|
||||
github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
|
||||
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
|
||||
github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
|
||||
github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
|
||||
github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
|
||||
github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg=
|
||||
github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
|
||||
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
|
||||
github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
|
||||
github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
|
||||
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/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
||||
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
||||
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
|
||||
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
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.4/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.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
|
||||
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
|
||||
github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
|
||||
github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
|
||||
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
|
||||
github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
|
||||
github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
|
||||
github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
|
||||
github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
|
||||
github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
|
||||
github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
|
||||
github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
|
||||
github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
|
||||
github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
|
||||
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
|
||||
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4=
|
||||
github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
|
||||
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
|
||||
github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g=
|
||||
github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=
|
||||
github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
|
||||
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
||||
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
||||
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/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=
|
||||
github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=
|
||||
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/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
|
||||
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
|
||||
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
|
||||
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
|
||||
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/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
|
||||
github.com/klauspost/compress v1.17.7 h1:ehO88t2UGzQK66LMdE8tibEd1ErmzZjNEqWkjLAKQQg=
|
||||
github.com/klauspost/compress v1.17.7/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
|
||||
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/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw=
|
||||
github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
|
||||
github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
|
||||
|
@ -155,398 +63,191 @@ github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3v
|
|||
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/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
|
||||
github.com/mattn/go-isatty v0.0.20/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 h1:iruDEfMl2E6fbMZ9s0scYfZQ84/6SPL6zC8ACM2oIL0=
|
||||
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc=
|
||||
github.com/paulmach/orb v0.10.0 h1:guVYVqzxHE/CQ1KpfGO077TR0ATHSNjp4s6XGLn3W9s=
|
||||
github.com/paulmach/orb v0.10.0/go.mod h1:5mULz1xQfs3bmQm63QEJA6lNGujuRafwA5S/EnuLaLU=
|
||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
||||
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.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4=
|
||||
github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc=
|
||||
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.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg=
|
||||
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/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
||||
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
||||
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.31.0 h1:FcTR3NnLWW+NnTwwhFWiJSZr4ECLpqCm6QsEnyvbV4A=
|
||||
github.com/rs/zerolog v1.31.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss=
|
||||
github.com/sagikazarmark/locafero v0.3.0 h1:zT7VEGWC2DTflmccN/5T1etyKvxSxpHsjb9cJvm4SvQ=
|
||||
github.com/sagikazarmark/locafero v0.3.0/go.mod h1:w+v7UsPNFwzF1cHuOajOOzoq4U7v/ig1mpRjqV+Bu1U=
|
||||
github.com/rs/zerolog v1.32.0 h1:keLypqrlIjaFsbmJOBdB/qvyF8KEtCWHwobLp5l/mQ0=
|
||||
github.com/rs/zerolog v1.32.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/santhosh-tekuri/jsonschema/v5 v5.0.0 h1:TToq11gyfNlrMFZiYujSekIsPd9AmsA2Bj/iv+s4JHE=
|
||||
github.com/santhosh-tekuri/jsonschema/v5 v5.0.0/go.mod h1:FKdcjfQW6rpZSnxxUvEA5H/cDPdvJ/SZJQLWWXWGrZ0=
|
||||
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.10.0 h1:EaGW2JJh15aKOejeuJ+wpFSHnbd7GE6Wvp3TsNhb6LY=
|
||||
github.com/spf13/afero v1.10.0/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ=
|
||||
github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA=
|
||||
github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48=
|
||||
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.17.0 h1:I5txKw7MJasPL/BrfkbA0Jyo/oELqVmux4pR/UxOMfI=
|
||||
github.com/spf13/viper v1.17.0/go.mod h1:BmMMMLQXSbcHK6KAOiFLz0l5JHrU89OdIRHvsk0+yVI=
|
||||
github.com/spf13/viper v1.18.2 h1:LUXCnvUvSM6FXAsj6nnfc8Q2tp1dIgUfY9Kc8GsSOiQ=
|
||||
github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk=
|
||||
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.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
||||
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
|
||||
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 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
|
||||
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 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4=
|
||||
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 h1:splanxYIlg+5LfHAM6xpdFEAYOk8iySO56hMFq6uLyA=
|
||||
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA=
|
||||
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
go.mongodb.org/mongo-driver v1.11.4 h1:4ayjakA013OdpGyL2K3ZqylTac/rMjrJOMZ1EHizXas=
|
||||
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
|
||||
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||
go.etcd.io/etcd/api/v3 v3.5.10 h1:szRajuUUbLyppkhs9K6BRtjY37l66XQQmw7oZRANE4k=
|
||||
go.etcd.io/etcd/api/v3 v3.5.10/go.mod h1:TidfmT4Uycad3NM/o25fG3J07odo4GBB9hoxaodFCtI=
|
||||
go.etcd.io/etcd/client/pkg/v3 v3.5.10 h1:kfYIdQftBnbAq8pUWFXfpuuxFSKzlmM5cSn76JByiT0=
|
||||
go.etcd.io/etcd/client/pkg/v3 v3.5.10/go.mod h1:DYivfIviIuQ8+/lCq4vcxuseg2P2XbHygkKwFo9fc8U=
|
||||
go.etcd.io/etcd/client/v3 v3.5.10 h1:W9TXNZ+oB3MCd/8UjxHTWK5J9Nquw9fQBLJd5ne5/Ao=
|
||||
go.etcd.io/etcd/client/v3 v3.5.10/go.mod h1:RVeBnDz2PUEZqTpgqwAtUd8nAPf5kjyFyND7P1VkOKc=
|
||||
go.mongodb.org/mongo-driver v1.11.4/go.mod h1:PTSz5yu21bkT/wXpkS7WR5f0ddqw5quethTUn9WM+2g=
|
||||
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
|
||||
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
|
||||
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
||||
go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
||||
go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
||||
go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
|
||||
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=
|
||||
go.mongodb.org/mongo-driver v1.15.0 h1:rJCKC8eEliewXjZGf0ddURtl7tTVy1TK3bfl0gkUSLc=
|
||||
go.mongodb.org/mongo-driver v1.15.0/go.mod h1:Vzb0Mk/pa7e6cWw85R4F/endUC3u0U9jGcNU603k65c=
|
||||
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
|
||||
go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE=
|
||||
go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
|
||||
go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI=
|
||||
go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=
|
||||
go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
|
||||
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
|
||||
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
|
||||
go.uber.org/zap v1.21.0 h1:WefMeulhovoZ2sYXz7st6K0sLj7bBhpiFaud4r4zST8=
|
||||
go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
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-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
|
||||
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.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
|
||||
golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=
|
||||
golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=
|
||||
golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
||||
golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
||||
golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
||||
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
|
||||
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
|
||||
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/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
|
||||
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
|
||||
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
|
||||
golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||
golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||
golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||
golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI=
|
||||
golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM=
|
||||
golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f h1:99ci1mjWVBWwJiEKYY6jWa4d2nTQVIEhZIptnrVb1XY=
|
||||
golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f/go.mod h1:/lliqkxwWAhPjf5oSOIJup2XcqJaw8RGS6k3TGEc7GI=
|
||||
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||
golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=
|
||||
golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
|
||||
golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
|
||||
golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
|
||||
golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
|
||||
golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
|
||||
golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
|
||||
golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
|
||||
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
||||
golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
||||
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.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/mod v0.4.2/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-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
|
||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/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-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||
golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||
golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||
golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||
golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||
golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
|
||||
golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
|
||||
golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
|
||||
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||
golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||
golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||
golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
|
||||
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/net v0.15.0 h1:ugBLEUaxABaB5AJqW9enI0ACdci2RUd4eP51NTBvuJ8=
|
||||
golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
|
||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
||||
golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
||||
golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
||||
golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||
golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ=
|
||||
golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE=
|
||||
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-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/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-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
|
||||
golang.org/x/sync v0.7.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-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/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-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
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.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o=
|
||||
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws=
|
||||
golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
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.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.4/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.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k=
|
||||
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
|
||||
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
|
||||
golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4=
|
||||
golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
|
||||
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||
golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||
golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||
golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
||||
golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
||||
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
||||
golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
||||
golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
||||
golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
||||
golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||
golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||
golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||
golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||
golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||
golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||
golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||
golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||
golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||
golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||
golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
|
||||
golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
|
||||
golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
|
||||
golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
||||
golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
||||
golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
||||
golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
||||
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
||||
golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
|
||||
golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
|
||||
golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
|
||||
golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE=
|
||||
golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||
golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||
golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||
golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||
golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||
golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
|
||||
golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
|
||||
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/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
|
||||
google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
|
||||
google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
|
||||
google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
|
||||
google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
|
||||
google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
|
||||
google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
|
||||
google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
|
||||
google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
|
||||
google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
|
||||
google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
|
||||
google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
|
||||
google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
|
||||
google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
|
||||
google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=
|
||||
google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc=
|
||||
google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg=
|
||||
google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE=
|
||||
google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8=
|
||||
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
|
||||
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||
google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||
google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
|
||||
google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
|
||||
google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
|
||||
google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
|
||||
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
||||
google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
|
||||
google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
|
||||
google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
|
||||
google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
|
||||
google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
|
||||
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
|
||||
google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
|
||||
google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||
google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||
google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||
google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||
google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||
google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||
google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=
|
||||
google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
||||
google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
||||
google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
||||
google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
||||
google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
||||
google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
||||
google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
||||
google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
||||
google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U=
|
||||
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
|
||||
google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=
|
||||
google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||
google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||
google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||
google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||
google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||
google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||
google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||
google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||
google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||
google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20230920204549-e6e6cdab5c13 h1:N3bU/SQDCDyD6R528GJ/PwW9KjYcJA3dgyH+MovAkIM=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20230920204549-e6e6cdab5c13/go.mod h1:KSqppvjFjtoCI+KGd4PELB0qLNxdJHRGqRI09mB6pQA=
|
||||
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
||||
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
|
||||
google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
|
||||
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
|
||||
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
|
||||
google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
||||
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
||||
google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
||||
google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=
|
||||
google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
|
||||
google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
|
||||
google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
|
||||
google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
|
||||
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
|
||||
google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8=
|
||||
google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
|
||||
google.golang.org/grpc v1.58.3 h1:BjnpXut1btbtgN/6sp+brB2Kbm2LjNXnidYujAVbSoQ=
|
||||
google.golang.org/grpc v1.58.3/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0=
|
||||
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
|
||||
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
|
||||
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
|
||||
google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
|
||||
google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
|
||||
google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||
google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
|
||||
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
|
||||
google.golang.org/genproto v0.0.0-20240604185151-ef581f913117 h1:HCZ6DlkKtCDAtD8ForECsY3tKuaR+p4R3grlK80uCCc=
|
||||
google.golang.org/genproto v0.0.0-20240604185151-ef581f913117/go.mod h1:lesfX/+9iA+3OdqeCpoDddJaNxVB1AB6tD7EfqMmprc=
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117 h1:+rdxYoE3E5htTEWIe15GlN6IfvbURM//Jt0mmkmm6ZU=
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117/go.mod h1:OimBR/bc1wPO9iV4NC2bpyjy3VnAwZh5EBPQdtaE5oo=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117 h1:1GBuWVLM/KMVUv1t1En5Gs+gFZCNd360GGb4sSxtrhU=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0=
|
||||
google.golang.org/grpc v1.66.2 h1:3QdXkuq3Bkh7w+ywLdLvM56cmGvQHUMZpiCzt6Rqaoo=
|
||||
google.golang.org/grpc v1.66.2/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y=
|
||||
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
|
||||
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
||||
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
||||
google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
|
||||
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
|
||||
google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
|
||||
google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
|
||||
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc h1:2gGKlE2+asNV9m7xrywl36YYNnBG5ZQ0r/BOOxqPpmk=
|
||||
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk=
|
||||
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/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
|
||||
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU=
|
||||
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/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.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/mail.v2 v2.3.1 h1:WYFn/oANrAGP2C0dcV6/pbkPzv8yGzqTjPmTeO7qoXk=
|
||||
gopkg.in/mail.v2 v2.3.1/go.mod h1:htwXN1Qh09vZJ1NVKxQqHPBaCBbzKhp5GzuJEA4VJWw=
|
||||
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
|
||||
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
|
||||
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=
|
||||
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
|
||||
honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
|
||||
honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
|
||||
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
|
||||
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
|
||||
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
|
||||
|
|
|
@ -4,12 +4,14 @@ import (
|
|||
"git.coopgo.io/coopgo-platform/routing-service"
|
||||
"github.com/spf13/viper"
|
||||
"solidarity-service/storage"
|
||||
|
||||
)
|
||||
|
||||
type SolidarityServiceHandler struct {
|
||||
Config *viper.Viper
|
||||
Routing routing.RoutingService
|
||||
Storage storage.Storage
|
||||
|
||||
}
|
||||
|
||||
func NewSolidarityServiceHandler(cfg *viper.Viper, routing routing.RoutingService, storage storage.Storage) (*SolidarityServiceHandler, error) {
|
||||
|
|
|
@ -2,8 +2,9 @@ package handler
|
|||
|
||||
import (
|
||||
"context"
|
||||
"github.com/paulmach/orb/geojson"
|
||||
"solidarity-service/internal"
|
||||
|
||||
"github.com/paulmach/orb/geojson"
|
||||
)
|
||||
|
||||
func (s *SolidarityServiceHandler) GetPassenger(ctx context.Context, id string) (passenger internal.Passenger, err error) {
|
||||
|
@ -14,6 +15,14 @@ func (s *SolidarityServiceHandler) GetPassenger(ctx context.Context, id string)
|
|||
return passenger, nil
|
||||
}
|
||||
|
||||
func (s *SolidarityServiceHandler) GetAllPassengers(ctx context.Context) (passengers []internal.Passenger, err error) {
|
||||
passengers, err = s.Storage.GetAllPassengers()
|
||||
if err != nil {
|
||||
return []internal.Passenger{}, err
|
||||
}
|
||||
return passengers, nil
|
||||
}
|
||||
|
||||
func (s *SolidarityServiceHandler) GetDriver(ctx context.Context, id string) (driver internal.Driver, err error) {
|
||||
driver, err = s.Storage.GetDriver(id)
|
||||
if err != nil {
|
||||
|
@ -37,21 +46,21 @@ func (s *SolidarityServiceHandler) SetPassengerTrip(ctx context.Context, passeng
|
|||
return nil
|
||||
}
|
||||
|
||||
func (s *SolidarityServiceHandler) CreateBooking(ctx context.Context, bookingRequest internal.BookingRequest) (passenger internal.Passenger, driver internal.Driver, err error) {
|
||||
func (s *SolidarityServiceHandler) CreateBooking(ctx context.Context, bookingRequest internal.BookingRequest) ( driver internal.Driver, err error) { //passenger internal.Passenger,
|
||||
bookingRequest.Operator = "internal-grpc"
|
||||
err = s.Storage.CreateBooking(bookingRequest)
|
||||
if err != nil {
|
||||
return internal.Passenger{}, internal.Driver{}, err
|
||||
}
|
||||
passenger, err = s.Storage.GetPassenger(bookingRequest.Passenger_id)
|
||||
if err != nil {
|
||||
return internal.Passenger{}, internal.Driver{}, err
|
||||
return internal.Driver{}, err //internal.Passenger{},
|
||||
}
|
||||
// passenger, err = s.Storage.GetPassenger(bookingRequest.Passenger_id)
|
||||
// if err != nil {
|
||||
// return internal.Passenger{}, internal.Driver{}, err
|
||||
// }
|
||||
driver, err = s.Storage.GetDriver(bookingRequest.Driver_id)
|
||||
if err != nil {
|
||||
return internal.Passenger{}, internal.Driver{}, err
|
||||
return internal.Driver{}, err //internal.Passenger{},
|
||||
}
|
||||
return passenger, driver, nil
|
||||
return driver, nil //passenger,
|
||||
}
|
||||
|
||||
func (s *SolidarityServiceHandler) UpdateBooking(ctx context.Context, bookingId string, status internal.BookingStatus) (err error) {
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -2,8 +2,6 @@ syntax = "proto3";
|
|||
option go_package = "git.coopgo.io/coopgo-platform/solidarity-service/servers/grpc/proto";
|
||||
import "google/protobuf/timestamp.proto";
|
||||
|
||||
|
||||
|
||||
message Feature {
|
||||
double lat = 1;
|
||||
double long = 2;
|
||||
|
@ -12,9 +10,9 @@ message Feature {
|
|||
|
||||
message DriverJourney {
|
||||
User user = 1;
|
||||
optional Car car = 2;
|
||||
Car car = 2;
|
||||
google.protobuf.Timestamp driver_departure_Date = 3;
|
||||
optional Price price = 4;
|
||||
Price price = 4;
|
||||
string driver_departure_Address = 5;
|
||||
oneof availabilities {
|
||||
RepeatedPunctualAvailabilitySlot repeated_punctual_availabilities = 6;
|
||||
|
@ -33,8 +31,8 @@ message DriverRequest{
|
|||
Feature driver_address = 1;
|
||||
int32 driver_radius = 2;
|
||||
User driver = 3;
|
||||
optional Preferences preferences = 4;
|
||||
optional Car car = 5;
|
||||
Preferences preferences = 4;
|
||||
Car car = 5;
|
||||
}
|
||||
|
||||
message PunctualAvailabilitySlot {
|
||||
|
@ -42,6 +40,7 @@ message PunctualAvailabilitySlot {
|
|||
string startTime = 2;
|
||||
string endTime = 3;
|
||||
}
|
||||
|
||||
message RegularAvailabilitySlot {
|
||||
DayOfWeek dayOfWeek = 1;
|
||||
string startTime = 2;
|
||||
|
@ -58,43 +57,51 @@ enum DayOfWeek {
|
|||
SUN = 7;
|
||||
}
|
||||
|
||||
message BookingRequest {
|
||||
message BookingSolidarityRequest {
|
||||
string id = 1;
|
||||
string passengerId = 2;
|
||||
string driverId = 3;
|
||||
BookingStatus status = 4;
|
||||
BookingSolidarityStatus status = 4;
|
||||
Feature departure_address =5;
|
||||
Feature destination_address = 6;
|
||||
google.protobuf.Timestamp pickup_date = 7;
|
||||
}
|
||||
|
||||
message Booking {
|
||||
message BookingSolidarity {
|
||||
string id = 1;
|
||||
User driver = 2;
|
||||
User passenger = 3;
|
||||
google.protobuf.Timestamp passengerPickupDate =4;
|
||||
Feature passenger_departure_route = 5;
|
||||
Feature passenger_destination_route = 6;
|
||||
BookingStatus status = 7;
|
||||
optional int64 duration = 8;
|
||||
optional int64 distance = 9;
|
||||
BookingSolidarityStatus status = 7;
|
||||
int64 duration = 8;
|
||||
int64 distance = 9;
|
||||
Price price = 10;
|
||||
optional Car car = 11;
|
||||
google.protobuf.Timestamp pickup_date = 12;
|
||||
Car car = 11;
|
||||
google.protobuf.Timestamp pickup_date = 12;
|
||||
}
|
||||
|
||||
message GetAllPassengers {
|
||||
|
||||
}
|
||||
|
||||
|
||||
message GetPassenger {
|
||||
|
||||
}
|
||||
|
||||
message Car {
|
||||
optional string model = 1;
|
||||
optional string brand = 2;
|
||||
string model = 1;
|
||||
string brand = 2;
|
||||
}
|
||||
|
||||
message Preferences {
|
||||
optional bool smoking = 1;
|
||||
optional bool animals = 2;
|
||||
optional bool music = 3;
|
||||
optional bool is_talker = 4;
|
||||
optional int64 luggage_size = 5;
|
||||
bool smoking = 1;
|
||||
bool animals = 2;
|
||||
bool music = 3;
|
||||
bool is_talker = 4;
|
||||
int64 luggage_size = 5;
|
||||
}
|
||||
|
||||
|
||||
|
@ -105,23 +112,23 @@ enum PriceType {
|
|||
}
|
||||
|
||||
message Price {
|
||||
optional PriceType type = 1;
|
||||
optional double amount = 2;
|
||||
optional string currency = 3;
|
||||
PriceType type = 1;
|
||||
double amount = 2;
|
||||
string currency = 3;
|
||||
}
|
||||
|
||||
message User {
|
||||
string id = 1;
|
||||
string alias = 2;
|
||||
optional string first_name = 3;
|
||||
optional string last_name = 4;
|
||||
optional int64 grade = 5;
|
||||
optional string picture = 6;
|
||||
optional string gender = 7;
|
||||
optional bool verified_identity = 8;
|
||||
string first_name = 3;
|
||||
string last_name = 4;
|
||||
int64 grade = 5;
|
||||
string picture = 6;
|
||||
string gender = 7;
|
||||
bool verified_identity = 8;
|
||||
}
|
||||
|
||||
enum BookingStatus {
|
||||
enum BookingSolidarityStatus {
|
||||
INITIATED = 0;
|
||||
WAITING_DRIVER_CONFIRMATION = 1;
|
||||
WAITING_PASSENGER_CONFIRMATION = 2;
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,28 +1,28 @@
|
|||
syntax = "proto3";
|
||||
option go_package = "git.coopgo.io/coopgo-platform/solidarity-service/servers/grpc/proto";
|
||||
import "google/protobuf/timestamp.proto";
|
||||
import "google/protobuf/empty.proto";
|
||||
import "solidarity-api-types.proto";
|
||||
|
||||
service SolidarityService {
|
||||
rpc SetDriverRegularAvailabilities(DriverRegularAvailabilities) returns (DriverAvailabilitiesResponse) {}
|
||||
rpc SetDriverPunctualAvailabilities(DriverPunctualAvailabilities) returns (DriverAvailabilitiesResponse) {}
|
||||
rpc CreateBooking(CreateBookingRequest) returns (CreateBookingResponse) {}
|
||||
rpc UpdateBooking(UpdateBookingRequest) returns (UpdateBookingResponse) {}
|
||||
rpc GetBooking(GetBookingRequest) returns (GetBookingResponse) {}
|
||||
rpc CreateBookingSolidarity(CreateBookingSolidarityRequest) returns (CreateBookingSolidarityResponse) {}
|
||||
rpc UpdateBookingSolidarity(UpdateBookingSolidarityRequest) returns (UpdateBookingSolidarityResponse) {}
|
||||
rpc GetBookingSolidarity(GetBookingSolidarityRequest) returns (GetBookingSolidarityResponse) {}
|
||||
rpc GetBookingsByStatus(GetBookingsByStatusRequest) returns (GetBookingsByStatusResponse) {}
|
||||
rpc DriverJourneys(DriverJourneysRequest) returns (DriverJourneysResponse) {}
|
||||
rpc GetAllPassengers(google.protobuf.Empty) returns (GetAllPassengersResponse) {}
|
||||
rpc GetPassenger(GetPassengerRequest) returns (GetPassengerResponse) {}
|
||||
rpc SetPassengerTrip(PassengerTripRequest) returns (PassengerTripResponse) {}
|
||||
}
|
||||
|
||||
|
||||
message PassengerTripRequest{
|
||||
User passenger = 1;
|
||||
|
||||
optional Preferences preferences = 2;
|
||||
Preferences preferences = 2;
|
||||
}
|
||||
|
||||
message DriverRegularAvailabilities{
|
||||
|
||||
DriverRequest driver_request = 1;
|
||||
repeated RegularAvailabilitySlot driver_availabilities = 2;
|
||||
}
|
||||
|
@ -34,43 +34,44 @@ message DriverPunctualAvailabilities{
|
|||
|
||||
message PassengerTripResponse {
|
||||
bool success = 1;
|
||||
optional string message = 2;
|
||||
string message = 2;
|
||||
}
|
||||
|
||||
message DriverAvailabilitiesResponse {
|
||||
bool success = 1;
|
||||
optional string message = 2;
|
||||
string message = 2;
|
||||
}
|
||||
|
||||
message CreateBookingRequest {
|
||||
BookingRequest booking = 1;
|
||||
}
|
||||
message CreateBookingResponse {
|
||||
Booking booking = 1;
|
||||
message CreateBookingSolidarityRequest {
|
||||
BookingSolidarityRequest booking = 1;
|
||||
}
|
||||
|
||||
message UpdateBookingRequest {
|
||||
message CreateBookingSolidarityResponse {
|
||||
BookingSolidarity booking = 1;
|
||||
}
|
||||
|
||||
message UpdateBookingSolidarityRequest {
|
||||
string booking_id = 1;
|
||||
BookingStatus status = 2;
|
||||
optional string message = 3;
|
||||
BookingSolidarityStatus status = 2;
|
||||
string message = 3;
|
||||
}
|
||||
|
||||
message UpdateBookingResponse {
|
||||
message UpdateBookingSolidarityResponse {
|
||||
bool success = 1;
|
||||
optional string message = 2;
|
||||
string message = 2;
|
||||
}
|
||||
|
||||
message GetBookingRequest {
|
||||
message GetBookingSolidarityRequest {
|
||||
string booking_id = 1;
|
||||
}
|
||||
|
||||
|
||||
message GetBookingResponse {
|
||||
Booking booking = 1;
|
||||
message GetBookingSolidarityResponse {
|
||||
BookingSolidarity booking = 1;
|
||||
}
|
||||
|
||||
message GetBookingsByStatusRequest{
|
||||
BookingStatus status = 1;
|
||||
BookingSolidarityStatus status = 1;
|
||||
UserType type = 2;
|
||||
string user_id = 3;
|
||||
}
|
||||
|
@ -84,6 +85,18 @@ message DriverJourneysResponse {
|
|||
repeated DriverJourney driver_journeys = 1;
|
||||
}
|
||||
|
||||
message GetAllPassengersResponse {
|
||||
repeated User passenger = 1;
|
||||
}
|
||||
|
||||
message GetPassengerRequest {
|
||||
User passenger = 1;
|
||||
}
|
||||
|
||||
message GetPassengerResponse {
|
||||
User passenger = 1;
|
||||
}
|
||||
|
||||
message GetBookingsByStatusResponse{
|
||||
repeated Booking booking = 1;
|
||||
repeated BookingSolidarity booking = 1;
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
|
||||
// versions:
|
||||
// - protoc-gen-go-grpc v1.3.0
|
||||
// - protoc-gen-go-grpc v1.5.1
|
||||
// - protoc v3.12.4
|
||||
// source: solidarity-api.proto
|
||||
|
||||
|
@ -8,6 +8,7 @@ package proto
|
|||
|
||||
import (
|
||||
context "context"
|
||||
empty "github.com/golang/protobuf/ptypes/empty"
|
||||
grpc "google.golang.org/grpc"
|
||||
codes "google.golang.org/grpc/codes"
|
||||
status "google.golang.org/grpc/status"
|
||||
|
@ -15,17 +16,19 @@ import (
|
|||
|
||||
// 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
|
||||
// Requires gRPC-Go v1.64.0 or later.
|
||||
const _ = grpc.SupportPackageIsVersion9
|
||||
|
||||
const (
|
||||
SolidarityService_SetDriverRegularAvailabilities_FullMethodName = "/SolidarityService/SetDriverRegularAvailabilities"
|
||||
SolidarityService_SetDriverPunctualAvailabilities_FullMethodName = "/SolidarityService/SetDriverPunctualAvailabilities"
|
||||
SolidarityService_CreateBooking_FullMethodName = "/SolidarityService/CreateBooking"
|
||||
SolidarityService_UpdateBooking_FullMethodName = "/SolidarityService/UpdateBooking"
|
||||
SolidarityService_GetBooking_FullMethodName = "/SolidarityService/GetBooking"
|
||||
SolidarityService_CreateBookingSolidarity_FullMethodName = "/SolidarityService/CreateBookingSolidarity"
|
||||
SolidarityService_UpdateBookingSolidarity_FullMethodName = "/SolidarityService/UpdateBookingSolidarity"
|
||||
SolidarityService_GetBookingSolidarity_FullMethodName = "/SolidarityService/GetBookingSolidarity"
|
||||
SolidarityService_GetBookingsByStatus_FullMethodName = "/SolidarityService/GetBookingsByStatus"
|
||||
SolidarityService_DriverJourneys_FullMethodName = "/SolidarityService/DriverJourneys"
|
||||
SolidarityService_GetAllPassengers_FullMethodName = "/SolidarityService/GetAllPassengers"
|
||||
SolidarityService_GetPassenger_FullMethodName = "/SolidarityService/GetPassenger"
|
||||
SolidarityService_SetPassengerTrip_FullMethodName = "/SolidarityService/SetPassengerTrip"
|
||||
)
|
||||
|
||||
|
@ -35,11 +38,13 @@ const (
|
|||
type SolidarityServiceClient interface {
|
||||
SetDriverRegularAvailabilities(ctx context.Context, in *DriverRegularAvailabilities, opts ...grpc.CallOption) (*DriverAvailabilitiesResponse, error)
|
||||
SetDriverPunctualAvailabilities(ctx context.Context, in *DriverPunctualAvailabilities, opts ...grpc.CallOption) (*DriverAvailabilitiesResponse, error)
|
||||
CreateBooking(ctx context.Context, in *CreateBookingRequest, opts ...grpc.CallOption) (*CreateBookingResponse, error)
|
||||
UpdateBooking(ctx context.Context, in *UpdateBookingRequest, opts ...grpc.CallOption) (*UpdateBookingResponse, error)
|
||||
GetBooking(ctx context.Context, in *GetBookingRequest, opts ...grpc.CallOption) (*GetBookingResponse, error)
|
||||
CreateBookingSolidarity(ctx context.Context, in *CreateBookingSolidarityRequest, opts ...grpc.CallOption) (*CreateBookingSolidarityResponse, error)
|
||||
UpdateBookingSolidarity(ctx context.Context, in *UpdateBookingSolidarityRequest, opts ...grpc.CallOption) (*UpdateBookingSolidarityResponse, error)
|
||||
GetBookingSolidarity(ctx context.Context, in *GetBookingSolidarityRequest, opts ...grpc.CallOption) (*GetBookingSolidarityResponse, error)
|
||||
GetBookingsByStatus(ctx context.Context, in *GetBookingsByStatusRequest, opts ...grpc.CallOption) (*GetBookingsByStatusResponse, error)
|
||||
DriverJourneys(ctx context.Context, in *DriverJourneysRequest, opts ...grpc.CallOption) (*DriverJourneysResponse, error)
|
||||
GetAllPassengers(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*GetAllPassengersResponse, error)
|
||||
GetPassenger(ctx context.Context, in *GetPassengerRequest, opts ...grpc.CallOption) (*GetPassengerResponse, error)
|
||||
SetPassengerTrip(ctx context.Context, in *PassengerTripRequest, opts ...grpc.CallOption) (*PassengerTripResponse, error)
|
||||
}
|
||||
|
||||
|
@ -52,8 +57,9 @@ func NewSolidarityServiceClient(cc grpc.ClientConnInterface) SolidarityServiceCl
|
|||
}
|
||||
|
||||
func (c *solidarityServiceClient) SetDriverRegularAvailabilities(ctx context.Context, in *DriverRegularAvailabilities, opts ...grpc.CallOption) (*DriverAvailabilitiesResponse, error) {
|
||||
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||
out := new(DriverAvailabilitiesResponse)
|
||||
err := c.cc.Invoke(ctx, SolidarityService_SetDriverRegularAvailabilities_FullMethodName, in, out, opts...)
|
||||
err := c.cc.Invoke(ctx, SolidarityService_SetDriverRegularAvailabilities_FullMethodName, in, out, cOpts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -61,35 +67,39 @@ func (c *solidarityServiceClient) SetDriverRegularAvailabilities(ctx context.Con
|
|||
}
|
||||
|
||||
func (c *solidarityServiceClient) SetDriverPunctualAvailabilities(ctx context.Context, in *DriverPunctualAvailabilities, opts ...grpc.CallOption) (*DriverAvailabilitiesResponse, error) {
|
||||
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||
out := new(DriverAvailabilitiesResponse)
|
||||
err := c.cc.Invoke(ctx, SolidarityService_SetDriverPunctualAvailabilities_FullMethodName, in, out, opts...)
|
||||
err := c.cc.Invoke(ctx, SolidarityService_SetDriverPunctualAvailabilities_FullMethodName, in, out, cOpts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func (c *solidarityServiceClient) CreateBooking(ctx context.Context, in *CreateBookingRequest, opts ...grpc.CallOption) (*CreateBookingResponse, error) {
|
||||
out := new(CreateBookingResponse)
|
||||
err := c.cc.Invoke(ctx, SolidarityService_CreateBooking_FullMethodName, in, out, opts...)
|
||||
func (c *solidarityServiceClient) CreateBookingSolidarity(ctx context.Context, in *CreateBookingSolidarityRequest, opts ...grpc.CallOption) (*CreateBookingSolidarityResponse, error) {
|
||||
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||
out := new(CreateBookingSolidarityResponse)
|
||||
err := c.cc.Invoke(ctx, SolidarityService_CreateBookingSolidarity_FullMethodName, in, out, cOpts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func (c *solidarityServiceClient) UpdateBooking(ctx context.Context, in *UpdateBookingRequest, opts ...grpc.CallOption) (*UpdateBookingResponse, error) {
|
||||
out := new(UpdateBookingResponse)
|
||||
err := c.cc.Invoke(ctx, SolidarityService_UpdateBooking_FullMethodName, in, out, opts...)
|
||||
func (c *solidarityServiceClient) UpdateBookingSolidarity(ctx context.Context, in *UpdateBookingSolidarityRequest, opts ...grpc.CallOption) (*UpdateBookingSolidarityResponse, error) {
|
||||
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||
out := new(UpdateBookingSolidarityResponse)
|
||||
err := c.cc.Invoke(ctx, SolidarityService_UpdateBookingSolidarity_FullMethodName, in, out, cOpts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func (c *solidarityServiceClient) GetBooking(ctx context.Context, in *GetBookingRequest, opts ...grpc.CallOption) (*GetBookingResponse, error) {
|
||||
out := new(GetBookingResponse)
|
||||
err := c.cc.Invoke(ctx, SolidarityService_GetBooking_FullMethodName, in, out, opts...)
|
||||
func (c *solidarityServiceClient) GetBookingSolidarity(ctx context.Context, in *GetBookingSolidarityRequest, opts ...grpc.CallOption) (*GetBookingSolidarityResponse, error) {
|
||||
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||
out := new(GetBookingSolidarityResponse)
|
||||
err := c.cc.Invoke(ctx, SolidarityService_GetBookingSolidarity_FullMethodName, in, out, cOpts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -97,8 +107,9 @@ func (c *solidarityServiceClient) GetBooking(ctx context.Context, in *GetBooking
|
|||
}
|
||||
|
||||
func (c *solidarityServiceClient) GetBookingsByStatus(ctx context.Context, in *GetBookingsByStatusRequest, opts ...grpc.CallOption) (*GetBookingsByStatusResponse, error) {
|
||||
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||
out := new(GetBookingsByStatusResponse)
|
||||
err := c.cc.Invoke(ctx, SolidarityService_GetBookingsByStatus_FullMethodName, in, out, opts...)
|
||||
err := c.cc.Invoke(ctx, SolidarityService_GetBookingsByStatus_FullMethodName, in, out, cOpts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -106,8 +117,29 @@ func (c *solidarityServiceClient) GetBookingsByStatus(ctx context.Context, in *G
|
|||
}
|
||||
|
||||
func (c *solidarityServiceClient) DriverJourneys(ctx context.Context, in *DriverJourneysRequest, opts ...grpc.CallOption) (*DriverJourneysResponse, error) {
|
||||
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||
out := new(DriverJourneysResponse)
|
||||
err := c.cc.Invoke(ctx, SolidarityService_DriverJourneys_FullMethodName, in, out, opts...)
|
||||
err := c.cc.Invoke(ctx, SolidarityService_DriverJourneys_FullMethodName, in, out, cOpts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func (c *solidarityServiceClient) GetAllPassengers(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*GetAllPassengersResponse, error) {
|
||||
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||
out := new(GetAllPassengersResponse)
|
||||
err := c.cc.Invoke(ctx, SolidarityService_GetAllPassengers_FullMethodName, in, out, cOpts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func (c *solidarityServiceClient) GetPassenger(ctx context.Context, in *GetPassengerRequest, opts ...grpc.CallOption) (*GetPassengerResponse, error) {
|
||||
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||
out := new(GetPassengerResponse)
|
||||
err := c.cc.Invoke(ctx, SolidarityService_GetPassenger_FullMethodName, in, out, cOpts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -115,8 +147,9 @@ func (c *solidarityServiceClient) DriverJourneys(ctx context.Context, in *Driver
|
|||
}
|
||||
|
||||
func (c *solidarityServiceClient) SetPassengerTrip(ctx context.Context, in *PassengerTripRequest, opts ...grpc.CallOption) (*PassengerTripResponse, error) {
|
||||
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||
out := new(PassengerTripResponse)
|
||||
err := c.cc.Invoke(ctx, SolidarityService_SetPassengerTrip_FullMethodName, in, out, opts...)
|
||||
err := c.cc.Invoke(ctx, SolidarityService_SetPassengerTrip_FullMethodName, in, out, cOpts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -125,22 +158,27 @@ func (c *solidarityServiceClient) SetPassengerTrip(ctx context.Context, in *Pass
|
|||
|
||||
// SolidarityServiceServer is the server API for SolidarityService service.
|
||||
// All implementations must embed UnimplementedSolidarityServiceServer
|
||||
// for forward compatibility
|
||||
// for forward compatibility.
|
||||
type SolidarityServiceServer interface {
|
||||
SetDriverRegularAvailabilities(context.Context, *DriverRegularAvailabilities) (*DriverAvailabilitiesResponse, error)
|
||||
SetDriverPunctualAvailabilities(context.Context, *DriverPunctualAvailabilities) (*DriverAvailabilitiesResponse, error)
|
||||
CreateBooking(context.Context, *CreateBookingRequest) (*CreateBookingResponse, error)
|
||||
UpdateBooking(context.Context, *UpdateBookingRequest) (*UpdateBookingResponse, error)
|
||||
GetBooking(context.Context, *GetBookingRequest) (*GetBookingResponse, error)
|
||||
CreateBookingSolidarity(context.Context, *CreateBookingSolidarityRequest) (*CreateBookingSolidarityResponse, error)
|
||||
UpdateBookingSolidarity(context.Context, *UpdateBookingSolidarityRequest) (*UpdateBookingSolidarityResponse, error)
|
||||
GetBookingSolidarity(context.Context, *GetBookingSolidarityRequest) (*GetBookingSolidarityResponse, error)
|
||||
GetBookingsByStatus(context.Context, *GetBookingsByStatusRequest) (*GetBookingsByStatusResponse, error)
|
||||
DriverJourneys(context.Context, *DriverJourneysRequest) (*DriverJourneysResponse, error)
|
||||
GetAllPassengers(context.Context, *empty.Empty) (*GetAllPassengersResponse, error)
|
||||
GetPassenger(context.Context, *GetPassengerRequest) (*GetPassengerResponse, error)
|
||||
SetPassengerTrip(context.Context, *PassengerTripRequest) (*PassengerTripResponse, error)
|
||||
mustEmbedUnimplementedSolidarityServiceServer()
|
||||
}
|
||||
|
||||
// UnimplementedSolidarityServiceServer must be embedded to have forward compatible implementations.
|
||||
type UnimplementedSolidarityServiceServer struct {
|
||||
}
|
||||
// UnimplementedSolidarityServiceServer must be embedded to have
|
||||
// forward compatible implementations.
|
||||
//
|
||||
// NOTE: this should be embedded by value instead of pointer to avoid a nil
|
||||
// pointer dereference when methods are called.
|
||||
type UnimplementedSolidarityServiceServer struct{}
|
||||
|
||||
func (UnimplementedSolidarityServiceServer) SetDriverRegularAvailabilities(context.Context, *DriverRegularAvailabilities) (*DriverAvailabilitiesResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method SetDriverRegularAvailabilities not implemented")
|
||||
|
@ -148,14 +186,14 @@ func (UnimplementedSolidarityServiceServer) SetDriverRegularAvailabilities(conte
|
|||
func (UnimplementedSolidarityServiceServer) SetDriverPunctualAvailabilities(context.Context, *DriverPunctualAvailabilities) (*DriverAvailabilitiesResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method SetDriverPunctualAvailabilities not implemented")
|
||||
}
|
||||
func (UnimplementedSolidarityServiceServer) CreateBooking(context.Context, *CreateBookingRequest) (*CreateBookingResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method CreateBooking not implemented")
|
||||
func (UnimplementedSolidarityServiceServer) CreateBookingSolidarity(context.Context, *CreateBookingSolidarityRequest) (*CreateBookingSolidarityResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method CreateBookingSolidarity not implemented")
|
||||
}
|
||||
func (UnimplementedSolidarityServiceServer) UpdateBooking(context.Context, *UpdateBookingRequest) (*UpdateBookingResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method UpdateBooking not implemented")
|
||||
func (UnimplementedSolidarityServiceServer) UpdateBookingSolidarity(context.Context, *UpdateBookingSolidarityRequest) (*UpdateBookingSolidarityResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method UpdateBookingSolidarity not implemented")
|
||||
}
|
||||
func (UnimplementedSolidarityServiceServer) GetBooking(context.Context, *GetBookingRequest) (*GetBookingResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method GetBooking not implemented")
|
||||
func (UnimplementedSolidarityServiceServer) GetBookingSolidarity(context.Context, *GetBookingSolidarityRequest) (*GetBookingSolidarityResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method GetBookingSolidarity not implemented")
|
||||
}
|
||||
func (UnimplementedSolidarityServiceServer) GetBookingsByStatus(context.Context, *GetBookingsByStatusRequest) (*GetBookingsByStatusResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method GetBookingsByStatus not implemented")
|
||||
|
@ -163,10 +201,17 @@ func (UnimplementedSolidarityServiceServer) GetBookingsByStatus(context.Context,
|
|||
func (UnimplementedSolidarityServiceServer) DriverJourneys(context.Context, *DriverJourneysRequest) (*DriverJourneysResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method DriverJourneys not implemented")
|
||||
}
|
||||
func (UnimplementedSolidarityServiceServer) GetAllPassengers(context.Context, *empty.Empty) (*GetAllPassengersResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method GetAllPassengers not implemented")
|
||||
}
|
||||
func (UnimplementedSolidarityServiceServer) GetPassenger(context.Context, *GetPassengerRequest) (*GetPassengerResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method GetPassenger not implemented")
|
||||
}
|
||||
func (UnimplementedSolidarityServiceServer) SetPassengerTrip(context.Context, *PassengerTripRequest) (*PassengerTripResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method SetPassengerTrip not implemented")
|
||||
}
|
||||
func (UnimplementedSolidarityServiceServer) mustEmbedUnimplementedSolidarityServiceServer() {}
|
||||
func (UnimplementedSolidarityServiceServer) testEmbeddedByValue() {}
|
||||
|
||||
// UnsafeSolidarityServiceServer may be embedded to opt out of forward compatibility for this service.
|
||||
// Use of this interface is not recommended, as added methods to SolidarityServiceServer will
|
||||
|
@ -176,6 +221,13 @@ type UnsafeSolidarityServiceServer interface {
|
|||
}
|
||||
|
||||
func RegisterSolidarityServiceServer(s grpc.ServiceRegistrar, srv SolidarityServiceServer) {
|
||||
// If the following call pancis, it indicates UnimplementedSolidarityServiceServer was
|
||||
// embedded by pointer and is nil. This will cause panics if an
|
||||
// unimplemented method is ever invoked, so we test this at initialization
|
||||
// time to prevent it from happening at runtime later due to I/O.
|
||||
if t, ok := srv.(interface{ testEmbeddedByValue() }); ok {
|
||||
t.testEmbeddedByValue()
|
||||
}
|
||||
s.RegisterService(&SolidarityService_ServiceDesc, srv)
|
||||
}
|
||||
|
||||
|
@ -215,56 +267,56 @@ func _SolidarityService_SetDriverPunctualAvailabilities_Handler(srv interface{},
|
|||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _SolidarityService_CreateBooking_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(CreateBookingRequest)
|
||||
func _SolidarityService_CreateBookingSolidarity_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(CreateBookingSolidarityRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if interceptor == nil {
|
||||
return srv.(SolidarityServiceServer).CreateBooking(ctx, in)
|
||||
return srv.(SolidarityServiceServer).CreateBookingSolidarity(ctx, in)
|
||||
}
|
||||
info := &grpc.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: SolidarityService_CreateBooking_FullMethodName,
|
||||
FullMethod: SolidarityService_CreateBookingSolidarity_FullMethodName,
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
return srv.(SolidarityServiceServer).CreateBooking(ctx, req.(*CreateBookingRequest))
|
||||
return srv.(SolidarityServiceServer).CreateBookingSolidarity(ctx, req.(*CreateBookingSolidarityRequest))
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _SolidarityService_UpdateBooking_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(UpdateBookingRequest)
|
||||
func _SolidarityService_UpdateBookingSolidarity_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(UpdateBookingSolidarityRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if interceptor == nil {
|
||||
return srv.(SolidarityServiceServer).UpdateBooking(ctx, in)
|
||||
return srv.(SolidarityServiceServer).UpdateBookingSolidarity(ctx, in)
|
||||
}
|
||||
info := &grpc.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: SolidarityService_UpdateBooking_FullMethodName,
|
||||
FullMethod: SolidarityService_UpdateBookingSolidarity_FullMethodName,
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
return srv.(SolidarityServiceServer).UpdateBooking(ctx, req.(*UpdateBookingRequest))
|
||||
return srv.(SolidarityServiceServer).UpdateBookingSolidarity(ctx, req.(*UpdateBookingSolidarityRequest))
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _SolidarityService_GetBooking_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(GetBookingRequest)
|
||||
func _SolidarityService_GetBookingSolidarity_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(GetBookingSolidarityRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if interceptor == nil {
|
||||
return srv.(SolidarityServiceServer).GetBooking(ctx, in)
|
||||
return srv.(SolidarityServiceServer).GetBookingSolidarity(ctx, in)
|
||||
}
|
||||
info := &grpc.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: SolidarityService_GetBooking_FullMethodName,
|
||||
FullMethod: SolidarityService_GetBookingSolidarity_FullMethodName,
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
return srv.(SolidarityServiceServer).GetBooking(ctx, req.(*GetBookingRequest))
|
||||
return srv.(SolidarityServiceServer).GetBookingSolidarity(ctx, req.(*GetBookingSolidarityRequest))
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
@ -305,6 +357,42 @@ func _SolidarityService_DriverJourneys_Handler(srv interface{}, ctx context.Cont
|
|||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _SolidarityService_GetAllPassengers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(empty.Empty)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if interceptor == nil {
|
||||
return srv.(SolidarityServiceServer).GetAllPassengers(ctx, in)
|
||||
}
|
||||
info := &grpc.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: SolidarityService_GetAllPassengers_FullMethodName,
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
return srv.(SolidarityServiceServer).GetAllPassengers(ctx, req.(*empty.Empty))
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _SolidarityService_GetPassenger_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(GetPassengerRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if interceptor == nil {
|
||||
return srv.(SolidarityServiceServer).GetPassenger(ctx, in)
|
||||
}
|
||||
info := &grpc.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: SolidarityService_GetPassenger_FullMethodName,
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
return srv.(SolidarityServiceServer).GetPassenger(ctx, req.(*GetPassengerRequest))
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _SolidarityService_SetPassengerTrip_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(PassengerTripRequest)
|
||||
if err := dec(in); err != nil {
|
||||
|
@ -339,16 +427,16 @@ var SolidarityService_ServiceDesc = grpc.ServiceDesc{
|
|||
Handler: _SolidarityService_SetDriverPunctualAvailabilities_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "CreateBooking",
|
||||
Handler: _SolidarityService_CreateBooking_Handler,
|
||||
MethodName: "CreateBookingSolidarity",
|
||||
Handler: _SolidarityService_CreateBookingSolidarity_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "UpdateBooking",
|
||||
Handler: _SolidarityService_UpdateBooking_Handler,
|
||||
MethodName: "UpdateBookingSolidarity",
|
||||
Handler: _SolidarityService_UpdateBookingSolidarity_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "GetBooking",
|
||||
Handler: _SolidarityService_GetBooking_Handler,
|
||||
MethodName: "GetBookingSolidarity",
|
||||
Handler: _SolidarityService_GetBookingSolidarity_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "GetBookingsByStatus",
|
||||
|
@ -358,6 +446,14 @@ var SolidarityService_ServiceDesc = grpc.ServiceDesc{
|
|||
MethodName: "DriverJourneys",
|
||||
Handler: _SolidarityService_DriverJourneys_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "GetAllPassengers",
|
||||
Handler: _SolidarityService_GetAllPassengers_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "GetPassenger",
|
||||
Handler: _SolidarityService_GetPassenger_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "SetPassengerTrip",
|
||||
Handler: _SolidarityService_SetPassengerTrip_Handler,
|
||||
|
|
|
@ -5,23 +5,23 @@ import (
|
|||
"solidarity-service/servers/grpc/proto"
|
||||
)
|
||||
|
||||
func ConvertInternalToProtoBookingStatus(internalStatus internal.BookingStatus) proto.BookingStatus {
|
||||
func ConvertInternalToProtoBookingStatus(internalStatus internal.BookingStatus) proto.BookingSolidarityStatus {
|
||||
switch internalStatus {
|
||||
case internal.BookingStatusINITIATED:
|
||||
return proto.BookingStatus_INITIATED
|
||||
return proto.BookingSolidarityStatus_INITIATED
|
||||
case internal.BookingStatusWAITINGPASSENGERCONFIRMATION:
|
||||
return proto.BookingStatus_WAITING_PASSENGER_CONFIRMATION
|
||||
return proto.BookingSolidarityStatus_WAITING_PASSENGER_CONFIRMATION
|
||||
case internal.BookingStatusWAITINGDRIVERCONFIRMATION:
|
||||
return proto.BookingStatus_WAITING_DRIVER_CONFIRMATION
|
||||
return proto.BookingSolidarityStatus_WAITING_DRIVER_CONFIRMATION
|
||||
case internal.BookingStatusCONFIRMED:
|
||||
return proto.BookingStatus_CONFIRMED
|
||||
return proto.BookingSolidarityStatus_CONFIRMED
|
||||
case internal.BookingStatusCANCELLED:
|
||||
return proto.BookingStatus_CANCELLED
|
||||
return proto.BookingSolidarityStatus_CANCELLED
|
||||
case internal.BookingStatusCOMPLETEDPENDINGVALIDATION:
|
||||
return proto.BookingStatus_COMPLETED_PENDING_VALIDATION
|
||||
return proto.BookingSolidarityStatus_COMPLETED_PENDING_VALIDATION
|
||||
case internal.BookingStatusVALIDATED:
|
||||
return proto.BookingStatus_VALIDATED
|
||||
return proto.BookingSolidarityStatus_VALIDATED
|
||||
default:
|
||||
return proto.BookingStatus_CONFIRMED
|
||||
return proto.BookingSolidarityStatus_CONFIRMED
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,15 +3,18 @@ package grpcserver
|
|||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"github.com/golang/protobuf/ptypes/timestamp"
|
||||
"github.com/paulmach/orb"
|
||||
"github.com/paulmach/orb/geojson"
|
||||
"github.com/rs/zerolog/log"
|
||||
"fmt"
|
||||
"solidarity-service/internal"
|
||||
"solidarity-service/servers/grpc/proto"
|
||||
"solidarity-service/utils"
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
"github.com/golang/protobuf/ptypes/timestamp"
|
||||
"github.com/paulmach/orb"
|
||||
"github.com/paulmach/orb/geojson"
|
||||
"github.com/rs/zerolog/log"
|
||||
"google.golang.org/protobuf/types/known/emptypb"
|
||||
)
|
||||
|
||||
func (s *SolidarityServiceServerImpl) SetDriverRegularAvailabilities(ctx context.Context, req *proto.DriverRegularAvailabilities) (resp *proto.DriverAvailabilitiesResponse, err error) {
|
||||
|
@ -20,6 +23,7 @@ func (s *SolidarityServiceServerImpl) SetDriverRegularAvailabilities(ctx context
|
|||
Success: false,
|
||||
}, errors.New("missing required fields")
|
||||
}
|
||||
|
||||
driver := internal.Driver{
|
||||
Driver_departure_address: &geojson.Feature{
|
||||
Type: "Feature",
|
||||
|
@ -36,38 +40,38 @@ func (s *SolidarityServiceServerImpl) SetDriverRegularAvailabilities(ctx context
|
|||
AvailabilitiesType: internal.Regular,
|
||||
}
|
||||
|
||||
if req.DriverRequest.Driver.FirstName != nil {
|
||||
driver.Driver.FirstName = *req.DriverRequest.Driver.FirstName
|
||||
if req.DriverRequest.Driver.FirstName != "" {
|
||||
driver.Driver.FirstName = req.DriverRequest.Driver.FirstName
|
||||
}
|
||||
if req.DriverRequest.Driver.LastName != nil {
|
||||
driver.Driver.LastName = *req.DriverRequest.Driver.LastName
|
||||
if req.DriverRequest.Driver.LastName != "" {
|
||||
driver.Driver.LastName = req.DriverRequest.Driver.LastName
|
||||
}
|
||||
if req.DriverRequest.Driver.Grade != nil {
|
||||
driver.Driver.Grade = *req.DriverRequest.Driver.Grade
|
||||
if req.DriverRequest.Driver.Grade != 0 {
|
||||
driver.Driver.Grade = req.DriverRequest.Driver.Grade
|
||||
}
|
||||
if req.DriverRequest.Driver.Picture != nil {
|
||||
driver.Driver.Picture = *req.DriverRequest.Driver.Picture
|
||||
if req.DriverRequest.Driver.Picture != "" {
|
||||
driver.Driver.Picture = req.DriverRequest.Driver.Picture
|
||||
}
|
||||
if req.DriverRequest.Driver.Gender != nil {
|
||||
driver.Driver.Gender = *req.DriverRequest.Driver.Gender
|
||||
if req.DriverRequest.Driver.Gender != "" {
|
||||
driver.Driver.Gender = req.DriverRequest.Driver.Gender
|
||||
}
|
||||
if req.DriverRequest.Driver.VerifiedIdentity != nil {
|
||||
driver.Driver.VerifiedIdentity = *req.DriverRequest.Driver.VerifiedIdentity
|
||||
if req.DriverRequest.Driver.VerifiedIdentity != false {
|
||||
driver.Driver.VerifiedIdentity = req.DriverRequest.Driver.VerifiedIdentity
|
||||
}
|
||||
|
||||
if req.DriverRequest.Car != nil {
|
||||
driver.Car = internal.Car{
|
||||
Model: *req.DriverRequest.Car.Model,
|
||||
Brand: *req.DriverRequest.Car.Brand,
|
||||
Model: req.DriverRequest.Car.Model,
|
||||
Brand: req.DriverRequest.Car.Brand,
|
||||
}
|
||||
}
|
||||
if req.DriverRequest.Preferences != nil {
|
||||
driver.Preferences = internal.Preferences{
|
||||
Smoking: *req.DriverRequest.Preferences.Smoking,
|
||||
Animals: *req.DriverRequest.Preferences.Animals,
|
||||
Music: *req.DriverRequest.Preferences.Music,
|
||||
Is_talker: *req.DriverRequest.Preferences.IsTalker,
|
||||
Luggage_size: *req.DriverRequest.Preferences.LuggageSize,
|
||||
Smoking: req.DriverRequest.Preferences.Smoking,
|
||||
Animals: req.DriverRequest.Preferences.Animals,
|
||||
Music: req.DriverRequest.Preferences.Music,
|
||||
Is_talker: req.DriverRequest.Preferences.IsTalker,
|
||||
Luggage_size: req.DriverRequest.Preferences.LuggageSize,
|
||||
}
|
||||
}
|
||||
for _, v := range req.DriverAvailabilities {
|
||||
|
@ -111,38 +115,38 @@ func (s *SolidarityServiceServerImpl) SetDriverPunctualAvailabilities(ctx contex
|
|||
AvailabilitiesType: internal.Punctual,
|
||||
}
|
||||
|
||||
if req.DriverRequest.Driver.FirstName != nil {
|
||||
driver.Driver.FirstName = *req.DriverRequest.Driver.FirstName
|
||||
if req.DriverRequest.Driver.FirstName != "" {
|
||||
driver.Driver.FirstName = req.DriverRequest.Driver.FirstName
|
||||
}
|
||||
if req.DriverRequest.Driver.LastName != nil {
|
||||
driver.Driver.LastName = *req.DriverRequest.Driver.LastName
|
||||
if req.DriverRequest.Driver.LastName != "" {
|
||||
driver.Driver.LastName = req.DriverRequest.Driver.LastName
|
||||
}
|
||||
if req.DriverRequest.Driver.Grade != nil {
|
||||
driver.Driver.Grade = *req.DriverRequest.Driver.Grade
|
||||
if req.DriverRequest.Driver.Grade != 0 {
|
||||
driver.Driver.Grade = req.DriverRequest.Driver.Grade
|
||||
}
|
||||
if req.DriverRequest.Driver.Picture != nil {
|
||||
driver.Driver.Picture = *req.DriverRequest.Driver.Picture
|
||||
if req.DriverRequest.Driver.Picture != "" {
|
||||
driver.Driver.Picture = req.DriverRequest.Driver.Picture
|
||||
}
|
||||
if req.DriverRequest.Driver.Gender != nil {
|
||||
driver.Driver.Gender = *req.DriverRequest.Driver.Gender
|
||||
if req.DriverRequest.Driver.Gender != ""{
|
||||
driver.Driver.Gender = req.DriverRequest.Driver.Gender
|
||||
}
|
||||
if req.DriverRequest.Driver.VerifiedIdentity != nil {
|
||||
driver.Driver.VerifiedIdentity = *req.DriverRequest.Driver.VerifiedIdentity
|
||||
if req.DriverRequest.Driver.VerifiedIdentity != false {
|
||||
driver.Driver.VerifiedIdentity = req.DriverRequest.Driver.VerifiedIdentity
|
||||
}
|
||||
|
||||
if req.DriverRequest.Car != nil {
|
||||
driver.Car = internal.Car{
|
||||
Model: *req.DriverRequest.Car.Model,
|
||||
Brand: *req.DriverRequest.Car.Brand,
|
||||
Model: req.DriverRequest.Car.Model,
|
||||
Brand: req.DriverRequest.Car.Brand,
|
||||
}
|
||||
}
|
||||
if req.DriverRequest.Preferences != nil {
|
||||
driver.Preferences = internal.Preferences{
|
||||
Smoking: *req.DriverRequest.Preferences.Smoking,
|
||||
Animals: *req.DriverRequest.Preferences.Animals,
|
||||
Music: *req.DriverRequest.Preferences.Music,
|
||||
Is_talker: *req.DriverRequest.Preferences.IsTalker,
|
||||
Luggage_size: *req.DriverRequest.Preferences.LuggageSize,
|
||||
Smoking: req.DriverRequest.Preferences.Smoking,
|
||||
Animals: req.DriverRequest.Preferences.Animals,
|
||||
Music: req.DriverRequest.Preferences.Music,
|
||||
Is_talker: req.DriverRequest.Preferences.IsTalker,
|
||||
Luggage_size: req.DriverRequest.Preferences.LuggageSize,
|
||||
}
|
||||
}
|
||||
for _, v := range req.DriverAvailabilities {
|
||||
|
@ -164,10 +168,62 @@ func (s *SolidarityServiceServerImpl) SetDriverPunctualAvailabilities(ctx contex
|
|||
}, nil
|
||||
}
|
||||
|
||||
func (s *SolidarityServiceServerImpl) CreateBooking(ctx context.Context, req *proto.CreateBookingRequest) (resp *proto.CreateBookingResponse, err error) {
|
||||
if req.Booking.DriverId == "" || req.Booking.PassengerId == "" || req.Booking.Id == "" || req.Booking.Status.String() == "" || req.Booking.DepartureAddress == nil || req.Booking.DestinationAddress == nil || req.Booking.PickupDate.Seconds == 0 {
|
||||
return nil, errors.New("missing required fields")
|
||||
func (s *SolidarityServiceServerImpl) GetAllPassengers( ctx context.Context, _ *emptypb.Empty) (resp *proto.GetAllPassengersResponse, err error) {
|
||||
passengers, err := s.Handler.GetAllPassengers(context.Background())
|
||||
resp = &proto.GetAllPassengersResponse{
|
||||
Passenger: []*proto.User{},
|
||||
}
|
||||
response := []*proto.User{}
|
||||
for _, v := range passengers {
|
||||
temp := &proto.User{
|
||||
Id: v.Passenger.ID,
|
||||
Alias: v.Passenger.Alias,
|
||||
FirstName: v.Passenger.FirstName,
|
||||
LastName: v.Passenger.LastName,
|
||||
Grade: v.Passenger.Grade,
|
||||
Picture: v.Passenger.Picture,
|
||||
Gender: v.Passenger.Gender,
|
||||
VerifiedIdentity: v.Passenger.VerifiedIdentity,
|
||||
}
|
||||
response = append(response, temp)
|
||||
}
|
||||
resp.Passenger = response
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
func (s *SolidarityServiceServerImpl) GetPassenger(ctx context.Context, req *proto.GetPassengerRequest) (resp *proto.GetPassengerResponse, er error){
|
||||
if req.Passenger.Id == "" {
|
||||
return nil, errors.New("missing required DriverId")
|
||||
}
|
||||
p, err := s.Handler.GetPassenger(context.Background(), req.Passenger.Id)
|
||||
|
||||
resp = &proto.GetPassengerResponse{
|
||||
Passenger: &proto.User{
|
||||
Id: p.Passenger.ID,
|
||||
Alias: p.Passenger.Alias,
|
||||
FirstName: p.Passenger.FirstName,
|
||||
LastName: p.Passenger.LastName,
|
||||
Grade: p.Passenger.Grade,
|
||||
Picture: p.Passenger.Picture,
|
||||
Gender: p.Passenger.Gender,
|
||||
VerifiedIdentity: p.Passenger.VerifiedIdentity,
|
||||
},
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
fmt.Println("err getpassenger : ", err)
|
||||
}else{
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func (s *SolidarityServiceServerImpl) CreateBookingSolidarity(ctx context.Context, req *proto.CreateBookingSolidarityRequest) (resp *proto.CreateBookingSolidarityResponse, err error) {
|
||||
if req.Booking.DriverId == "" || req.Booking.DepartureAddress == nil || req.Booking.DestinationAddress == nil || req.Booking.PassengerId == "" || req.Booking.Id == "" || req.Booking.Status.String() == "" ||req.Booking.PickupDate.Seconds == 0 {
|
||||
return nil, errors.New("missing required elements")
|
||||
}
|
||||
|
||||
bookingRequest := internal.BookingRequest{
|
||||
ID: req.Booking.Id,
|
||||
Passenger_id: req.Booking.PassengerId,
|
||||
|
@ -189,7 +245,7 @@ func (s *SolidarityServiceServerImpl) CreateBooking(ctx context.Context, req *pr
|
|||
},
|
||||
Pickup_date: req.Booking.PickupDate.Seconds,
|
||||
}
|
||||
passenger, driver, err := s.Handler.CreateBooking(context.Background(), bookingRequest)
|
||||
driver, err := s.Handler.CreateBooking(context.Background(), bookingRequest) //passenger,
|
||||
if err != nil {
|
||||
if strings.Contains(err.Error(), utils.SQL_DUPLICATE) {
|
||||
err = errors.New("ID is already used")
|
||||
|
@ -202,31 +258,24 @@ func (s *SolidarityServiceServerImpl) CreateBooking(ctx context.Context, req *pr
|
|||
}
|
||||
distance := s.Handler.CalculateDistanceBetweenFeatures(bookingRequest.Departure_address, bookingRequest.Destination_address)
|
||||
priceType := proto.PriceType_FREE
|
||||
resp = &proto.CreateBookingResponse{
|
||||
Booking: &proto.Booking{},
|
||||
resp = &proto.CreateBookingSolidarityResponse{
|
||||
Booking: &proto.BookingSolidarity{},
|
||||
}
|
||||
resp.Booking = &proto.Booking{
|
||||
resp.Booking = &proto.BookingSolidarity{
|
||||
Id: bookingRequest.ID,
|
||||
Driver: &proto.User{
|
||||
Id: driver.Driver.ID,
|
||||
Alias: driver.Driver.Alias,
|
||||
FirstName: &driver.Driver.FirstName,
|
||||
LastName: &driver.Driver.LastName,
|
||||
Grade: &driver.Driver.Grade,
|
||||
Picture: &driver.Driver.Picture,
|
||||
Gender: &driver.Driver.Gender,
|
||||
VerifiedIdentity: &driver.Driver.VerifiedIdentity,
|
||||
FirstName: driver.Driver.FirstName,
|
||||
LastName: driver.Driver.LastName,
|
||||
Grade: driver.Driver.Grade,
|
||||
Picture: driver.Driver.Picture,
|
||||
Gender: driver.Driver.Gender,
|
||||
VerifiedIdentity: driver.Driver.VerifiedIdentity,
|
||||
},
|
||||
Passenger: &proto.User{
|
||||
Id: passenger.Passenger.ID,
|
||||
Alias: passenger.Passenger.Alias,
|
||||
FirstName: &passenger.Passenger.FirstName,
|
||||
LastName: &passenger.Passenger.LastName,
|
||||
Grade: &passenger.Passenger.Grade,
|
||||
Picture: &passenger.Passenger.Picture,
|
||||
Gender: &passenger.Passenger.Gender,
|
||||
VerifiedIdentity: &passenger.Passenger.VerifiedIdentity,
|
||||
},
|
||||
Id: req.Booking.PassengerId,
|
||||
},
|
||||
PassengerPickupDate: ×tamp.Timestamp{
|
||||
Seconds: bookingRequest.Pickup_date,
|
||||
},
|
||||
|
@ -241,22 +290,22 @@ func (s *SolidarityServiceServerImpl) CreateBooking(ctx context.Context, req *pr
|
|||
Address: bookingRequest.Destination_address.Properties.MustString("name"),
|
||||
},
|
||||
Status: ConvertInternalToProtoBookingStatus(bookingRequest.Status),
|
||||
Duration: &duration,
|
||||
Distance: &distance,
|
||||
Duration: duration,
|
||||
Distance: distance,
|
||||
Price: &proto.Price{
|
||||
Type: &priceType,
|
||||
Type: priceType,
|
||||
},
|
||||
Car: &proto.Car{
|
||||
Model: &driver.Car.Model,
|
||||
Brand: &driver.Car.Brand,
|
||||
Model: driver.Car.Model,
|
||||
Brand: driver.Car.Brand,
|
||||
},
|
||||
}
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
func (s *SolidarityServiceServerImpl) UpdateBooking(ctx context.Context, req *proto.UpdateBookingRequest) (resp *proto.UpdateBookingResponse, err error) {
|
||||
func (s *SolidarityServiceServerImpl) UpdateBookingSolidarity(ctx context.Context, req *proto.UpdateBookingSolidarityRequest) (resp *proto.UpdateBookingSolidarityResponse, err error) {
|
||||
if req.BookingId == "" || req.Status.String() == "" {
|
||||
return &proto.UpdateBookingResponse{
|
||||
return &proto.UpdateBookingSolidarityResponse{
|
||||
Success: false,
|
||||
}, errors.New("missing required fields")
|
||||
}
|
||||
|
@ -266,16 +315,16 @@ func (s *SolidarityServiceServerImpl) UpdateBooking(ctx context.Context, req *pr
|
|||
if strings.Contains(err.Error(), utils.SQL_NO_ROWS) {
|
||||
err = errors.New("invalid ID")
|
||||
}
|
||||
return &proto.UpdateBookingResponse{
|
||||
return &proto.UpdateBookingSolidarityResponse{
|
||||
Success: false,
|
||||
}, err
|
||||
}
|
||||
return &proto.UpdateBookingResponse{
|
||||
return &proto.UpdateBookingSolidarityResponse{
|
||||
Success: true,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (s *SolidarityServiceServerImpl) GetBooking(ctx context.Context, req *proto.GetBookingRequest) (resp *proto.GetBookingResponse, err error) {
|
||||
func (s *SolidarityServiceServerImpl) GetBookingSolidarity(ctx context.Context, req *proto.GetBookingSolidarityRequest) (resp *proto.GetBookingSolidarityResponse, err error) {
|
||||
if req.BookingId == "" {
|
||||
return nil, errors.New("empty booking ID")
|
||||
}
|
||||
|
@ -286,8 +335,8 @@ func (s *SolidarityServiceServerImpl) GetBooking(ctx context.Context, req *proto
|
|||
}
|
||||
return nil, err
|
||||
}
|
||||
resp = &proto.GetBookingResponse{
|
||||
Booking: &proto.Booking{},
|
||||
resp = &proto.GetBookingSolidarityResponse{
|
||||
Booking: &proto.BookingSolidarity{},
|
||||
}
|
||||
priceType := proto.PriceType_FREE
|
||||
driver, err := s.Handler.GetDriver(context.Background(), booking.Driver.ID)
|
||||
|
@ -296,27 +345,20 @@ func (s *SolidarityServiceServerImpl) GetBooking(ctx context.Context, req *proto
|
|||
}
|
||||
car := driver.Car
|
||||
distance := int64(booking.Distance)
|
||||
resp.Booking = &proto.Booking{
|
||||
resp.Booking = &proto.BookingSolidarity{
|
||||
Id: booking.ID,
|
||||
Driver: &proto.User{
|
||||
Id: booking.Driver.ID,
|
||||
Alias: booking.Driver.Alias,
|
||||
FirstName: &booking.Driver.FirstName,
|
||||
LastName: &booking.Driver.LastName,
|
||||
Grade: &booking.Driver.Grade,
|
||||
Picture: &booking.Driver.Picture,
|
||||
Gender: &booking.Driver.Gender,
|
||||
VerifiedIdentity: &booking.Driver.VerifiedIdentity,
|
||||
FirstName: booking.Driver.FirstName,
|
||||
LastName: booking.Driver.LastName,
|
||||
Grade: booking.Driver.Grade,
|
||||
Picture: booking.Driver.Picture,
|
||||
Gender: booking.Driver.Gender,
|
||||
VerifiedIdentity: booking.Driver.VerifiedIdentity,
|
||||
},
|
||||
Passenger: &proto.User{
|
||||
Id: booking.Passenger.ID,
|
||||
Alias: booking.Passenger.Alias,
|
||||
FirstName: &booking.Passenger.FirstName,
|
||||
LastName: &booking.Passenger.LastName,
|
||||
Grade: &booking.Passenger.Grade,
|
||||
Picture: &booking.Passenger.Picture,
|
||||
Gender: &booking.Passenger.Gender,
|
||||
VerifiedIdentity: &booking.Passenger.VerifiedIdentity,
|
||||
},
|
||||
PassengerPickupDate: ×tamp.Timestamp{
|
||||
Seconds: booking.Pickup_date,
|
||||
|
@ -332,14 +374,14 @@ func (s *SolidarityServiceServerImpl) GetBooking(ctx context.Context, req *proto
|
|||
Address: booking.PassengerDropAddress.Properties.MustString("name"),
|
||||
},
|
||||
Status: ConvertInternalToProtoBookingStatus(booking.Status),
|
||||
Duration: &booking.Duration,
|
||||
Distance: &distance,
|
||||
Duration: booking.Duration,
|
||||
Distance: distance,
|
||||
Car: &proto.Car{
|
||||
Model: &car.Model,
|
||||
Brand: &car.Brand,
|
||||
Model: car.Model,
|
||||
Brand: car.Brand,
|
||||
},
|
||||
Price: &proto.Price{
|
||||
Type: &priceType,
|
||||
Type: priceType,
|
||||
},
|
||||
}
|
||||
return resp, nil
|
||||
|
@ -359,7 +401,7 @@ func (s *SolidarityServiceServerImpl) GetBookingsByStatus(ctx context.Context, r
|
|||
}
|
||||
|
||||
// Use a goroutine to concurrently convert bookings to proto
|
||||
respChan := make(chan []*proto.Booking, 1)
|
||||
respChan := make(chan []*proto.BookingSolidarity, 1)
|
||||
go func() {
|
||||
respChan <- convertInternalBookingsToProto(s, bookings, 50)
|
||||
}()
|
||||
|
@ -379,8 +421,8 @@ func (s *SolidarityServiceServerImpl) GetBookingsByStatus(ctx context.Context, r
|
|||
}
|
||||
}
|
||||
|
||||
func convertInternalBookingsToProto(s *SolidarityServiceServerImpl, bookings []internal.Booking, maxGoroutines int) []*proto.Booking {
|
||||
var responses []*proto.Booking
|
||||
func convertInternalBookingsToProto(s *SolidarityServiceServerImpl, bookings []internal.Booking, maxGoroutines int) []*proto.BookingSolidarity {
|
||||
var responses []*proto.BookingSolidarity
|
||||
var wg sync.WaitGroup
|
||||
var mu sync.Mutex
|
||||
semaphore := make(chan struct{}, maxGoroutines)
|
||||
|
@ -426,7 +468,7 @@ func convertInternalBookingsToProto(s *SolidarityServiceServerImpl, bookings []i
|
|||
|
||||
priceType := proto.PriceType_FREE
|
||||
distance := int64(booking.Distance)
|
||||
protoBooking := &proto.Booking{
|
||||
protoBooking := &proto.BookingSolidarity{
|
||||
Id: booking.ID,
|
||||
Status: ConvertInternalToProtoBookingStatus(booking.Status),
|
||||
Driver: convertInternalUserToProtoUser(driver.Driver),
|
||||
|
@ -436,14 +478,14 @@ func convertInternalBookingsToProto(s *SolidarityServiceServerImpl, bookings []i
|
|||
},
|
||||
PassengerDepartureRoute: convertInternalFeatureToProtoFeature(booking.PassengerPickupAddress),
|
||||
PassengerDestinationRoute: convertInternalFeatureToProtoFeature(booking.PassengerDropAddress),
|
||||
Duration: &booking.Duration,
|
||||
Distance: &distance,
|
||||
Duration: booking.Duration,
|
||||
Distance: distance,
|
||||
Car: &proto.Car{
|
||||
Model: &car.Model,
|
||||
Brand: &car.Brand,
|
||||
Model: car.Model,
|
||||
Brand: car.Brand,
|
||||
},
|
||||
Price: &proto.Price{
|
||||
Type: &priceType,
|
||||
Type: priceType,
|
||||
},
|
||||
}
|
||||
|
||||
|
@ -466,12 +508,12 @@ func convertInternalUserToProtoUser(user internal.User) *proto.User {
|
|||
return &proto.User{
|
||||
Id: user.ID,
|
||||
Alias: user.Alias,
|
||||
FirstName: &user.FirstName,
|
||||
LastName: &user.LastName,
|
||||
Grade: &user.Grade,
|
||||
Picture: &user.Picture,
|
||||
Gender: &user.Gender,
|
||||
VerifiedIdentity: &user.VerifiedIdentity,
|
||||
FirstName: user.FirstName,
|
||||
LastName: user.LastName,
|
||||
Grade: user.Grade,
|
||||
Picture: user.Picture,
|
||||
Gender: user.Gender,
|
||||
VerifiedIdentity: user.VerifiedIdentity,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -544,22 +586,22 @@ func (s *SolidarityServiceServerImpl) DriverJourneys(ctx context.Context, req *p
|
|||
User: &proto.User{
|
||||
Id: v.Driver.ID,
|
||||
Alias: v.Driver.Alias,
|
||||
FirstName: &v.Driver.FirstName,
|
||||
LastName: &v.Driver.LastName,
|
||||
Grade: &v.Driver.Grade,
|
||||
Picture: &v.Driver.Picture,
|
||||
Gender: &v.Driver.Gender,
|
||||
VerifiedIdentity: &v.Driver.VerifiedIdentity,
|
||||
FirstName: v.Driver.FirstName,
|
||||
LastName: v.Driver.LastName,
|
||||
Grade: v.Driver.Grade,
|
||||
Picture: v.Driver.Picture,
|
||||
Gender: v.Driver.Gender,
|
||||
VerifiedIdentity: v.Driver.VerifiedIdentity,
|
||||
},
|
||||
Car: &proto.Car{
|
||||
Model: &v.Car.Model,
|
||||
Brand: &v.Car.Brand,
|
||||
Model: v.Car.Model,
|
||||
Brand: v.Car.Brand,
|
||||
},
|
||||
DriverDeparture_Date: ×tamp.Timestamp{
|
||||
Seconds: req.DepartureDate.Seconds,
|
||||
},
|
||||
Price: &proto.Price{
|
||||
Type: &priceType,
|
||||
Type: priceType,
|
||||
},
|
||||
DriverDeparture_Address: v.Driver_departure_address.Properties.MustString("name"),
|
||||
}
|
||||
|
@ -582,31 +624,31 @@ func (s *SolidarityServiceServerImpl) SetPassengerTrip(ctx context.Context, req
|
|||
passenger := internal.Passenger{}
|
||||
passenger.Passenger.ID = req.Passenger.Id
|
||||
passenger.Passenger.Alias = req.Passenger.Alias
|
||||
if req.Passenger.FirstName != nil {
|
||||
passenger.Passenger.FirstName = *req.Passenger.FirstName
|
||||
if req.Passenger.FirstName != "" {
|
||||
passenger.Passenger.FirstName = req.Passenger.FirstName
|
||||
}
|
||||
if req.Passenger.LastName != nil {
|
||||
passenger.Passenger.LastName = *req.Passenger.LastName
|
||||
if req.Passenger.LastName != "" {
|
||||
passenger.Passenger.LastName = req.Passenger.LastName
|
||||
}
|
||||
if req.Passenger.Grade != nil {
|
||||
passenger.Passenger.Grade = *req.Passenger.Grade
|
||||
if req.Passenger.Grade != 0 {
|
||||
passenger.Passenger.Grade = req.Passenger.Grade
|
||||
}
|
||||
if req.Passenger.Picture != nil {
|
||||
passenger.Passenger.Picture = *req.Passenger.Picture
|
||||
if req.Passenger.Picture != "" {
|
||||
passenger.Passenger.Picture = req.Passenger.Picture
|
||||
}
|
||||
if req.Passenger.Gender != nil {
|
||||
passenger.Passenger.Gender = *req.Passenger.Gender
|
||||
if req.Passenger.Gender != "" {
|
||||
passenger.Passenger.Gender = req.Passenger.Gender
|
||||
}
|
||||
if req.Passenger.VerifiedIdentity != nil {
|
||||
passenger.Passenger.VerifiedIdentity = *req.Passenger.VerifiedIdentity
|
||||
if req.Passenger.VerifiedIdentity != false {
|
||||
passenger.Passenger.VerifiedIdentity = req.Passenger.VerifiedIdentity
|
||||
}
|
||||
if req.Preferences != nil {
|
||||
passenger.Preferences = internal.Preferences{
|
||||
Smoking: *req.Preferences.Smoking,
|
||||
Animals: *req.Preferences.Animals,
|
||||
Music: *req.Preferences.Music,
|
||||
Is_talker: *req.Preferences.IsTalker,
|
||||
Luggage_size: *req.Preferences.LuggageSize,
|
||||
Smoking: req.Preferences.Smoking,
|
||||
Animals: req.Preferences.Animals,
|
||||
Music: req.Preferences.Music,
|
||||
Is_talker: req.Preferences.IsTalker,
|
||||
Luggage_size: req.Preferences.LuggageSize,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Binary file not shown.
|
@ -0,0 +1,789 @@
|
|||
package storage
|
||||
|
||||
import (
|
||||
"github.com/paulmach/orb"
|
||||
"github.com/paulmach/orb/geojson"
|
||||
"go.mongodb.org/mongo-driver/mongo"
|
||||
"github.com/spf13/viper"
|
||||
"go.mongodb.org/mongo-driver/mongo/options"
|
||||
"solidarity-service/utils"
|
||||
"context"
|
||||
"github.com/google/uuid"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
_ "github.com/lib/pq"
|
||||
"github.com/rs/zerolog/log"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"solidarity-service/internal"
|
||||
|
||||
)
|
||||
|
||||
type MongoDBStorage struct {
|
||||
*mongo.Client
|
||||
DbName string
|
||||
Collections map[string]string
|
||||
}
|
||||
|
||||
func NewMongoDBStorage(cfg *viper.Viper) (MongoDBStorage, error) {
|
||||
var (
|
||||
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_groups = cfg.GetString("storage.db.mongodb.collections.groups")
|
||||
////////////////////////code
|
||||
mongodb_groups_members = cfg.GetString("storage.db.mongodb.collections.groups_member")
|
||||
)
|
||||
|
||||
client, err := mongo.NewClient(options.Client().ApplyURI("mongodb://" + mongodb_host + ":" + mongodb_port))
|
||||
if err != nil {
|
||||
return MongoDBStorage{}, err
|
||||
}
|
||||
|
||||
err = client.Connect(context.TODO())
|
||||
|
||||
if err != nil {
|
||||
return MongoDBStorage{}, err
|
||||
}
|
||||
|
||||
storage := MongoDBStorage{
|
||||
Client: client,
|
||||
DbName: mongodb_dbname,
|
||||
Collections: map[string]string{
|
||||
"groups": mongodb_groups,
|
||||
/////////////////////////////code
|
||||
"groups_member": mongodb_groups_members,
|
||||
},
|
||||
}
|
||||
//TODO Indexes
|
||||
return storage, err
|
||||
}
|
||||
|
||||
func (s MongoDBStorage) CreatePassenger(passenger internal.Passenger) (err error) {
|
||||
collection := s.Client.Database(s.DbName).Collection(s.Collections["passengers"])
|
||||
|
||||
_, err = uuid.Parse(passenger.Passenger.ID)
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("MongoDB Storage CreatePassenger invalid ID")
|
||||
return err
|
||||
}
|
||||
|
||||
if passenger.Passenger.Alias == "" || passenger.Passenger.Operator == "" {
|
||||
errMsg := "MongoDB Storage CreatePassenger empty alias or operator FQDN."
|
||||
log.Error().Msg(errMsg)
|
||||
return errors.New(errMsg)
|
||||
}
|
||||
// preferencesJSON, err := json.Marshal(passenger.Preferences)
|
||||
if err != nil {
|
||||
errMsg := "MongoDB Storage CreatePassenger Error encoding Preferences to JSON"
|
||||
log.Error().Err(err).Msg(errMsg)
|
||||
return errors.New(errMsg + err.Error())
|
||||
}
|
||||
if _, err := collection.InsertOne(context.TODO(), passenger); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// if err != nil {
|
||||
// if strings.Contains(err.Error(), utils.SQL_DUPLICATE) {
|
||||
// err = s.UpdatePassenger(passenger)
|
||||
// if err != nil {
|
||||
// return err
|
||||
// }
|
||||
// return nil
|
||||
// }
|
||||
// errMsg := "Postgresql Storage CreatePassenger Error inserting data into the database"
|
||||
// log.Error().Err(err).Msg(errMsg)
|
||||
// return errors.New(errMsg + err.Error())
|
||||
// }
|
||||
return nil
|
||||
}
|
||||
func (s MongoDBStorage) UpdatePassenger(passenger internal.Passenger) (err error) {
|
||||
collection := s.Client.Database(s.DbName).Collection(s.Collections["passengers"])
|
||||
|
||||
_, err = uuid.Parse(passenger.Passenger.ID)
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("MongoDB Storage UpdatePassenger invalid ID")
|
||||
return err
|
||||
}
|
||||
if passenger.Passenger.Alias == "" || passenger.Passenger.Operator == "" {
|
||||
errMsg := "MongoDB Storage UpdatePassenger empty alias or operator FQDN."
|
||||
log.Error().Msg(errMsg)
|
||||
return errors.New(errMsg)
|
||||
}
|
||||
// preferencesJSON, err := json.Marshal(passenger.Preferences)
|
||||
if err != nil {
|
||||
errMsg := "MongoDB Storage UpdatePassenger Error encoding Preferences to JSON"
|
||||
log.Error().Err(err).Msg(errMsg)
|
||||
return errors.New(errMsg + err.Error())
|
||||
}
|
||||
if _, err := collection.ReplaceOne(context.TODO(), bson.M{"_id": passenger.Passenger.ID}, passenger); err != nil {
|
||||
fmt.Println(err)
|
||||
return err
|
||||
}
|
||||
if err != nil {
|
||||
errMsg := "MongoDB Storage UpdatePassenger Error updating data in the database"
|
||||
log.Error().Err(err).Msg(errMsg)
|
||||
return errors.New(errMsg + err.Error())
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s MongoDBStorage) GetPassenger(passengerID string) (passenger internal.Passenger, err error) {
|
||||
collection := s.Client.Database(s.DbName).Collection(s.Collections["passengers"])
|
||||
|
||||
var preferencesJSON []byte
|
||||
_ , err = uuid.Parse(passenger.Passenger.ID)
|
||||
if len(passengerID) == 0 {
|
||||
return passenger, errors.New("no group id provided")
|
||||
} else {
|
||||
_, err = collection.Find(context.TODO(), bson.M{"_id": bson.M{"$in": passengerID}})
|
||||
if err != nil {
|
||||
return passenger, err
|
||||
}
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
errMsg := "MongoDB Storage GetPassenger Error querying data from the database"
|
||||
log.Error().Err(err).Msg(errMsg)
|
||||
return passenger, errors.New(errMsg + err.Error())
|
||||
}
|
||||
|
||||
err = json.Unmarshal(preferencesJSON, &passenger.Preferences)
|
||||
if err != nil {
|
||||
errMsg := "MongoDB Storage GetPassenger Error decoding Preferences from JSON"
|
||||
log.Error().Err(err).Msg(errMsg)
|
||||
return passenger, errors.New(errMsg + err.Error())
|
||||
}
|
||||
return passenger, nil
|
||||
}
|
||||
|
||||
func (s MongoDBStorage) CreateDriver(driver internal.Driver) (err error) {
|
||||
collection := s.Client.Database(s.DbName).Collection(s.Collections["drivers"])
|
||||
//var availabilities []byte
|
||||
_, err = uuid.Parse(driver.Driver.ID)
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("MongoDB Storage CreateDriver invalid ID")
|
||||
return err
|
||||
}
|
||||
//departureJSON, err := json.Marshal(driver.Driver_departure_address)
|
||||
if err != nil {
|
||||
errMsg := "MongoDB Storage CreateDriver Error encoding departure Feature to JSON"
|
||||
log.Error().Err(err).Msg(errMsg)
|
||||
return errors.New(errMsg + err.Error())
|
||||
}
|
||||
//preferencesJSON, err := json.Marshal(driver.Preferences)
|
||||
if err != nil {
|
||||
errMsg := "MongoDB Storage CreateDriver Error encoding Preferences to JSON"
|
||||
log.Error().Err(err).Msg(errMsg + err.Error())
|
||||
return errors.New(errMsg)
|
||||
}
|
||||
//carJSON, err := json.Marshal(driver.Car)
|
||||
if err != nil {
|
||||
errMsg := "MongoDB Storage CreateDriver Error encoding Car to JSON"
|
||||
log.Error().Err(err).Msg(errMsg)
|
||||
return errors.New(errMsg + err.Error())
|
||||
}
|
||||
if driver.Driver.Alias == "" || driver.Driver.Operator == "" {
|
||||
errMsg := "MongoDB Storage CreateDriver empty alias or operator FQDN."
|
||||
log.Error().Msg(errMsg)
|
||||
return errors.New(errMsg)
|
||||
}
|
||||
if driver.AvailabilitiesType != internal.Punctual && driver.AvailabilitiesType != internal.Regular {
|
||||
errMsg := "MongoDB Storage CreateDriver invalid Availabilities Type"
|
||||
log.Error().Msg(errMsg)
|
||||
return errors.New(errMsg)
|
||||
}
|
||||
if driver.Radius == 0 {
|
||||
errMsg := "MongoDB Storage CreateDriver Radius has to be defined"
|
||||
log.Error().Msg(errMsg)
|
||||
return errors.New(errMsg)
|
||||
}
|
||||
switch driver.AvailabilitiesType {
|
||||
case internal.Punctual:
|
||||
//availabilities, err = json.Marshal(driver.PunctualAvailabilities)
|
||||
if err != nil {
|
||||
errMsg := "MongoDB Storage CreateDriver error converting Punctual availabilities"
|
||||
log.Error().Msg(errMsg)
|
||||
return errors.New(errMsg + err.Error())
|
||||
}
|
||||
case internal.Regular:
|
||||
//availabilities, err = json.Marshal(driver.RegularAvailabilities)
|
||||
if err != nil {
|
||||
errMsg := "MongoDB Storage CreateDriver error converting Regular availabilities"
|
||||
log.Error().Msg(errMsg)
|
||||
return errors.New(errMsg + err.Error())
|
||||
}
|
||||
}
|
||||
if _, err := collection.InsertOne(context.TODO(), driver); err != nil {
|
||||
return err
|
||||
}
|
||||
// if err != nil {
|
||||
// if strings.Contains(err.Error(), utils.SQL_DUPLICATE) {
|
||||
// err = s.UpdateDriver(driver)
|
||||
// if err != nil {
|
||||
// return err
|
||||
// }
|
||||
// return nil
|
||||
// }
|
||||
// errMsg := "MongoDB Storage CreateDriver Error inserting data into the database"
|
||||
// log.Error().Err(err).Msg(errMsg)
|
||||
// return errors.New(errMsg + err.Error())
|
||||
// }
|
||||
return nil
|
||||
}
|
||||
func (s MongoDBStorage) UpdateDriver(driver internal.Driver) (err error) {
|
||||
collection := s.Client.Database(s.DbName).Collection(s.Collections["drivers"])
|
||||
//var availabilities []byte
|
||||
_, err = uuid.Parse(driver.Driver.ID)
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("MongoDB Storage UpdateDriver invalid ID")
|
||||
return err
|
||||
}
|
||||
//departureJSON, err := json.Marshal(driver.Driver_departure_address)
|
||||
if err != nil {
|
||||
errMsg := "MongoDB Storage UpdateDriver Error encoding departure Feature to JSON"
|
||||
log.Error().Err(err).Msg(errMsg)
|
||||
return errors.New(errMsg + err.Error())
|
||||
}
|
||||
//preferencesJSON, err := json.Marshal(driver.Preferences)
|
||||
if err != nil {
|
||||
errMsg := "MongoDB Storage UpdateDriver Error encoding Preferences to JSON"
|
||||
log.Error().Err(err).Msg(errMsg + err.Error())
|
||||
return errors.New(errMsg)
|
||||
}
|
||||
//carJSON, err := json.Marshal(driver.Car)
|
||||
if err != nil {
|
||||
errMsg := "MongoDB Storage UpdateDriver Error encoding Car to JSON"
|
||||
log.Error().Err(err).Msg(errMsg)
|
||||
return errors.New(errMsg + err.Error())
|
||||
}
|
||||
if driver.Driver.Alias == "" || driver.Driver.Operator == "" {
|
||||
errMsg := "MongoDB Storage UpdateDriver empty alias or operator FQDN."
|
||||
log.Error().Msg(errMsg)
|
||||
return errors.New(errMsg)
|
||||
}
|
||||
if driver.AvailabilitiesType != internal.Punctual && driver.AvailabilitiesType != internal.Regular {
|
||||
errMsg := "MongoDB Storage UpdateDriver invalid Availabilities Type"
|
||||
log.Error().Msg(errMsg)
|
||||
return errors.New(errMsg)
|
||||
}
|
||||
if driver.Radius == 0 {
|
||||
errMsg := "MongoDB Storage UpdateDriver Radius has to be defined"
|
||||
log.Error().Msg(errMsg)
|
||||
return errors.New(errMsg)
|
||||
}
|
||||
// switch driver.AvailabilitiesType {
|
||||
// case internal.Punctual:
|
||||
// availabilities, err = json.Marshal(driver.PunctualAvailabilities)
|
||||
// if err != nil {
|
||||
// errMsg := "MongoDB Storage UpdateDriver error converting Punctual availabilities"
|
||||
// log.Error().Msg(errMsg)
|
||||
// return errors.New(errMsg + err.Error())
|
||||
// }
|
||||
// case internal.Regular:
|
||||
// availabilities, err = json.Marshal(driver.RegularAvailabilities)
|
||||
// if err != nil {
|
||||
// errMsg := "MongoDB Storage UpdateDriver error converting Regular availabilities"
|
||||
// log.Error().Msg(errMsg)
|
||||
// return errors.New(errMsg + err.Error())
|
||||
// }
|
||||
// }
|
||||
|
||||
if _, err := collection.ReplaceOne(context.TODO(), bson.M{"_id": driver.Driver.ID}, driver); err != nil {
|
||||
fmt.Println(err)
|
||||
return err
|
||||
}
|
||||
if err != nil {
|
||||
errMsg := "MongoDB Storage UpdateDriver Error updating data in the database"
|
||||
log.Error().Err(err).Msg(errMsg)
|
||||
return errors.New(errMsg + err.Error())
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s MongoDBStorage) GetDriver(driverID string) ( *internal.Driver, error) {
|
||||
collection := s.Client.Database(s.DbName).Collection(s.Collections["drivers"])
|
||||
// var preferencesJSON []byte
|
||||
// var departureAddress []byte
|
||||
// var availabilitiesJSON []byte
|
||||
// var carJSON []byte
|
||||
driver := &internal.Driver{}
|
||||
if err := collection.FindOne(context.TODO(), bson.M{"_id": driverID}).Decode(driver); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
// if err != nil {
|
||||
// errMsg := "MongoDB Storage GetDriver Error querying data from the database"
|
||||
// log.Error().Err(err).Msg(errMsg)
|
||||
// return driver, errors.New(errMsg + err.Error())
|
||||
// }
|
||||
|
||||
// err = json.Unmarshal(preferencesJSON, &driver.Preferences)
|
||||
// if err != nil {
|
||||
// errMsg := "MongoDB Storage GetDriver Error decoding Preferences from JSON"
|
||||
// log.Error().Err(err).Msg(errMsg)
|
||||
// return driver, errors.New(errMsg + err.Error())
|
||||
// }
|
||||
// err = json.Unmarshal(carJSON, &driver.Car)
|
||||
// if err != nil {
|
||||
// errMsg := "MongoDB Storage GetDriver Error decoding Car from JSON"
|
||||
// log.Error().Err(err).Msg(errMsg)
|
||||
// return driver, errors.New(errMsg + err.Error())
|
||||
// }
|
||||
// driver.Driver_departure_address, err = geojson.UnmarshalFeature(departureAddress)
|
||||
// if err != nil {
|
||||
// errMsg := "MongoDB Storage GetDriver Error decoding Driver departure route into GeoJSON"
|
||||
// log.Error().Err(err).Msg(errMsg)
|
||||
// return driver, errors.New(errMsg + err.Error())
|
||||
// }
|
||||
|
||||
// switch driver.AvailabilitiesType {
|
||||
// case Regular:
|
||||
// err = json.Unmarshal(availabilitiesJSON, &driver.RegularAvailabilities)
|
||||
// if err != nil {
|
||||
// errMsg := "MongoDB Storage GetDriver Error decoding Regular Availabilities from JSON"
|
||||
// log.Error().Err(err).Msg(errMsg)
|
||||
// return driver, errors.New(errMsg + err.Error())
|
||||
// }
|
||||
// case Punctual:
|
||||
// err = json.Unmarshal(availabilitiesJSON, &driver.PunctualAvailabilities)
|
||||
// if err != nil {
|
||||
// errMsg := "MongoDB Storage GetDriver Error decoding Punctual Availabilities from JSON"
|
||||
// log.Error().Err(err).Msg(errMsg)
|
||||
// return driver, errors.New(errMsg + err.Error())
|
||||
// }
|
||||
// default:
|
||||
// errMsg := "MongoDB Storage GetDriver Invalid Availabilities Type"
|
||||
// log.Error().Msg(errMsg)
|
||||
// return driver, errors.New(errMsg + err.Error())
|
||||
// }
|
||||
|
||||
return driver, nil
|
||||
}
|
||||
|
||||
func (s MongoDBStorage) CreateBooking(booking internal.BookingRequest) (err error) {
|
||||
collection := s.Client.Database(s.DbName).Collection(s.Collections["bookings"])
|
||||
_, err = uuid.Parse(booking.Driver_id)
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("MongoDB Storage CreateBooking invalid Driver ID")
|
||||
return err
|
||||
}
|
||||
_, err = uuid.Parse(booking.Passenger_id)
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("MongoDB Storage CreateBooking invalid Passenger ID")
|
||||
return err
|
||||
}
|
||||
_, err = uuid.Parse(booking.ID)
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("MongoDB Storage CreateBooking invalid Booking ID")
|
||||
return err
|
||||
}
|
||||
if booking.Operator == "" {
|
||||
log.Error().Err(err).Msg("MongoDB Storage CreateBooking empty operator")
|
||||
return err
|
||||
}
|
||||
//departureJSON, err := json.Marshal(booking.Departure_address)
|
||||
if err != nil {
|
||||
errMsg := "MongoDB Storage CreateBooking Error encoding departure Feature to JSON"
|
||||
log.Error().Err(err).Msg(errMsg)
|
||||
return errors.New(errMsg + err.Error())
|
||||
}
|
||||
|
||||
//destinationJSON, err := json.Marshal(booking.Destination_address)
|
||||
if err != nil {
|
||||
errMsg := "MongoDB Storage CreateBooking Error converting destination Feature to JSON"
|
||||
log.Error().Err(err).Msg(errMsg)
|
||||
return errors.New(errMsg + err.Error())
|
||||
}
|
||||
if booking.Pickup_date == 0 {
|
||||
errMsg := "MongoDB Storage CreateBooking empty UNIX pickup Date timestamp"
|
||||
log.Error().Err(err).Msg(errMsg)
|
||||
return errors.New(errMsg)
|
||||
}
|
||||
booking.Distance = utils.Haversine(booking.Departure_address.Point().Lat(), booking.Departure_address.Point().Lon(),
|
||||
booking.Destination_address.Point().Lat(), booking.Destination_address.Point().Lon())
|
||||
booking.Duration, _ = utils.CalculateDurationBetweenFeatures(booking.Departure_address, booking.Destination_address)
|
||||
if _, err := collection.InsertOne(context.TODO(), booking); err != nil {
|
||||
return err
|
||||
}
|
||||
if err != nil {
|
||||
errMsg := "MongoDB Storage CreateBooking Error inserting data into the database"
|
||||
log.Error().Err(err).Msg(errMsg)
|
||||
return errors.New(errMsg + err.Error())
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s MongoDBStorage) GetBooking(bookingID string) (*internal.Booking, error) {
|
||||
collection := s.Client.Database(s.DbName).Collection(s.Collections["bookings"])
|
||||
//var departureAddress []byte
|
||||
//var destinationAddress []byte
|
||||
booking := &internal.Booking{}
|
||||
if err := collection.FindOne(context.TODO(), bson.M{"_id": bookingID}).Decode(booking); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// if err != nil {
|
||||
// errMsg := "MongoDB Storage GetBooking Error getting booking"
|
||||
// log.Error().Err(err).Msg(errMsg)
|
||||
// return internal.Booking{}, errors.New(errMsg + err.Error())
|
||||
// }
|
||||
// booking.PassengerPickupAddress, err = geojson.UnmarshalFeature(departureAddress)
|
||||
// if err != nil {
|
||||
// errMsg := "MongoDB Storage GetBooking Error decoding Driver departure route into GeoJSON"
|
||||
// log.Error().Err(err).Msg(errMsg)
|
||||
// return internal.Booking{}, errors.New(errMsg + err.Error())
|
||||
// }
|
||||
// booking.PassengerDropAddress, err = geojson.UnmarshalFeature(destinationAddress)
|
||||
// if err != nil {
|
||||
// errMsg := "MongoDB Storage GetBooking Error decoding Driver destination route into GeoJSON"
|
||||
// log.Error().Err(err).Msg(errMsg)
|
||||
// return internal.Booking{}, errors.New(errMsg + err.Error())
|
||||
// }
|
||||
passenger, err := s.GetPassenger(booking.Passenger.ID)
|
||||
if err != nil {
|
||||
errMsg := "MongoDB Storage GetBooking Error getting passenger"
|
||||
log.Error().Err(err).Msg(errMsg)
|
||||
return booking, errors.New(errMsg + err.Error())
|
||||
}
|
||||
booking.Passenger = passenger.Passenger
|
||||
driver, err := s.GetDriver(booking.Driver.ID)
|
||||
if err != nil {
|
||||
errMsg := "MongoDB Storage GetBooking Error getting driver"
|
||||
log.Error().Err(err).Msg(errMsg)
|
||||
return booking, errors.New(errMsg + err.Error())
|
||||
}
|
||||
booking.Driver = driver.Driver
|
||||
return booking, nil
|
||||
}
|
||||
|
||||
func (s MongoDBStorage) UpdateBookingStatus(bookingStatusID string, status internal.BookingStatus) (err error) {
|
||||
collection := s.Client.Database(s.DbName).Collection(s.Collections["bookings"])
|
||||
_, err = uuid.Parse(bookingStatusID)
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("MongoDB Storage UpdateBookingStatus invalid Booking ID")
|
||||
return err
|
||||
}
|
||||
_, err = s.GetBooking(bookingStatusID)
|
||||
if err != nil {
|
||||
return errors.New(err.Error())
|
||||
}
|
||||
if _, err := collection.ReplaceOne(context.TODO(), bson.M{"_id": bookingStatusID}, status); err != nil {
|
||||
fmt.Println(err)
|
||||
return err
|
||||
}
|
||||
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s MongoDBStorage) FilterUserBookingsByStatus(userType string, status internal.BookingStatus, userID string) (bookings []internal.Booking, err error) {
|
||||
collection := s.Client.Database(s.DbName).Collection(s.Collections["bookings"])
|
||||
if err != nil {
|
||||
return nil, errors.New("invalid UUID")
|
||||
}
|
||||
|
||||
if userType != "driver" && userType != "passenger" {
|
||||
return nil, errors.New("invalid user type")
|
||||
}
|
||||
|
||||
var cur *mongo.Cursor
|
||||
|
||||
findOptions := options.Find()
|
||||
|
||||
if len(userID) == 0 {
|
||||
return bookings, errors.New("no group id provided")
|
||||
} else {
|
||||
cur, err = collection.Find(context.TODO(), bson.M{"_id": bson.M{"$in": userID}}, findOptions)
|
||||
if err != nil {
|
||||
return bookings, err
|
||||
}
|
||||
}
|
||||
|
||||
for cur.Next(context.TODO()) {
|
||||
var group internal.Booking
|
||||
var elem bson.M
|
||||
|
||||
if err := cur.Decode(&elem); err != nil {
|
||||
return bookings, err
|
||||
}
|
||||
|
||||
bsonBytes, _ := bson.Marshal(elem)
|
||||
bson.Unmarshal(bsonBytes, &group)
|
||||
|
||||
bookings = append(bookings, group)
|
||||
|
||||
}
|
||||
var wg sync.WaitGroup
|
||||
//var mu sync.Mutex
|
||||
|
||||
// for rows.Next() {
|
||||
// var departureAddress []byte
|
||||
// var destinationAddress []byte
|
||||
// var booking internal.Booking
|
||||
|
||||
// if err := rows.Scan(&booking.ID, &booking.Passenger.ID, &booking.Driver.ID, &booking.Status, &departureAddress, &destinationAddress, &booking.Pickup_date, &booking.Duration, &booking.Distance); err != nil {
|
||||
// return nil, err
|
||||
// }
|
||||
|
||||
// wg.Add(1)
|
||||
// go func(booking internal.Booking, departureAddress, destinationAddress []byte) {
|
||||
// defer wg.Done()
|
||||
|
||||
// // Common logic for both "driver" and "passenger" cases
|
||||
// booking, err := s.populateBookingDetails(booking, departureAddress, destinationAddress)
|
||||
// if err != nil {
|
||||
// mu.Lock()
|
||||
// err = fmt.Errorf("Error populating booking details: %w", err)
|
||||
// mu.Unlock()
|
||||
// return
|
||||
// }
|
||||
|
||||
// mu.Lock()
|
||||
// bookings = append(bookings, booking)
|
||||
// mu.Unlock()
|
||||
// }(booking, departureAddress, destinationAddress)
|
||||
// }
|
||||
|
||||
// Wait for all goroutines to finish
|
||||
wg.Wait()
|
||||
|
||||
// if err := rows.Err(); err != nil {
|
||||
// return nil, err
|
||||
// }
|
||||
|
||||
return bookings, nil
|
||||
}
|
||||
|
||||
func (s MongoDBStorage) populateBookingDetails(booking internal.Booking, departureAddress, destinationAddress []byte) (internal.Booking, error) {
|
||||
var wg sync.WaitGroup
|
||||
var mu sync.Mutex
|
||||
errCh := make(chan error, 4) // Buffered channel to handle potential errors
|
||||
|
||||
// Concurrently fetch passenger information
|
||||
wg.Add(1)
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
|
||||
passenger, err := s.GetPassenger(booking.Passenger.ID)
|
||||
if err != nil {
|
||||
errCh <- fmt.Errorf("MongoDB Storage GetBooking Error getting passenger: %w", err)
|
||||
return
|
||||
}
|
||||
|
||||
mu.Lock()
|
||||
booking.Passenger = passenger.Passenger
|
||||
mu.Unlock()
|
||||
}()
|
||||
|
||||
// Concurrently fetch driver information
|
||||
wg.Add(1)
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
|
||||
driver, err := s.GetDriver(booking.Driver.ID)
|
||||
if err != nil {
|
||||
errCh <- fmt.Errorf("MongoDB Storage GetBooking Error getting driver: %w", err)
|
||||
return
|
||||
}
|
||||
|
||||
mu.Lock()
|
||||
booking.Driver = driver.Driver
|
||||
mu.Unlock()
|
||||
}()
|
||||
|
||||
// Concurrently decode departureAddress into GeoJSON
|
||||
wg.Add(1)
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
|
||||
decodedDepartureAddress, err := geojson.UnmarshalFeature(departureAddress)
|
||||
if err != nil {
|
||||
errCh <- fmt.Errorf("MongoDB Storage FilterBookingsByStatus Error decoding Driver departure route into GeoJSON: %w", err)
|
||||
return
|
||||
}
|
||||
|
||||
mu.Lock()
|
||||
booking.PassengerPickupAddress = decodedDepartureAddress
|
||||
mu.Unlock()
|
||||
}()
|
||||
|
||||
// Concurrently decode destinationAddress into GeoJSON
|
||||
wg.Add(1)
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
|
||||
decodedDestinationAddress, err := geojson.UnmarshalFeature(destinationAddress)
|
||||
if err != nil {
|
||||
errCh <- fmt.Errorf("MongoDB Storage FilterBookingsByStatus Error decoding Driver destination route into GeoJSON: %w", err)
|
||||
return
|
||||
}
|
||||
|
||||
mu.Lock()
|
||||
booking.PassengerDropAddress = decodedDestinationAddress
|
||||
mu.Unlock()
|
||||
}()
|
||||
|
||||
// Close the error channel after all goroutines are done
|
||||
go func() {
|
||||
wg.Wait()
|
||||
close(errCh)
|
||||
}()
|
||||
|
||||
// Check for errors using a select statement
|
||||
for err := range errCh {
|
||||
return internal.Booking{}, err // Return the first error encountered
|
||||
}
|
||||
|
||||
return booking, nil
|
||||
}
|
||||
|
||||
func (s MongoDBStorage) GetAllDrivers( date int64) (drivers []internal.Driver, err error) {
|
||||
// rows := s.Client.Database(s.DbName).Collection(s.Collections["drivers"])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
// defer rows.Close()
|
||||
|
||||
//for rows.Next(ctx) {
|
||||
var driver internal.Driver
|
||||
var departureRoute []byte
|
||||
var preferencesJSON []byte
|
||||
var availabilitiesJSON []byte
|
||||
var carJSON []byte
|
||||
|
||||
// if err := rows.Scan(
|
||||
// &driver.Driver.ID,
|
||||
// &departureRoute,
|
||||
// &driver.Radius,
|
||||
// &driver.Driver.LastName,
|
||||
// &driver.Driver.FirstName,
|
||||
// &driver.Driver.Grade,
|
||||
// &driver.Driver.Alias,
|
||||
// &driver.Driver.Picture,
|
||||
// &driver.Driver.VerifiedIdentity,
|
||||
// &preferencesJSON,
|
||||
// &driver.AvailabilitiesType,
|
||||
// &availabilitiesJSON,
|
||||
// &driver.Driver.Operator,
|
||||
// &carJSON,
|
||||
// ); err != nil {
|
||||
// return nil, err
|
||||
// }
|
||||
|
||||
if err := json.Unmarshal(departureRoute, &driver.Driver_departure_address); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := json.Unmarshal(preferencesJSON, &driver.Preferences); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := json.Unmarshal(carJSON, &driver.Car); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Filter drivers based on date and time matching punctual or regular availabilities.
|
||||
if driver.AvailabilitiesType == internal.Punctual {
|
||||
if err := json.Unmarshal(availabilitiesJSON, &driver.PunctualAvailabilities); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
year, month, day := time.Unix(date, 0).Date()
|
||||
dateHour := time.Unix(date, 0).UTC().Local()
|
||||
dateHour_string := dateHour.Format("3:04 PM")
|
||||
for _, avail := range driver.PunctualAvailabilities {
|
||||
availyear, availmonth, availday := time.Unix(avail.Date, 0).Date()
|
||||
if availyear == year && availmonth == month && availday == day {
|
||||
startTime, err := time.Parse("3:04 PM", avail.StartTime)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
endTime, err := time.Parse("3:04 PM", avail.EndTime)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Convert DateHour_string to time.Time
|
||||
dateHourTime, err := time.Parse("3:04 PM", dateHour_string)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if dateHourTime.After(startTime) || dateHourTime.Equal(startTime) {
|
||||
if dateHourTime.Before(endTime) || dateHourTime.Equal(endTime) {
|
||||
drivers = append(drivers, driver)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
// Check if the date and time match the punctual driver's availability.
|
||||
|
||||
}
|
||||
} else if driver.AvailabilitiesType == internal.Regular {
|
||||
if err := json.Unmarshal(availabilitiesJSON, &driver.RegularAvailabilities); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
dayOfWeek := strings.ToLower(time.Unix(date, 0).Local().Format("Mon"))
|
||||
dateHour := time.Unix(date, 0).UTC().Local()
|
||||
dateHour_string := dateHour.Format("3:04 PM")
|
||||
|
||||
for _, avail := range driver.RegularAvailabilities {
|
||||
|
||||
// Check if the day and time match the regular driver's availability.
|
||||
if strings.ToLower(avail.DayOfWeek) == dayOfWeek {
|
||||
startTime, err := time.Parse("3:04 PM", avail.StartTime)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
endTime, err := time.Parse("3:04 PM", avail.EndTime)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Convert DateHour_string to time.Time
|
||||
dateHourTime, err := time.Parse("3:04 PM", dateHour_string)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if dateHourTime.After(startTime) || dateHourTime.Equal(startTime) {
|
||||
if dateHourTime.Before(endTime) || dateHourTime.Equal(endTime) {
|
||||
drivers = append(drivers, driver)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//}
|
||||
|
||||
// if err := rows.Err(); err != nil {
|
||||
// return nil, err
|
||||
// }
|
||||
|
||||
return drivers, nil
|
||||
}
|
||||
|
||||
func (s MongoDBStorage) DriverJourneys(departure_route *geojson.Feature, departure_date int64) (drivers []internal.Driver, err error) {
|
||||
allDrivers, err := s.GetAllDrivers(departure_date)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
for _, driver := range allDrivers {
|
||||
// Check if the departure route is the same as the driver's departure route.
|
||||
if departure_route.Point().Y() == driver.Driver_departure_address.Point().Y() && departure_route.Point().X() == driver.Driver_departure_address.Point().X() {
|
||||
drivers = append(drivers, driver)
|
||||
} else {
|
||||
// Calculate the distance between the departure point and the driver's departure route.
|
||||
coords1 := departure_route.Geometry.(orb.Point)
|
||||
coords2 := driver.Driver_departure_address.Geometry.(orb.Point)
|
||||
distance := utils.Haversine(coords1[1], coords1[0], coords2[1], coords2[0])
|
||||
if int64(distance) <= int64(driver.Radius) {
|
||||
drivers = append(drivers, driver)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return drivers, nil
|
||||
}
|
|
@ -179,6 +179,53 @@ func (s PostgresqlStorage) GetPassenger(passengerID string) (passenger internal.
|
|||
return passenger, nil
|
||||
}
|
||||
|
||||
func (s PostgresqlStorage) GetAllPassengers() (passengers []internal.Passenger, err error) {
|
||||
var preferencesJSON []byte
|
||||
rows, err := s.DbConnection.Query(fmt.Sprintf("SELECT alias, last_name, first_name, grade, picture, verified_identity, operator, preferences, passenger_id FROM %s ", s.Tables["passengers"]))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
for rows.Next() {
|
||||
var passenger internal.Passenger
|
||||
|
||||
if err := rows.Scan(
|
||||
&passenger.Passenger.Alias,
|
||||
&passenger.Passenger.LastName,
|
||||
&passenger.Passenger.FirstName,
|
||||
&passenger.Passenger.Grade,
|
||||
&passenger.Passenger.Picture,
|
||||
&passenger.Passenger.VerifiedIdentity,
|
||||
&passenger.Passenger.Operator,
|
||||
&preferencesJSON,
|
||||
&passenger.Passenger.ID,
|
||||
); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
passengers = append(passengers, passenger)
|
||||
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
errMsg := "Postgresql Storage GetPassenger Error querying data from the database"
|
||||
log.Error().Err(err).Msg(errMsg)
|
||||
return passengers, errors.New(errMsg + err.Error())
|
||||
}
|
||||
|
||||
for i := range passengers {
|
||||
err = json.Unmarshal(preferencesJSON, &passengers[i].Preferences)
|
||||
if err != nil {
|
||||
errMsg := "Postgresql Storage GetPassenger Error decoding Preferences from JSON"
|
||||
log.Error().Err(err).Msg(errMsg)
|
||||
return passengers, errors.New(errMsg + err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
return passengers, nil
|
||||
}
|
||||
|
||||
func (s PostgresqlStorage) CreateDriver(driver internal.Driver) (err error) {
|
||||
var availabilities []byte
|
||||
_, err = uuid.Parse(driver.Driver.ID)
|
||||
|
@ -528,13 +575,13 @@ func (s PostgresqlStorage) GetBooking(id string) (booking internal.Booking, err
|
|||
log.Error().Err(err).Msg(errMsg)
|
||||
return internal.Booking{}, errors.New(errMsg + err.Error())
|
||||
}
|
||||
passenger, err := s.GetPassenger(booking.Passenger.ID)
|
||||
if err != nil {
|
||||
errMsg := "Postgresql Storage GetBooking Error getting passenger"
|
||||
log.Error().Err(err).Msg(errMsg)
|
||||
return booking, errors.New(errMsg + err.Error())
|
||||
}
|
||||
booking.Passenger = passenger.Passenger
|
||||
// passenger, err := s.GetPassenger(booking.Passenger.ID)
|
||||
// if err != nil {
|
||||
// errMsg := "Postgresql Storage GetBooking Error getting passenger"
|
||||
// log.Error().Err(err).Msg(errMsg)
|
||||
// return booking, errors.New(errMsg + err.Error())
|
||||
// }
|
||||
// booking.Passenger = passenger.Passenger
|
||||
driver, err := s.GetDriver(booking.Driver.ID)
|
||||
if err != nil {
|
||||
errMsg := "Postgresql Storage GetBooking Error getting driver"
|
||||
|
@ -630,20 +677,20 @@ func (s PostgresqlStorage) populateBookingDetails(booking internal.Booking, depa
|
|||
errCh := make(chan error, 4) // Buffered channel to handle potential errors
|
||||
|
||||
// Concurrently fetch passenger information
|
||||
wg.Add(1)
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
// wg.Add(1)
|
||||
// go func() {
|
||||
// defer wg.Done()
|
||||
|
||||
passenger, err := s.GetPassenger(booking.Passenger.ID)
|
||||
if err != nil {
|
||||
errCh <- fmt.Errorf("Postgresql Storage GetBooking Error getting passenger: %w", err)
|
||||
return
|
||||
}
|
||||
// passenger, err := s.GetPassenger(booking.Passenger.ID)
|
||||
// if err != nil {
|
||||
// errCh <- fmt.Errorf("Postgresql Storage GetBooking Error getting passenger: %w", err)
|
||||
// return
|
||||
// }
|
||||
|
||||
mu.Lock()
|
||||
booking.Passenger = passenger.Passenger
|
||||
mu.Unlock()
|
||||
}()
|
||||
// mu.Lock()
|
||||
// booking.Passenger = passenger.Passenger
|
||||
// mu.Unlock()
|
||||
// }()
|
||||
|
||||
// Concurrently fetch driver information
|
||||
wg.Add(1)
|
||||
|
|
|
@ -161,7 +161,7 @@ table "bookings" {
|
|||
ref_columns = [table.passengers.column.passenger_id]
|
||||
}
|
||||
}
|
||||
enum "booking_status" {
|
||||
enum "bookingstatus" {
|
||||
schema = schema.solidarity_service
|
||||
values = ["INITIATED", "WAITING_PASSENGER_CONFIRMATION", "WAITING_DRIVER_CONFIRMATION", "CONFIRMED", "CANCELLED", "COMPLETED_PENDING_VALIDATION", "VALIDATED"]
|
||||
}
|
||||
|
|
|
@ -10,6 +10,7 @@ import (
|
|||
type Storage interface {
|
||||
CreatePassenger(passenger internal.Passenger) (err error)
|
||||
GetPassenger(passengerID string) (passenger internal.Passenger, err error)
|
||||
GetAllPassengers() (passengers []internal.Passenger, err error)
|
||||
CreateDriver(driver internal.Driver) (err error)
|
||||
GetDriver(driverID string) (driver internal.Driver, err error)
|
||||
GetBooking(id string) (booking internal.Booking, err error)
|
||||
|
@ -18,7 +19,7 @@ type Storage interface {
|
|||
FilterUserBookingsByStatus(user_type string, status internal.BookingStatus, user_id string) (bookings []internal.Booking, err error)
|
||||
DriverJourneys(departure_route *geojson.Feature, departure_date int64) (drivers []internal.Driver, err error)
|
||||
GetAllDrivers(date int64) (drivers []internal.Driver, err error)
|
||||
}
|
||||
}
|
||||
|
||||
func NewStorage(cfg *viper.Viper) (Storage, error) {
|
||||
var (
|
||||
|
|
Loading…
Reference in New Issue