From 92153397a0bf0c34657adc11532da94ffee44744 Mon Sep 17 00:00:00 2001 From: Evstigneev Denis Date: Thu, 10 Aug 2023 12:38:55 +0300 Subject: [PATCH 01/16] add handle: addComment;addPackage storage:ListPackage;AddComment;AddPackage --- Makefile | 13 + cmd/rest/server.go | 2 +- go.mod | 8 +- go.sum | 500 +----------------- handler/handlers.go | 80 ++- handler/middleware.go | 21 + handler/writer.go | 3 +- internal/modproxy.go | 2 +- main.go | 6 +- models/entities.go | 26 +- proto/dashboard.proto | 16 +- proto/docker_generate/dashboard.proto | 71 +++ proto/docker_generate/restService.proto | 42 ++ proto/go_generate/dashboard.pb.go | 255 +++++++-- proto/go_generate/dashboard.pb.validate.go | 332 ++++++++++-- proto/micro/dashboard_micro.pb.go | 6 +- proto/micro/dashboard_micro_http.pb.go | 22 +- service/service.go | 13 +- .../postgres/000001_init_schema.up.sql | 14 +- storage/postgres/quries.go | 18 +- storage/postgres/storage.go | 106 +++- storage/storage.go | 5 +- 22 files changed, 889 insertions(+), 672 deletions(-) create mode 100644 Makefile create mode 100644 handler/middleware.go create mode 100644 proto/docker_generate/dashboard.proto create mode 100644 proto/docker_generate/restService.proto diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..88dc99d --- /dev/null +++ b/Makefile @@ -0,0 +1,13 @@ +.PHONY: build +build: + go build -o bin/app -mod=readonly ./main.go + +.PHONY: test +test: + go test -v ./... -race -cover + +.PHONY: lint +lint: + # Install the binary release of golangci-lint + # https://github.com/golangci/golangci-lint#install + golangci-lint run \ No newline at end of file diff --git a/cmd/rest/server.go b/cmd/rest/server.go index d939905..648050b 100644 --- a/cmd/rest/server.go +++ b/cmd/rest/server.go @@ -3,7 +3,7 @@ package main import ( "context" - "go.unistack.org/micro/v4/logger" + "go.unistack.org/micro/v3/logger" "go.unistack.org/unistack-org/pkgdash/service" ) diff --git a/go.mod b/go.mod index 9d2e3b3..6875102 100644 --- a/go.mod +++ b/go.mod @@ -8,15 +8,14 @@ require ( github.com/golang-migrate/migrate/v4 v4.15.1 github.com/google/uuid v1.3.0 github.com/jackc/pgtype v1.14.0 + github.com/lib/pq v1.10.2 github.com/pkg/errors v0.9.1 go.unistack.org/cms-service v0.0.1 go.unistack.org/micro-client-http/v3 v3.9.3 - go.unistack.org/micro-config-flag/v4 v4.0.1 + go.unistack.org/micro-config-flag/v3 v3.8.9 go.unistack.org/micro-proto/v3 v3.3.1 - go.unistack.org/micro-server-grpc/v3 v3.10.6 go.unistack.org/micro-server-http/v3 v3.11.6 go.unistack.org/micro/v3 v3.10.24 - go.unistack.org/micro/v4 v4.0.1 golang.org/x/mod v0.12.0 golang.org/x/net v0.12.0 golang.org/x/sync v0.3.0 @@ -47,7 +46,7 @@ require ( github.com/jackc/pgproto3/v2 v2.3.2 // indirect github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect github.com/jackc/pgx/v4 v4.18.1 // indirect - github.com/jackc/pgx/v5 v5.3.1 // indirect + github.com/jackc/pgx/v5 v5.4.3 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect @@ -67,7 +66,6 @@ require ( go.unistack.org/micro-codec-yaml/v3 v3.10.0 // indirect go.unistack.org/micro-config-env/v3 v3.8.5 // indirect go.unistack.org/micro-config-file/v3 v3.8.3 // indirect - go.unistack.org/micro-config-flag/v3 v3.8.9 // indirect go.unistack.org/micro-config-service/v3 v3.8.1 // indirect golang.org/x/crypto v0.11.0 // indirect golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect diff --git a/go.sum b/go.sum index de61f51..874027e 100644 --- a/go.sum +++ b/go.sum @@ -23,345 +23,24 @@ cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAV cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= cloud.google.com/go v0.88.0/go.mod h1:dnKwfYbP9hQhefiUvpbcAyoGSHUrOxR20JVElLiUvEY= -cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= -cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= -cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= -cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= -cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= -cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= -cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= -cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= -cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= -cloud.google.com/go v0.105.0/go.mod h1:PrLgOJNe5nfE9UMxKxgXj4mD3voiP+YQ6gdt6KMFOKM= -cloud.google.com/go/accessapproval v1.4.0/go.mod h1:zybIuC3KpDOvotz59lFe5qxRZx6C75OtwbisN56xYB4= -cloud.google.com/go/accessapproval v1.5.0/go.mod h1:HFy3tuiGvMdcd/u+Cu5b9NkO1pEICJ46IR82PoUdplw= -cloud.google.com/go/accesscontextmanager v1.3.0/go.mod h1:TgCBehyr5gNMz7ZaH9xubp+CE8dkrszb4oK9CWyvD4o= -cloud.google.com/go/accesscontextmanager v1.4.0/go.mod h1:/Kjh7BBu/Gh83sv+K60vN9QE5NJcd80sU33vIe2IFPE= -cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= -cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= -cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= -cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= -cloud.google.com/go/apigateway v1.3.0/go.mod h1:89Z8Bhpmxu6AmUxuVRg/ECRGReEdiP3vQtk4Z1J9rJk= -cloud.google.com/go/apigateway v1.4.0/go.mod h1:pHVY9MKGaH9PQ3pJ4YLzoj6U5FUDeDFBllIz7WmzJoc= -cloud.google.com/go/apigeeconnect v1.3.0/go.mod h1:G/AwXFAKo0gIXkPTVfZDd2qA1TxBXJ3MgMRBQkIi9jc= -cloud.google.com/go/apigeeconnect v1.4.0/go.mod h1:kV4NwOKqjvt2JYR0AoIWo2QGfoRtn/pkS3QlHp0Ni04= -cloud.google.com/go/appengine v1.4.0/go.mod h1:CS2NhuBuDXM9f+qscZ6V86m1MIIqPj3WC/UoEuR1Sno= -cloud.google.com/go/appengine v1.5.0/go.mod h1:TfasSozdkFI0zeoxW3PTBLiNqRmzraodCWatWI9Dmak= -cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= -cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= -cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= -cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= -cloud.google.com/go/artifactregistry v1.8.0/go.mod h1:w3GQXkJX8hiKN0v+at4b0qotwijQbYUqF2GWkZzAhC0= -cloud.google.com/go/artifactregistry v1.9.0/go.mod h1:2K2RqvA2CYvAeARHRkLDhMDJ3OXy26h3XW+3/Jh2uYc= -cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= -cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= -cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= -cloud.google.com/go/asset v1.9.0/go.mod h1:83MOE6jEJBMqFKadM9NLRcs80Gdw76qGuHn8m3h8oHQ= -cloud.google.com/go/asset v1.10.0/go.mod h1:pLz7uokL80qKhzKr4xXGvBQXnzHn5evJAEAtZiIb0wY= -cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= -cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= -cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= -cloud.google.com/go/assuredworkloads v1.8.0/go.mod h1:AsX2cqyNCOvEQC8RMPnoc0yEarXQk6WEKkxYfL6kGIo= -cloud.google.com/go/assuredworkloads v1.9.0/go.mod h1:kFuI1P78bplYtT77Tb1hi0FMxM0vVpRC7VVoJC3ZoT0= -cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= -cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= -cloud.google.com/go/automl v1.7.0/go.mod h1:RL9MYCCsJEOmt0Wf3z9uzG0a7adTT1fe+aObgSpkCt8= -cloud.google.com/go/automl v1.8.0/go.mod h1:xWx7G/aPEe/NP+qzYXktoBSDfjO+vnKMGgsApGJJquM= -cloud.google.com/go/baremetalsolution v0.3.0/go.mod h1:XOrocE+pvK1xFfleEnShBlNAXf+j5blPPxrhjKgnIFc= -cloud.google.com/go/baremetalsolution v0.4.0/go.mod h1:BymplhAadOO/eBa7KewQ0Ppg4A4Wplbn+PsFKRLo0uI= -cloud.google.com/go/batch v0.3.0/go.mod h1:TR18ZoAekj1GuirsUsR1ZTKN3FC/4UDnScjT8NXImFE= -cloud.google.com/go/batch v0.4.0/go.mod h1:WZkHnP43R/QCGQsZ+0JyG4i79ranE2u8xvjq/9+STPE= -cloud.google.com/go/beyondcorp v0.2.0/go.mod h1:TB7Bd+EEtcw9PCPQhCJtJGjk/7TC6ckmnSFS+xwTfm4= -cloud.google.com/go/beyondcorp v0.3.0/go.mod h1:E5U5lcrcXMsCuoDNyGrpyTm/hn7ne941Jz2vmksAxW8= 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/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= -cloud.google.com/go/bigquery v1.43.0/go.mod h1:ZMQcXHsl+xmU1z36G2jNGZmKp9zNY5BUua5wDgmNCfw= -cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= -cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= -cloud.google.com/go/billing v1.6.0/go.mod h1:WoXzguj+BeHXPbKfNWkqVtDdzORazmCjraY+vrxcyvI= -cloud.google.com/go/billing v1.7.0/go.mod h1:q457N3Hbj9lYwwRbnlD7vUpyjq6u5U1RAOArInEiD5Y= -cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= -cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= -cloud.google.com/go/binaryauthorization v1.3.0/go.mod h1:lRZbKgjDIIQvzYQS1p99A7/U1JqvqeZg0wiI5tp6tg0= -cloud.google.com/go/binaryauthorization v1.4.0/go.mod h1:tsSPQrBd77VLplV70GUhBf/Zm3FsKmgSqgm4UmiDItk= -cloud.google.com/go/certificatemanager v1.3.0/go.mod h1:n6twGDvcUBFu9uBgt4eYvvf3sQ6My8jADcOVwHmzadg= -cloud.google.com/go/certificatemanager v1.4.0/go.mod h1:vowpercVFyqs8ABSmrdV+GiFf2H/ch3KyudYQEMM590= -cloud.google.com/go/channel v1.8.0/go.mod h1:W5SwCXDJsq/rg3tn3oG0LOxpAo6IMxNa09ngphpSlnk= -cloud.google.com/go/channel v1.9.0/go.mod h1:jcu05W0my9Vx4mt3/rEHpfxc9eKi9XwsdDL8yBMbKUk= -cloud.google.com/go/cloudbuild v1.3.0/go.mod h1:WequR4ULxlqvMsjDEEEFnOG5ZSRSgWOywXYDb1vPE6U= -cloud.google.com/go/cloudbuild v1.4.0/go.mod h1:5Qwa40LHiOXmz3386FrjrYM93rM/hdRr7b53sySrTqA= -cloud.google.com/go/clouddms v1.3.0/go.mod h1:oK6XsCDdW4Ib3jCCBugx+gVjevp2TMXFtgxvPSee3OM= -cloud.google.com/go/clouddms v1.4.0/go.mod h1:Eh7sUGCC+aKry14O1NRljhjyrr0NFC0G2cjwX0cByRk= -cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= -cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= -cloud.google.com/go/cloudtasks v1.7.0/go.mod h1:ImsfdYWwlWNJbdgPIIGJWC+gemEGTBK/SunNQQNCAb4= -cloud.google.com/go/cloudtasks v1.8.0/go.mod h1:gQXUIwCSOI4yPVK7DgTVFiiP0ZW/eQkydWzwVMdHxrI= -cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= -cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= -cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= -cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= -cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= -cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= -cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= -cloud.google.com/go/compute v1.12.0/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= -cloud.google.com/go/compute v1.12.1/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= -cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZEXYonfTBHHFPO/4UU= -cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= -cloud.google.com/go/contactcenterinsights v1.3.0/go.mod h1:Eu2oemoePuEFc/xKFPjbTuPSj0fYJcPls9TFlPNnHHY= -cloud.google.com/go/contactcenterinsights v1.4.0/go.mod h1:L2YzkGbPsv+vMQMCADxJoT9YiTTnSEd6fEvCeHTYVck= -cloud.google.com/go/container v1.6.0/go.mod h1:Xazp7GjJSeUYo688S+6J5V+n/t+G5sKBTFkKNudGRxg= -cloud.google.com/go/container v1.7.0/go.mod h1:Dp5AHtmothHGX3DwwIHPgq45Y8KmNsgN3amoYfxVkLo= -cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= -cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= -cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= -cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= -cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= -cloud.google.com/go/datacatalog v1.7.0/go.mod h1:9mEl4AuDYWw81UGc41HonIHH7/sn52H0/tc8f8ZbZIE= -cloud.google.com/go/datacatalog v1.8.0/go.mod h1:KYuoVOv9BM8EYz/4eMFxrr4DUKhGIOXxZoKYF5wdISM= -cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= -cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= -cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= -cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= -cloud.google.com/go/dataform v0.5.0/go.mod h1:GFUYRe8IBa2hcomWplodVmUx/iTL0FrsauObOM3Ipr0= -cloud.google.com/go/datafusion v1.4.0/go.mod h1:1Zb6VN+W6ALo85cXnM1IKiPw+yQMKMhB9TsTSRDo/38= -cloud.google.com/go/datafusion v1.5.0/go.mod h1:Kz+l1FGHB0J+4XF2fud96WMmRiq/wj8N9u007vyXZ2w= -cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= -cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= -cloud.google.com/go/dataplex v1.3.0/go.mod h1:hQuRtDg+fCiFgC8j0zV222HvzFQdRd+SVX8gdmFcZzA= -cloud.google.com/go/dataplex v1.4.0/go.mod h1:X51GfLXEMVJ6UN47ESVqvlsRplbLhcsAt0kZCCKsU0A= -cloud.google.com/go/dataproc v1.7.0/go.mod h1:CKAlMjII9H90RXaMpSxQ8EU6dQx6iAYNPcYPOkSbi8s= -cloud.google.com/go/dataproc v1.8.0/go.mod h1:5OW+zNAH0pMpw14JVrPONsxMQYMBqJuzORhIBfBn9uI= -cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= -cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= 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/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= -cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= -cloud.google.com/go/datastream v1.4.0/go.mod h1:h9dpzScPhDTs5noEMQVWP8Wx8AFBRyS0s8KWPx/9r0g= -cloud.google.com/go/datastream v1.5.0/go.mod h1:6TZMMNPwjUqZHBKPQ1wwXpb0d5VDVPl2/XoS5yi88q4= -cloud.google.com/go/deploy v1.4.0/go.mod h1:5Xghikd4VrmMLNaF6FiRFDlHb59VM59YoDQnOUdsH/c= -cloud.google.com/go/deploy v1.5.0/go.mod h1:ffgdD0B89tToyW/U/D2eL0jN2+IEV/3EMuXHA0l4r+s= -cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= -cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= -cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= -cloud.google.com/go/dialogflow v1.18.0/go.mod h1:trO7Zu5YdyEuR+BhSNOqJezyFQ3aUzz0njv7sMx/iek= -cloud.google.com/go/dialogflow v1.19.0/go.mod h1:JVmlG1TwykZDtxtTXujec4tQ+D8SBFMoosgy+6Gn0s0= -cloud.google.com/go/dlp v1.6.0/go.mod h1:9eyB2xIhpU0sVwUixfBubDoRwP+GjeUoxxeueZmqvmM= -cloud.google.com/go/dlp v1.7.0/go.mod h1:68ak9vCiMBjbasxeVD17hVPxDEck+ExiHavX8kiHG+Q= -cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= -cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= -cloud.google.com/go/documentai v1.9.0/go.mod h1:FS5485S8R00U10GhgBC0aNGrJxBP8ZVpEeJ7PQDZd6k= -cloud.google.com/go/documentai v1.10.0/go.mod h1:vod47hKQIPeCfN2QS/jULIvQTugbmdc0ZvxxfQY1bg4= -cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= -cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= -cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= -cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= -cloud.google.com/go/essentialcontacts v1.3.0/go.mod h1:r+OnHa5jfj90qIfZDO/VztSFqbQan7HV75p8sA+mdGI= -cloud.google.com/go/essentialcontacts v1.4.0/go.mod h1:8tRldvHYsmnBCHdFpvU+GL75oWiBKl80BiqlFh9tp+8= -cloud.google.com/go/eventarc v1.7.0/go.mod h1:6ctpF3zTnaQCxUjHUdcfgcA1A2T309+omHZth7gDfmc= -cloud.google.com/go/eventarc v1.8.0/go.mod h1:imbzxkyAU4ubfsaKYdQg04WS1NvncblHEup4kvF+4gw= -cloud.google.com/go/filestore v1.3.0/go.mod h1:+qbvHGvXU1HaKX2nD0WEPo92TP/8AQuCVEBXNY9z0+w= -cloud.google.com/go/filestore v1.4.0/go.mod h1:PaG5oDfo9r224f8OYXURtAsY+Fbyq/bLYoINEK8XQAI= -cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= -cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= -cloud.google.com/go/functions v1.8.0/go.mod h1:RTZ4/HsQjIqIYP9a9YPbU+QFoQsAlYgrwOXJWHn1POY= -cloud.google.com/go/functions v1.9.0/go.mod h1:Y+Dz8yGguzO3PpIjhLTbnqV1CWmgQ5UwtlpzoyquQ08= -cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= -cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= -cloud.google.com/go/gaming v1.7.0/go.mod h1:LrB8U7MHdGgFG851iHAfqUdLcKBdQ55hzXy9xBJz0+w= -cloud.google.com/go/gaming v1.8.0/go.mod h1:xAqjS8b7jAVW0KFYeRUxngo9My3f33kFmua++Pi+ggM= -cloud.google.com/go/gkebackup v0.2.0/go.mod h1:XKvv/4LfG829/B8B7xRkk8zRrOEbKtEam6yNfuQNH60= -cloud.google.com/go/gkebackup v0.3.0/go.mod h1:n/E671i1aOQvUxT541aTkCwExO/bTer2HDlj4TsBRAo= -cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= -cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= -cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= -cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= -cloud.google.com/go/gkemulticloud v0.3.0/go.mod h1:7orzy7O0S+5kq95e4Hpn7RysVA7dPs8W/GgfUtsPbrA= -cloud.google.com/go/gkemulticloud v0.4.0/go.mod h1:E9gxVBnseLWCk24ch+P9+B2CoDFJZTyIgLKSalC7tuI= -cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= -cloud.google.com/go/gsuiteaddons v1.3.0/go.mod h1:EUNK/J1lZEZO8yPtykKxLXI6JSVN2rg9bN8SXOa0bgM= -cloud.google.com/go/gsuiteaddons v1.4.0/go.mod h1:rZK5I8hht7u7HxFQcFei0+AtfS9uSushomRlg+3ua1o= -cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= -cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= -cloud.google.com/go/iam v0.6.0/go.mod h1:+1AH33ueBne5MzYccyMHtEKqLE4/kJOibtffMHDMFMc= -cloud.google.com/go/iam v0.7.0/go.mod h1:H5Br8wRaDGNc8XP3keLc4unfUUZeyH3Sfl9XpQEYOeg= -cloud.google.com/go/iap v1.4.0/go.mod h1:RGFwRJdihTINIe4wZ2iCP0zF/qu18ZwyKxrhMhygBEc= -cloud.google.com/go/iap v1.5.0/go.mod h1:UH/CGgKd4KyohZL5Pt0jSKE4m3FR51qg6FKQ/z/Ix9A= -cloud.google.com/go/ids v1.1.0/go.mod h1:WIuwCaYVOzHIj2OhN9HAwvW+DBdmUAdcWlFxRl+KubM= -cloud.google.com/go/ids v1.2.0/go.mod h1:5WXvp4n25S0rA/mQWAg1YEEBBq6/s+7ml1RDCW1IrcY= -cloud.google.com/go/iot v1.3.0/go.mod h1:r7RGh2B61+B8oz0AGE+J72AhA0G7tdXItODWsaA2oLs= -cloud.google.com/go/iot v1.4.0/go.mod h1:dIDxPOn0UvNDUMD8Ger7FIaTuvMkj+aGk94RPP0iV+g= -cloud.google.com/go/kms v1.5.0/go.mod h1:QJS2YY0eJGBg3mnDfuaCyLauWwBJiHRboYxJ++1xJNg= -cloud.google.com/go/kms v1.6.0/go.mod h1:Jjy850yySiasBUDi6KFUwUv2n1+o7QZFyuUJg6OgjA0= -cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= -cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= -cloud.google.com/go/language v1.7.0/go.mod h1:DJ6dYN/W+SQOjF8e1hLQXMF21AkH2w9wiPzPCJa2MIE= -cloud.google.com/go/language v1.8.0/go.mod h1:qYPVHf7SPoNNiCL2Dr0FfEFNil1qi3pQEyygwpgVKB8= -cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= -cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= -cloud.google.com/go/longrunning v0.1.1/go.mod h1:UUFxuDWkv22EuY93jjmDMFT5GPQKeFVJBIF6QlTqdsE= -cloud.google.com/go/longrunning v0.3.0/go.mod h1:qth9Y41RRSUE69rDcOn6DdK3HfQfsUI0YSmW3iIlLJc= -cloud.google.com/go/managedidentities v1.3.0/go.mod h1:UzlW3cBOiPrzucO5qWkNkh0w33KFtBJU281hacNvsdE= -cloud.google.com/go/managedidentities v1.4.0/go.mod h1:NWSBYbEMgqmbZsLIyKvxrYbtqOsxY1ZrGM+9RgDqInM= -cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= -cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= -cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= -cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= -cloud.google.com/go/memcache v1.6.0/go.mod h1:XS5xB0eQZdHtTuTF9Hf8eJkKtR3pVRCcvJwtm68T3rA= -cloud.google.com/go/memcache v1.7.0/go.mod h1:ywMKfjWhNtkQTxrWxCkCFkoPjLHPW6A7WOTVI8xy3LY= -cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= -cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= -cloud.google.com/go/metastore v1.7.0/go.mod h1:s45D0B4IlsINu87/AsWiEVYbLaIMeUSoxlKKDqBGFS8= -cloud.google.com/go/metastore v1.8.0/go.mod h1:zHiMc4ZUpBiM7twCIFQmJ9JMEkDSyZS9U12uf7wHqSI= -cloud.google.com/go/monitoring v1.7.0/go.mod h1:HpYse6kkGo//7p6sT0wsIC6IBDET0RhIsnmlA53dvEk= -cloud.google.com/go/monitoring v1.8.0/go.mod h1:E7PtoMJ1kQXWxPjB6mv2fhC5/15jInuulFdYYtlcvT4= -cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= -cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= -cloud.google.com/go/networkconnectivity v1.6.0/go.mod h1:OJOoEXW+0LAxHh89nXd64uGG+FbQoeH8DtxCHVOMlaM= -cloud.google.com/go/networkconnectivity v1.7.0/go.mod h1:RMuSbkdbPwNMQjB5HBWD5MpTBnNm39iAVpC3TmsExt8= -cloud.google.com/go/networkmanagement v1.4.0/go.mod h1:Q9mdLLRn60AsOrPc8rs8iNV6OHXaGcDdsIQe1ohekq8= -cloud.google.com/go/networkmanagement v1.5.0/go.mod h1:ZnOeZ/evzUdUsnvRt792H0uYEnHQEMaz+REhhzJRcf4= -cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= -cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= -cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= -cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= -cloud.google.com/go/notebooks v1.4.0/go.mod h1:4QPMngcwmgb6uw7Po99B2xv5ufVoIQ7nOGDyL4P8AgA= -cloud.google.com/go/notebooks v1.5.0/go.mod h1:q8mwhnP9aR8Hpfnrc5iN5IBhrXUy8S2vuYs+kBJ/gu0= -cloud.google.com/go/optimization v1.1.0/go.mod h1:5po+wfvX5AQlPznyVEZjGJTMr4+CAkJf2XSTQOOl9l4= -cloud.google.com/go/optimization v1.2.0/go.mod h1:Lr7SOHdRDENsh+WXVmQhQTrzdu9ybg0NecjHidBq6xs= -cloud.google.com/go/orchestration v1.3.0/go.mod h1:Sj5tq/JpWiB//X/q3Ngwdl5K7B7Y0KZ7bfv0wL6fqVA= -cloud.google.com/go/orchestration v1.4.0/go.mod h1:6W5NLFWs2TlniBphAViZEVhrXRSMgUGDfW7vrWKvsBk= -cloud.google.com/go/orgpolicy v1.4.0/go.mod h1:xrSLIV4RePWmP9P3tBl8S93lTmlAxjm06NSm2UTmKvE= -cloud.google.com/go/orgpolicy v1.5.0/go.mod h1:hZEc5q3wzwXJaKrsx5+Ewg0u1LxJ51nNFlext7Tanwc= -cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= -cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= -cloud.google.com/go/osconfig v1.9.0/go.mod h1:Yx+IeIZJ3bdWmzbQU4fxNl8xsZ4amB+dygAwFPlvnNo= -cloud.google.com/go/osconfig v1.10.0/go.mod h1:uMhCzqC5I8zfD9zDEAfvgVhDS8oIjySWh+l4WK6GnWw= -cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= -cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= -cloud.google.com/go/oslogin v1.6.0/go.mod h1:zOJ1O3+dTU8WPlGEkFSh7qeHPPSoxrcMbbK1Nm2iX70= -cloud.google.com/go/oslogin v1.7.0/go.mod h1:e04SN0xO1UNJ1M5GP0vzVBFicIe4O53FOfcixIqTyXo= -cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= -cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= -cloud.google.com/go/policytroubleshooter v1.3.0/go.mod h1:qy0+VwANja+kKrjlQuOzmlvscn4RNsAc0e15GGqfMxg= -cloud.google.com/go/policytroubleshooter v1.4.0/go.mod h1:DZT4BcRw3QoO8ota9xw/LKtPa8lKeCByYeKTIf/vxdE= -cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= -cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= 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/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= -cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= -cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= -cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo= -cloud.google.com/go/recaptchaenterprise/v2 v2.4.0/go.mod h1:Am3LHfOuBstrLrNCBrlI5sbwx9LBg3te2N6hGvHn2mE= -cloud.google.com/go/recaptchaenterprise/v2 v2.5.0/go.mod h1:O8LzcHXN3rz0j+LBC91jrwI3R+1ZSZEWrfL7XHgNo9U= -cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= -cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= -cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= -cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= -cloud.google.com/go/recommender v1.7.0/go.mod h1:XLHs/W+T8olwlGOgfQenXBTbIseGclClff6lhFVe9Bs= -cloud.google.com/go/recommender v1.8.0/go.mod h1:PkjXrTT05BFKwxaUxQmtIlrtj0kph108r02ZZQ5FE70= -cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= -cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= -cloud.google.com/go/redis v1.9.0/go.mod h1:HMYQuajvb2D0LvMgZmLDZW8V5aOC/WxstZHiy4g8OiA= -cloud.google.com/go/redis v1.10.0/go.mod h1:ThJf3mMBQtW18JzGgh41/Wld6vnDDc/F/F35UolRZPM= -cloud.google.com/go/resourcemanager v1.3.0/go.mod h1:bAtrTjZQFJkiWTPDb1WBjzvc6/kifjj4QBYuKCCoqKA= -cloud.google.com/go/resourcemanager v1.4.0/go.mod h1:MwxuzkumyTX7/a3n37gmsT3py7LIXwrShilPh3P1tR0= -cloud.google.com/go/resourcesettings v1.3.0/go.mod h1:lzew8VfESA5DQ8gdlHwMrqZs1S9V87v3oCnKCWoOuQU= -cloud.google.com/go/resourcesettings v1.4.0/go.mod h1:ldiH9IJpcrlC3VSuCGvjR5of/ezRrOxFtpJoJo5SmXg= -cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= -cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= -cloud.google.com/go/retail v1.10.0/go.mod h1:2gDk9HsL4HMS4oZwz6daui2/jmKvqShXKQuB2RZ+cCc= -cloud.google.com/go/retail v1.11.0/go.mod h1:MBLk1NaWPmh6iVFSz9MeKG/Psyd7TAgm6y/9L2B4x9Y= -cloud.google.com/go/run v0.2.0/go.mod h1:CNtKsTA1sDcnqqIFR3Pb5Tq0usWxJJvsWOCPldRU3Do= -cloud.google.com/go/run v0.3.0/go.mod h1:TuyY1+taHxTjrD0ZFk2iAR+xyOXEA0ztb7U3UNA0zBo= -cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= -cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= -cloud.google.com/go/scheduler v1.6.0/go.mod h1:SgeKVM7MIwPn3BqtcBntpLyrIJftQISRrYB5ZtT+KOk= -cloud.google.com/go/scheduler v1.7.0/go.mod h1:jyCiBqWW956uBjjPMMuX09n3x37mtyPJegEWKxRsn44= -cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= -cloud.google.com/go/secretmanager v1.8.0/go.mod h1:hnVgi/bN5MYHd3Gt0SPuTPPp5ENina1/LxM+2W9U9J4= -cloud.google.com/go/secretmanager v1.9.0/go.mod h1:b71qH2l1yHmWQHt9LC80akm86mX8AL6X1MA01dW8ht4= -cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= -cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= -cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= -cloud.google.com/go/security v1.9.0/go.mod h1:6Ta1bO8LXI89nZnmnsZGp9lVoVWXqsVbIq/t9dzI+2Q= -cloud.google.com/go/security v1.10.0/go.mod h1:QtOMZByJVlibUT2h9afNDWRZ1G96gVywH8T5GUSb9IA= -cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= -cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= -cloud.google.com/go/securitycenter v1.15.0/go.mod h1:PeKJ0t8MoFmmXLXWm41JidyzI3PJjd8sXWaVqg43WWk= -cloud.google.com/go/securitycenter v1.16.0/go.mod h1:Q9GMaLQFUD+5ZTabrbujNWLtSLZIZF7SAR0wWECrjdk= -cloud.google.com/go/servicecontrol v1.4.0/go.mod h1:o0hUSJ1TXJAmi/7fLJAedOovnujSEvjKCAFNXPQ1RaU= -cloud.google.com/go/servicecontrol v1.5.0/go.mod h1:qM0CnXHhyqKVuiZnGKrIurvVImCs8gmqWsDoqe9sU1s= -cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= -cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= -cloud.google.com/go/servicedirectory v1.6.0/go.mod h1:pUlbnWsLH9c13yGkxCmfumWEPjsRs1RlmJ4pqiNjVL4= -cloud.google.com/go/servicedirectory v1.7.0/go.mod h1:5p/U5oyvgYGYejufvxhgwjL8UVXjkuw7q5XcG10wx1U= -cloud.google.com/go/servicemanagement v1.4.0/go.mod h1:d8t8MDbezI7Z2R1O/wu8oTggo3BI2GKYbdG4y/SJTco= -cloud.google.com/go/servicemanagement v1.5.0/go.mod h1:XGaCRe57kfqu4+lRxaFEAuqmjzF0r+gWHjWqKqBvKFo= -cloud.google.com/go/serviceusage v1.3.0/go.mod h1:Hya1cozXM4SeSKTAgGXgj97GlqUvF5JaoXacR1JTP/E= -cloud.google.com/go/serviceusage v1.4.0/go.mod h1:SB4yxXSaYVuUBYUml6qklyONXNLt83U0Rb+CXyhjEeU= -cloud.google.com/go/shell v1.3.0/go.mod h1:VZ9HmRjZBsjLGXusm7K5Q5lzzByZmJHf1d0IWHEN5X4= -cloud.google.com/go/shell v1.4.0/go.mod h1:HDxPzZf3GkDdhExzD/gs8Grqk+dmYcEjGShZgYa9URw= cloud.google.com/go/spanner v1.24.0/go.mod h1:EZI0yH1D/PrXK0XH9Ba5LGXTXWeqZv0ClOD/19a0Z58= -cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= -cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= -cloud.google.com/go/speech v1.8.0/go.mod h1:9bYIl1/tjsAnMgKGHKmBZzXKEkGgtU+MpdDPTE9f7y0= -cloud.google.com/go/speech v1.9.0/go.mod h1:xQ0jTcmnRFFM2RfX/U+rk6FQNUF6DQlydUSyoooSpco= 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.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= -cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= -cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= -cloud.google.com/go/storagetransfer v1.5.0/go.mod h1:dxNzUopWy7RQevYFHewchb29POFv3/AaBgnhqzqiK0w= -cloud.google.com/go/storagetransfer v1.6.0/go.mod h1:y77xm4CQV/ZhFZH75PLEXY0ROiS7Gh6pSKrM8dJyg6I= -cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= -cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= -cloud.google.com/go/talent v1.3.0/go.mod h1:CmcxwJ/PKfRgd1pBjQgU6W3YBwiewmUzQYH5HHmSCmM= -cloud.google.com/go/talent v1.4.0/go.mod h1:ezFtAgVuRf8jRsvyE6EwmbTK5LKciD4KVnHuDEFmOOA= -cloud.google.com/go/texttospeech v1.4.0/go.mod h1:FX8HQHA6sEpJ7rCMSfXuzBcysDAuWusNNNvN9FELDd8= -cloud.google.com/go/texttospeech v1.5.0/go.mod h1:oKPLhR4n4ZdQqWKURdwxMy0uiTS1xU161C8W57Wkea4= -cloud.google.com/go/tpu v1.3.0/go.mod h1:aJIManG0o20tfDQlRIej44FcwGGl/cD0oiRyMKG19IQ= -cloud.google.com/go/tpu v1.4.0/go.mod h1:mjZaX8p0VBgllCzF6wcU2ovUXN9TONFLd7iz227X2Xg= -cloud.google.com/go/trace v1.3.0/go.mod h1:FFUE83d9Ca57C+K8rDl/Ih8LwOzWIV1krKgxg6N0G28= -cloud.google.com/go/trace v1.4.0/go.mod h1:UG0v8UBqzusp+z63o7FK74SdFE+AXpCLdFb1rshXG+Y= -cloud.google.com/go/translate v1.3.0/go.mod h1:gzMUwRjvOqj5i69y/LYLd8RrNQk+hOmIXTi9+nb3Djs= -cloud.google.com/go/translate v1.4.0/go.mod h1:06Dn/ppvLD6WvA5Rhdp029IX2Mi3Mn7fpMRLPvXT5Wg= -cloud.google.com/go/video v1.8.0/go.mod h1:sTzKFc0bUSByE8Yoh8X0mn8bMymItVGPfTuUBUyRgxk= -cloud.google.com/go/video v1.9.0/go.mod h1:0RhNKFRF5v92f8dQt0yhaHrEuH95m068JYOvLZYnJSw= -cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= -cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= -cloud.google.com/go/videointelligence v1.8.0/go.mod h1:dIcCn4gVDdS7yte/w+koiXn5dWVplOZkE+xwG9FgK+M= -cloud.google.com/go/videointelligence v1.9.0/go.mod h1:29lVRMPDYHikk3v8EdPSaL8Ku+eMzDljjuvRs105XoU= -cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= -cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= -cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= -cloud.google.com/go/vision/v2 v2.4.0/go.mod h1:VtI579ll9RpVTrdKdkMzckdnwMyX2JILb+MhPqRbPsY= -cloud.google.com/go/vision/v2 v2.5.0/go.mod h1:MmaezXOOE+IWa+cS7OhRRLK2cNv1ZL98zhqFFZaaH2E= -cloud.google.com/go/vmmigration v1.2.0/go.mod h1:IRf0o7myyWFSmVR1ItrBSFLFD/rJkfDCUTO4vLlJvsE= -cloud.google.com/go/vmmigration v1.3.0/go.mod h1:oGJ6ZgGPQOFdjHuocGcLqX4lc98YQ7Ygq8YQwHh9A7g= -cloud.google.com/go/vpcaccess v1.4.0/go.mod h1:aQHVbTWDYUR1EbTApSVvMq1EnT57ppDmQzZ3imqIk4w= -cloud.google.com/go/vpcaccess v1.5.0/go.mod h1:drmg4HLk9NkZpGfCmZ3Tz0Bwnm2+DKqViEpeEpOq0m8= -cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= -cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= -cloud.google.com/go/webrisk v1.6.0/go.mod h1:65sW9V9rOosnc9ZY7A7jsy1zoHS5W9IAXv6dGqhMQMc= -cloud.google.com/go/webrisk v1.7.0/go.mod h1:mVMHgEYH0r337nmt1JyLthzMr6YxwN1aAIEc2fTcq7A= -cloud.google.com/go/websecurityscanner v1.3.0/go.mod h1:uImdKm2wyeXQevQJXeh8Uun/Ym1VqworNDlBXQevGMo= -cloud.google.com/go/websecurityscanner v1.4.0/go.mod h1:ebit/Fp0a+FWu5j4JOmJEV8S8CzdTkAS77oDsiSqYWQ= -cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= -cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= -cloud.google.com/go/workflows v1.8.0/go.mod h1:ysGhmEajwZxGn1OhGOGKsTXc5PyxOc0vfKf5Af+to4M= -cloud.google.com/go/workflows v1.9.0/go.mod h1:ZGkj1aFIOd9c8Gerkjjq7OW7I5+l6cSvT3ujaO/WwSA= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= @@ -503,12 +182,8 @@ github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58/go.mod h1:EOBUe0h 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/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cockroachdb/apd v1.1.0 h1:3LFP3629v+1aKXU5Q37mxmRxX/pIu1nijXydLShEq5I= github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= github.com/cockroachdb/cockroach-go/v2 v2.1.1/go.mod h1:7NtUnP6eK+l6k483WSYNrq3Kb23bWV10IRV1TyeSpwM= @@ -670,7 +345,6 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.m github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= -github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v1.0.2 h1:QkIBuU5k+x7/QXPvPPnWXWlCdaBFApVqftFV6k087DA= github.com/envoyproxy/protoc-gen-validate v1.0.2/go.mod h1:GpiZQP3dDbg4JouG/NNS7QWXpgx6x8QiMKdmN72jogE= @@ -830,10 +504,7 @@ github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ 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.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= -github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-github/v35 v35.2.0/go.mod h1:s0515YVTI+IMrDoy9Y4pHt9ShGpzHvHO8rZ7L7acgvs= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -856,7 +527,6 @@ github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210715191844-86eeefc3e471/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26 h1:Xim43kblpZXfIBQsbuBVKCudVG457BR2GZFIz3uw3hQ= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -865,20 +535,9 @@ github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= -github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= -github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= 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/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= -github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= -github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= -github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= -github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= -github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= -github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= -github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/handlers v0.0.0-20150720190736-60c7bfde3e33/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= github.com/gorilla/handlers v1.4.2/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= @@ -984,8 +643,8 @@ github.com/jackc/pgx/v4 v4.10.1/go.mod h1:QlrWebbs3kqEZPHCTGyxecvzG6tvIsYu+A5b1r github.com/jackc/pgx/v4 v4.12.1-0.20210724153913-640aa07df17c/go.mod h1:1QD0+tgSXP7iUjYm9C1NxKhny7lq6ee99u/z+IHFcgs= github.com/jackc/pgx/v4 v4.18.1 h1:YP7G1KABtKpB5IHrO9vYwSrCOhs7p3uqhvhhQBptya0= github.com/jackc/pgx/v4 v4.18.1/go.mod h1:FydWkUyadDmdNH/mHnGob881GawxeEm7TcMCzkb+qQE= -github.com/jackc/pgx/v5 v5.3.1 h1:Fcr8QJ1ZeLi5zsPZqQeUZhNhxfkkKBOgJuYkJHoBOtU= -github.com/jackc/pgx/v5 v5.3.1/go.mod h1:t3JDKnCBlYIc0ewLF0Q7B8MXmoIaBOZj/ic7iHozM/8= +github.com/jackc/pgx/v5 v5.4.3 h1:cxFyXhxlvAifxnkKKdlxv8XqUf59tDlYjnV5YYfsJJY= +github.com/jackc/pgx/v5 v5.4.3/go.mod h1:Ig06C2Vu0t5qXC60W8sqIthScaEnFvojjj9dSljmHRA= github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jackc/puddle v1.1.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= @@ -1380,21 +1039,15 @@ go.unistack.org/micro-config-file/v3 v3.8.3 h1:yoAyDtmWutlUkVgFUtc7JhwCX7H/2Jz0n go.unistack.org/micro-config-file/v3 v3.8.3/go.mod h1:dl+MQ27/P41+hINmSrZFltDSDYP1y2LItIDYb2jHFog= go.unistack.org/micro-config-flag/v3 v3.8.9 h1:I4eoJVV28CpxQvQ63TJ1fqK5JcV1gHmOZPveT2Vl5Iw= go.unistack.org/micro-config-flag/v3 v3.8.9/go.mod h1:eWI90dcZh5AOhkd83fF0KY17ea/DZPebkJ8K61yky+8= -go.unistack.org/micro-config-flag/v4 v4.0.1 h1:oYmNZrFDnARyi6toFFJ9cfIZQkZ4nNp5As+UYiIhBgM= -go.unistack.org/micro-config-flag/v4 v4.0.1/go.mod h1:EYBZUMCqEXs092hB5hhMCALduXMOg76VRuNdzlvV3aU= go.unistack.org/micro-config-service/v3 v3.8.1 h1:Q+RPWCb88VGz5+EQUx45Xeysf+Mon9Q2IvqCF3e8LZM= go.unistack.org/micro-config-service/v3 v3.8.1/go.mod h1:KdZJEuYwninyT04ysFkgEQa3OaMRa0kSQVPQHlumQoA= go.unistack.org/micro-proto/v3 v3.3.1 h1:nQ0MtWvP2G3QrpOgawVOPhpZZYkq6umTGDqs8FxJYIo= go.unistack.org/micro-proto/v3 v3.3.1/go.mod h1:cwRyv8uInM2I7EbU7O8Fx2Ls3N90Uw9UCCcq4olOdfE= -go.unistack.org/micro-server-grpc/v3 v3.10.6 h1:1MZ530LARgr0OS2E+ALfPpMJkUexEwcaVhUOgBoXDjs= -go.unistack.org/micro-server-grpc/v3 v3.10.6/go.mod h1:n0mNurVocRBOt7iydDgORGWQ4M/wFaJFmdKHNX57IiQ= go.unistack.org/micro-server-http/v3 v3.11.6 h1:BSjPyXrJ6OTyuCDE14XOGjLDJEICz2CEo2WfmSR3hqM= go.unistack.org/micro-server-http/v3 v3.11.6/go.mod h1:phNG9aosjbneXvZxEVaVQI+NHLLZ3eA82mOH6gGSShY= go.unistack.org/micro/v3 v3.10.14/go.mod h1:uMAc0U/x7dmtICCrblGf0ZLgYegu3VwQAquu+OFCw1Q= go.unistack.org/micro/v3 v3.10.24 h1:gIi4r0vUSpNLs+uRb4KKEXBLkE8iNp6ZnJsI5FV42j0= go.unistack.org/micro/v3 v3.10.24/go.mod h1:aywPekJP0n07xvmDgj+Si3VPmQzGMfj6tkHk/6kjXhU= -go.unistack.org/micro/v4 v4.0.1 h1:xo1IxbVfgh8i0eY0VeYa3cbb13u5n/Mxnp3FOgWD4Jo= -go.unistack.org/micro/v4 v4.0.1/go.mod h1:p/J5UcSJjfHsWGT31uKoghQ5rUQZzQJBAFy+Z4+ZVMs= golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181009213950-7c1a557ab941/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -1534,21 +1187,8 @@ golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211013171255-e13a2654a71e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.0.0-20221012135044-0b7e1fb9d458/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= -golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= -golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.12.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50= @@ -1568,18 +1208,6 @@ golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= -golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= -golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20221006150949-b44042a4b9c1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= 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= @@ -1592,9 +1220,7 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ 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/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= @@ -1691,31 +1317,13 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210818153620-00dd8d7831e7/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211013075003-97ac67df715c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/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-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/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-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA= @@ -1724,8 +1332,6 @@ golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXR golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= -golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= -golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.10.0 h1:3R7pNqamzBraeqj/Tj8qt1aQ2HpmlC+Cx/qL/7hn4/c= @@ -1738,10 +1344,7 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4= @@ -1832,10 +1435,6 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T 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= -golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= gonum.org/v1/gonum v0.9.3/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0= @@ -1868,31 +1467,6 @@ google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59t google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= -google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= -google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= -google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= -google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= -google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= -google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= -google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= -google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= -google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= -google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= -google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= -google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= -google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= -google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= -google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= -google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= -google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI= -google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.99.0/go.mod h1:1YOf74vkVndF7pG6hIHuINsM7eWwpVTAfNMNiL91A08= -google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= -google.golang.org/api v0.102.0/go.mod h1:3VFl6/fzoA+qNuS1N1/VfXY4LjoXN/wzeIp7TweWwGo= google.golang.org/appengine v1.0.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1946,7 +1520,6 @@ google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= @@ -1958,64 +1531,8 @@ google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= google.golang.org/genproto v0.0.0-20210721163202-f1cecdd8b78a/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= google.golang.org/genproto v0.0.0-20210726143408-b02e89920bf0/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= -google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211013025323-ce878158c4d4/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= -google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE= -google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= -google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw= -google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= -google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= -google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= -google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= -google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= -google.golang.org/genproto v0.0.0-20221024153911-1573dae28c9c/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20221024183307-1bc688fe9f3e/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20221027153422-115e99e71e1c/go.mod h1:CGI5F/G+E5bKwmfYo09AXuVN4dD894kIKUFmVbP2/Fo= -google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19 h1:0nDDozoAU19Qb2HwhXadU8OcsiO/09cnTqhUtq2MEOM= google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= @@ -2045,20 +1562,8 @@ google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQ google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.41.0/go.mod h1:U3l9uK9J0sini8mHphKoXyaqDA/8VyGnDee1zzIUK6k= -google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= -google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= google.golang.org/grpc v1.57.0 h1:kfzNeI/klCGD2YPMUlaGNT3pxvYfga7smW3Vth8Zsiw= google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= @@ -2075,7 +1580,6 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba 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.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= diff --git a/handler/handlers.go b/handler/handlers.go index 1537791..d8a6695 100644 --- a/handler/handlers.go +++ b/handler/handlers.go @@ -2,14 +2,16 @@ package handler import ( "context" + "io" + "net/http" + cmsstorage "go.unistack.org/cms-service/storage" "go.unistack.org/micro/v3" "go.unistack.org/micro/v3/errors" "go.unistack.org/unistack-org/pkgdash/config" - "go.unistack.org/unistack-org/pkgdash/models" pb "go.unistack.org/unistack-org/pkgdash/proto/go_generate" "go.unistack.org/unistack-org/pkgdash/storage" - "net/http" + "google.golang.org/protobuf/encoding/protojson" ) type Handler struct { @@ -17,6 +19,8 @@ type Handler struct { store storage.Storage writer writer + protojson.MarshalOptions + protojson.UnmarshalOptions } func (h *Handler) ListPackage(w http.ResponseWriter, r *http.Request) { @@ -24,7 +28,7 @@ func (h *Handler) ListPackage(w http.ResponseWriter, r *http.Request) { logger := h.svc.Logger() logger.Debug(ctx, "Start getListPackage") - dbRsp, err := h.store.List(ctx) + dbRsp, err := h.store.ListPackage(ctx) if err != nil { logger.Errorf(ctx, "error db response: %v", err) h.writer.Response(ctx, w, err) @@ -32,7 +36,7 @@ func (h *Handler) ListPackage(w http.ResponseWriter, r *http.Request) { } rsp := new(pb.ListPackageRsp) - rsp.Packages = models.ListPackage(dbRsp).Mapping() + rsp.Packages = dbRsp.Mapping() logger.Debug(ctx, "Success finish getListPackage") h.writer.Response(ctx, w, rsp) @@ -51,7 +55,73 @@ func (h *Handler) AddComment(w http.ResponseWriter, r *http.Request) { logger := h.svc.Logger() logger.Debug(ctx, "Start AddComment") - // TODO + defer r.Body.Close() + all, err := io.ReadAll(r.Body) + if err != nil { + logger.Error(ctx, err) + h.writer.Response(ctx, w, NewInternalError(err)) + return + } + + rsp := new(pb.AddCommentRsp) + if err = h.Unmarshal(all, rsp); err != nil { + logger.Error(ctx, err) + h.writer.Response(ctx, w, NewUnmarshalError(err)) + return + } + + if err = rsp.Validate(); err != nil { + logger.Error(ctx, err) + h.writer.Response(ctx, w, NewValidationError(err)) + return + } + + if err = h.store.AddComment(ctx, rsp); err != nil { + logger.Error(ctx, err) + h.writer.Response(ctx, w, NewInternalError(err)) + return + } + + logger.Debug(ctx, "Success finish addComment") +} + +func (h *Handler) AddPackage(w http.ResponseWriter, r *http.Request) { + ctx := r.Context() + logger := h.svc.Logger() + logger.Debug(ctx, "Start AddPackage") + + defer r.Body.Close() + all, err := io.ReadAll(r.Body) + if err != nil { + logger.Error(ctx, err) + h.writer.Response(ctx, w, NewInternalError(err)) + return + } + + req := new(pb.AddPackageRsp) + if err = h.Unmarshal(all, req); err != nil { + logger.Error(ctx, err) + h.writer.Response(ctx, w, NewUnmarshalError(err)) + return + } + + if err = req.Validate(); err != nil { + logger.Error(ctx, err) + h.writer.Response(ctx, w, NewValidationError(err)) + return + } + + // TODO: + // need logic for add module from go.mod + // err := setModules(req) + + if err = h.store.AddPackage(ctx, req); err != nil { + logger.Error(ctx, err) + h.writer.Response(ctx, w, NewInternalError(err)) + return + } + + logger.Debug(ctx, "Success finish addPackage") } func NewHandler(svc micro.Service, w writer) *Handler { diff --git a/handler/middleware.go b/handler/middleware.go new file mode 100644 index 0000000..df99f45 --- /dev/null +++ b/handler/middleware.go @@ -0,0 +1,21 @@ +package handler + +import "net/http" + +func Methods(m string, next http.HandlerFunc) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + if req.Method != m { + http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) + return + } + + switch req.Method { + case http.MethodPost: + w.WriteHeader(http.StatusCreated) + case http.MethodPut: + w.WriteHeader(http.StatusNoContent) + } + + next.ServeHTTP(w, req) + } +} diff --git a/handler/writer.go b/handler/writer.go index 0929118..3caed23 100644 --- a/handler/writer.go +++ b/handler/writer.go @@ -2,7 +2,7 @@ package handler import ( "context" - "go.unistack.org/micro/v4/logger" + "go.unistack.org/micro/v3/logger" pb "go.unistack.org/unistack-org/pkgdash/proto/go_generate" "net/http" @@ -18,6 +18,7 @@ type writer interface { Response(ctx context.Context, rw http.ResponseWriter, value interface{}) } +// nolint type stackTracer interface { StackTrace() errors.StackTrace } diff --git a/internal/modproxy.go b/internal/modproxy.go index c3d306e..6cebcb0 100644 --- a/internal/modproxy.go +++ b/internal/modproxy.go @@ -282,7 +282,7 @@ func Updates(opt UpdateOptions) { return nil }) } - group.Wait() + _ = group.Wait() }() for u := range ch { if opt.OnUpdate != nil { diff --git a/main.go b/main.go index e039cfa..2961783 100644 --- a/main.go +++ b/main.go @@ -15,9 +15,9 @@ import ( "github.com/go-git/go-git/v5/plumbing/filemode" "github.com/go-git/go-git/v5/plumbing/object" "github.com/go-git/go-git/v5/storage/memory" - flagconfig "go.unistack.org/micro-config-flag/v4" - "go.unistack.org/micro/v4/config" - "go.unistack.org/micro/v4/logger" + flagconfig "go.unistack.org/micro-config-flag/v3" + "go.unistack.org/micro/v3/config" + "go.unistack.org/micro/v3/logger" "golang.org/x/mod/modfile" "golang.org/x/mod/module" ) diff --git a/models/entities.go b/models/entities.go index 3711af4..b1a5ea4 100644 --- a/models/entities.go +++ b/models/entities.go @@ -7,12 +7,12 @@ import ( ) type Package struct { - ID int64 `db:"id"` // package id - Name string `db:"name"` // service name, last component path - URL string `db:"url"` // scm url - Modules []Module `db:"modules"` // parsed go.mod modules - Issues []Issue `db:"issues"` // issues list - Comments []int64 `db:"comments"` + ID int64 `db:"id" json:"id"` // package id + Name string `db:"name" json:"name"` // service name, last component path + URL string `db:"url" json:"url"` // scm url + Modules []int64 `db:"modules" json:"modules"` // parsed go.mod modules + Issues []int64 `db:"issues" json:"issues,omitempty"` // issues list + Comments []int64 `db:"comments" json:"comments,omitempty"` } type Module struct { @@ -31,14 +31,14 @@ type Issue struct { } type Comment struct { - ID int64 `db:"id"` - Text string `db:"value"` - Created pgtype.Date `db:"created"` - Updated pgtype.Date `db:"updated"` + ID int64 `db:"id" json:"id"` + Text string `db:"value" json:"text"` + Created pgtype.Date `db:"created" json:"created"` + Updated pgtype.Date `db:"updated" json:"updated,omitempty"` } type Dashboard struct { - ID int64 `db:"id"` - Uuid uuid.UUID `db:"uuid"` - Package int64 `db:"package"` + ID int64 `db:"id"` + Uuid uuid.UUID `db:"uuid"` + Packages []int64 `db:"package"` } diff --git a/proto/dashboard.proto b/proto/dashboard.proto index 54eb0d8..aceec1e 100644 --- a/proto/dashboard.proto +++ b/proto/dashboard.proto @@ -9,7 +9,8 @@ import "validate/validate.proto"; service DashboardService { rpc ListPackage(ListPackageReq) returns (ListPackageRsp) {}; rpc UpdateInfo(UpdateInfoPackageRsp) returns (UpdateInfoPackageReq) {}; - rpc AddComment(CommentRsp) returns (CommentReq) {}; + rpc AddComment(AddCommentRsp) returns (AddCommentReq) {}; + rpc AddPackage(AddPackageRsp) returns (AddPackageReq) {}; }; message ErrorRsp { @@ -66,11 +67,18 @@ message UpdateInfoPackageReq { uint64 id = 1 [(validate.rules).uint64.gt = 0]; } -message CommentRsp { +message AddCommentRsp { uint64 idPackage = 1 [(validate.rules).uint64.gt = 0]; string text = 2; } -message CommentReq { +message AddCommentReq { uint64 id = 1 [(validate.rules).uint64.gt = 0]; -} \ No newline at end of file +} + +message AddPackageRsp { + string name = 1 [(validate.rules).string.min_len = 1]; + string url = 2 [(validate.rules).string.min_len = 1]; + repeated uint64 modules = 3; +} +message AddPackageReq{} \ No newline at end of file diff --git a/proto/docker_generate/dashboard.proto b/proto/docker_generate/dashboard.proto new file mode 100644 index 0000000..e6a9588 --- /dev/null +++ b/proto/docker_generate/dashboard.proto @@ -0,0 +1,71 @@ +syntax = "proto3"; + +package proto; + +option go_package = "./go_generate;go_generate"; + +import "validate/validate.proto"; + + +message ErrorRsp { + Error error = 1 [json_name = "error"]; +} + +message Error { + string code = 1 [json_name = "code"]; + string title = 2 [json_name = "title"]; + string uuid = 3 [json_name = "uuid"]; + string details = 4 [json_name = "details"]; +} + +message Package { + uint64 id = 1 [(validate.rules).uint64.gt = 0]; + string name = 2 [(validate.rules).string.min_len = 1]; + string url = 3 [(validate.rules).string.min_len = 1]; + repeated Module modules = 4; + repeated Issue issues = 5; +}; + +message Module { + uint64 id = 1 [(validate.rules).uint64.gt = 0]; + string name = 2 [(validate.rules).string.min_len = 1]; + string version = 3 [(validate.rules).string.min_len = 1]; + uint64 package = 4 [(validate.rules).uint64.gt = 0]; +} + +message Issue { + uint64 id = 1 [(validate.rules).uint64.gt = 0]; + uint64 status = 2 [(validate.rules).uint64.gt = 0]; + string desc = 3 [(validate.rules).string.min_len = 1]; + uint64 package = 4 [(validate.rules).uint64.gt = 0]; + repeated uint64 modules = 5; +} + +message Comment { + uint64 id = 1 [(validate.rules).uint64.gt = 0]; + uint64 package = 2 [(validate.rules).uint64.gt = 0]; + string text = 3; + uint64 created = 4 [(validate.rules).uint64.gt = 0]; + uint64 updated = 5 [(validate.rules).uint64.gt = 0]; +} + +message ListPackageReq {} +message ListPackageRsp{ + repeated Package packages = 1; +} + +message UpdateInfoPackageRsp { + uint64 id = 1 [(validate.rules).uint64.gt = 0]; +} +message UpdateInfoPackageReq { + uint64 id = 1 [(validate.rules).uint64.gt = 0]; +} + +message CommentRsp { + uint64 idPackage = 1 [(validate.rules).uint64.gt = 0]; + string text = 2; +} + +message CommentReq { + uint64 id = 1 [(validate.rules).uint64.gt = 0]; +} \ No newline at end of file diff --git a/proto/docker_generate/restService.proto b/proto/docker_generate/restService.proto new file mode 100644 index 0000000..d3205fa --- /dev/null +++ b/proto/docker_generate/restService.proto @@ -0,0 +1,42 @@ +syntax = "proto3"; + +package proto; + +option go_package = "./go_generate;go_generate"; + +import "dashboard.proto"; +import "google/api/annotations.proto"; +import "protoc-gen-swagger/options/annotations.proto"; + +option (grpc.gateway.protoc_gen_swagger.options.openapiv2_swagger) = { + info: { + title: "service-platform/product-services/mts-money/gateway-proto", + version: "0"; + }; + consumes: "application/json"; + produces: "application/json"; +}; + +service DashboardService { + rpc ListPackage(ListPackageReq) returns (ListPackageRsp) { + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_operation) = { + operation_id: "ListPackage"; + responses: { + key: "default"; + value: { + description: "Error response"; + schema: { + json_schema: { + ref: ".go_generate.ErrorRsp"; + } + } + } + } + }; + option (google.api.http) = { + get: "/listPackage"; + }; + }; + rpc UpdateInfo(UpdateInfoPackageRsp) returns (UpdateInfoPackageReq) {}; + rpc AddComment(CommentRsp) returns (CommentReq) {}; +}; \ No newline at end of file diff --git a/proto/go_generate/dashboard.pb.go b/proto/go_generate/dashboard.pb.go index 46671b2..269862a 100644 --- a/proto/go_generate/dashboard.pb.go +++ b/proto/go_generate/dashboard.pb.go @@ -626,7 +626,7 @@ func (x *UpdateInfoPackageReq) GetId() uint64 { return 0 } -type CommentRsp struct { +type AddCommentRsp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -635,8 +635,8 @@ type CommentRsp struct { Text string `protobuf:"bytes,2,opt,name=text,proto3" json:"text,omitempty"` } -func (x *CommentRsp) Reset() { - *x = CommentRsp{} +func (x *AddCommentRsp) Reset() { + *x = AddCommentRsp{} if protoimpl.UnsafeEnabled { mi := &file_dashboard_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -644,13 +644,13 @@ func (x *CommentRsp) Reset() { } } -func (x *CommentRsp) String() string { +func (x *AddCommentRsp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CommentRsp) ProtoMessage() {} +func (*AddCommentRsp) ProtoMessage() {} -func (x *CommentRsp) ProtoReflect() protoreflect.Message { +func (x *AddCommentRsp) ProtoReflect() protoreflect.Message { mi := &file_dashboard_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -662,26 +662,26 @@ func (x *CommentRsp) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CommentRsp.ProtoReflect.Descriptor instead. -func (*CommentRsp) Descriptor() ([]byte, []int) { +// Deprecated: Use AddCommentRsp.ProtoReflect.Descriptor instead. +func (*AddCommentRsp) Descriptor() ([]byte, []int) { return file_dashboard_proto_rawDescGZIP(), []int{10} } -func (x *CommentRsp) GetIdPackage() uint64 { +func (x *AddCommentRsp) GetIdPackage() uint64 { if x != nil { return x.IdPackage } return 0 } -func (x *CommentRsp) GetText() string { +func (x *AddCommentRsp) GetText() string { if x != nil { return x.Text } return "" } -type CommentReq struct { +type AddCommentReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -689,8 +689,8 @@ type CommentReq struct { Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` } -func (x *CommentReq) Reset() { - *x = CommentReq{} +func (x *AddCommentReq) Reset() { + *x = AddCommentReq{} if protoimpl.UnsafeEnabled { mi := &file_dashboard_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -698,13 +698,13 @@ func (x *CommentReq) Reset() { } } -func (x *CommentReq) String() string { +func (x *AddCommentReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CommentReq) ProtoMessage() {} +func (*AddCommentReq) ProtoMessage() {} -func (x *CommentReq) ProtoReflect() protoreflect.Message { +func (x *AddCommentReq) ProtoReflect() protoreflect.Message { mi := &file_dashboard_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -716,18 +716,119 @@ func (x *CommentReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CommentReq.ProtoReflect.Descriptor instead. -func (*CommentReq) Descriptor() ([]byte, []int) { +// Deprecated: Use AddCommentReq.ProtoReflect.Descriptor instead. +func (*AddCommentReq) Descriptor() ([]byte, []int) { return file_dashboard_proto_rawDescGZIP(), []int{11} } -func (x *CommentReq) GetId() uint64 { +func (x *AddCommentReq) GetId() uint64 { if x != nil { return x.Id } return 0 } +type AddPackageRsp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` + Modules []uint64 `protobuf:"varint,3,rep,packed,name=modules,proto3" json:"modules,omitempty"` +} + +func (x *AddPackageRsp) Reset() { + *x = AddPackageRsp{} + if protoimpl.UnsafeEnabled { + mi := &file_dashboard_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AddPackageRsp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AddPackageRsp) ProtoMessage() {} + +func (x *AddPackageRsp) ProtoReflect() protoreflect.Message { + mi := &file_dashboard_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AddPackageRsp.ProtoReflect.Descriptor instead. +func (*AddPackageRsp) Descriptor() ([]byte, []int) { + return file_dashboard_proto_rawDescGZIP(), []int{12} +} + +func (x *AddPackageRsp) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *AddPackageRsp) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *AddPackageRsp) GetModules() []uint64 { + if x != nil { + return x.Modules + } + return nil +} + +type AddPackageReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *AddPackageReq) Reset() { + *x = AddPackageReq{} + if protoimpl.UnsafeEnabled { + mi := &file_dashboard_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AddPackageReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AddPackageReq) ProtoMessage() {} + +func (x *AddPackageReq) ProtoReflect() protoreflect.Message { + mi := &file_dashboard_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AddPackageReq.ProtoReflect.Descriptor instead. +func (*AddPackageReq) Descriptor() ([]byte, []int) { + return file_dashboard_proto_rawDescGZIP(), []int{13} +} + var File_dashboard_proto protoreflect.FileDescriptor var file_dashboard_proto_rawDesc = []byte{ @@ -793,32 +894,44 @@ var file_dashboard_proto_rawDesc = []byte{ 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x22, 0x2f, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, - 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x22, 0x47, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x65, - 0x6e, 0x74, 0x52, 0x73, 0x70, 0x12, 0x25, 0x0a, 0x09, 0x69, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, - 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, - 0x00, 0x52, 0x09, 0x69, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, - 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, - 0x22, 0x25, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, 0x17, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, - 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x32, 0xd1, 0x01, 0x0a, 0x10, 0x44, 0x61, 0x73, 0x68, - 0x62, 0x6f, 0x61, 0x72, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x0b, - 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x15, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, - 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, - 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x0a, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x50, 0x61, 0x63, 0x6b, - 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x1a, 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, - 0x52, 0x65, 0x71, 0x22, 0x00, 0x12, 0x34, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6d, 0x6d, - 0x65, 0x6e, 0x74, 0x12, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, - 0x65, 0x6e, 0x74, 0x52, 0x73, 0x70, 0x1a, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, - 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x22, 0x00, 0x42, 0x44, 0x5a, 0x42, 0x67, - 0x6f, 0x2e, 0x75, 0x6e, 0x69, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x75, - 0x6e, 0x69, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2d, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x6b, 0x67, 0x64, - 0x61, 0x73, 0x68, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x5f, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x3b, 0x67, 0x6f, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x22, 0x4a, 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x43, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x73, 0x70, 0x12, 0x25, 0x0a, 0x09, 0x69, 0x64, 0x50, 0x61, + 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, + 0x32, 0x02, 0x20, 0x00, 0x52, 0x09, 0x69, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, + 0x65, 0x78, 0x74, 0x22, 0x28, 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x22, 0x61, 0x0a, + 0x0d, 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x12, 0x1b, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, + 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x03, 0x75, + 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, + 0x01, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, + 0x22, 0x0f, 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, + 0x71, 0x32, 0x93, 0x02, 0x0a, 0x10, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, + 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x52, 0x73, 0x70, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, + 0x6e, 0x66, 0x6f, 0x12, 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, + 0x1a, 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, + 0x6e, 0x66, 0x6f, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x22, 0x00, 0x12, + 0x3a, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, + 0x52, 0x73, 0x70, 0x1a, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x64, 0x64, 0x43, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x0a, 0x41, + 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x1a, + 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, + 0x67, 0x65, 0x52, 0x65, 0x71, 0x22, 0x00, 0x42, 0x44, 0x5a, 0x42, 0x67, 0x6f, 0x2e, 0x75, 0x6e, + 0x69, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x75, 0x6e, 0x69, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x2d, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x3b, 0x67, 0x6f, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -833,7 +946,7 @@ func file_dashboard_proto_rawDescGZIP() []byte { return file_dashboard_proto_rawDescData } -var file_dashboard_proto_msgTypes = make([]protoimpl.MessageInfo, 12) +var file_dashboard_proto_msgTypes = make([]protoimpl.MessageInfo, 14) var file_dashboard_proto_goTypes = []interface{}{ (*ErrorRsp)(nil), // 0: proto.ErrorRsp (*Error)(nil), // 1: proto.Error @@ -845,8 +958,10 @@ var file_dashboard_proto_goTypes = []interface{}{ (*ListPackageRsp)(nil), // 7: proto.ListPackageRsp (*UpdateInfoPackageRsp)(nil), // 8: proto.UpdateInfoPackageRsp (*UpdateInfoPackageReq)(nil), // 9: proto.UpdateInfoPackageReq - (*CommentRsp)(nil), // 10: proto.CommentRsp - (*CommentReq)(nil), // 11: proto.CommentReq + (*AddCommentRsp)(nil), // 10: proto.AddCommentRsp + (*AddCommentReq)(nil), // 11: proto.AddCommentReq + (*AddPackageRsp)(nil), // 12: proto.AddPackageRsp + (*AddPackageReq)(nil), // 13: proto.AddPackageReq } var file_dashboard_proto_depIdxs = []int32{ 1, // 0: proto.ErrorRsp.error:type_name -> proto.Error @@ -855,12 +970,14 @@ var file_dashboard_proto_depIdxs = []int32{ 2, // 3: proto.ListPackageRsp.packages:type_name -> proto.Package 6, // 4: proto.DashboardService.ListPackage:input_type -> proto.ListPackageReq 8, // 5: proto.DashboardService.UpdateInfo:input_type -> proto.UpdateInfoPackageRsp - 10, // 6: proto.DashboardService.AddComment:input_type -> proto.CommentRsp - 7, // 7: proto.DashboardService.ListPackage:output_type -> proto.ListPackageRsp - 9, // 8: proto.DashboardService.UpdateInfo:output_type -> proto.UpdateInfoPackageReq - 11, // 9: proto.DashboardService.AddComment:output_type -> proto.CommentReq - 7, // [7:10] is the sub-list for method output_type - 4, // [4:7] is the sub-list for method input_type + 10, // 6: proto.DashboardService.AddComment:input_type -> proto.AddCommentRsp + 12, // 7: proto.DashboardService.AddPackage:input_type -> proto.AddPackageRsp + 7, // 8: proto.DashboardService.ListPackage:output_type -> proto.ListPackageRsp + 9, // 9: proto.DashboardService.UpdateInfo:output_type -> proto.UpdateInfoPackageReq + 11, // 10: proto.DashboardService.AddComment:output_type -> proto.AddCommentReq + 13, // 11: proto.DashboardService.AddPackage:output_type -> proto.AddPackageReq + 8, // [8:12] is the sub-list for method output_type + 4, // [4:8] is the sub-list for method input_type 4, // [4:4] is the sub-list for extension type_name 4, // [4:4] is the sub-list for extension extendee 0, // [0:4] is the sub-list for field type_name @@ -993,7 +1110,7 @@ func file_dashboard_proto_init() { } } file_dashboard_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CommentRsp); i { + switch v := v.(*AddCommentRsp); i { case 0: return &v.state case 1: @@ -1005,7 +1122,31 @@ func file_dashboard_proto_init() { } } file_dashboard_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CommentReq); i { + switch v := v.(*AddCommentReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_dashboard_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AddPackageRsp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_dashboard_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AddPackageReq); i { case 0: return &v.state case 1: @@ -1023,7 +1164,7 @@ func file_dashboard_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_dashboard_proto_rawDesc, NumEnums: 0, - NumMessages: 12, + NumMessages: 14, NumExtensions: 0, NumServices: 1, }, diff --git a/proto/go_generate/dashboard.pb.validate.go b/proto/go_generate/dashboard.pb.validate.go index e82f9cd..471e6d4 100644 --- a/proto/go_generate/dashboard.pb.validate.go +++ b/proto/go_generate/dashboard.pb.validate.go @@ -1356,22 +1356,22 @@ var _ interface { ErrorName() string } = UpdateInfoPackageReqValidationError{} -// Validate checks the field values on CommentRsp with the rules defined in the -// proto definition for this message. If any rules are violated, the first +// Validate checks the field values on AddCommentRsp with the rules defined in +// the proto definition for this message. If any rules are violated, the first // error encountered is returned, or nil if there are no violations. -func (m *CommentRsp) Validate() error { +func (m *AddCommentRsp) Validate() error { return m.validate(false) } -// ValidateAll checks the field values on CommentRsp with the rules defined in -// the proto definition for this message. If any rules are violated, the -// result is a list of violation errors wrapped in CommentRspMultiError, or +// ValidateAll checks the field values on AddCommentRsp with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in AddCommentRspMultiError, or // nil if none found. -func (m *CommentRsp) ValidateAll() error { +func (m *AddCommentRsp) ValidateAll() error { return m.validate(true) } -func (m *CommentRsp) validate(all bool) error { +func (m *AddCommentRsp) validate(all bool) error { if m == nil { return nil } @@ -1379,7 +1379,7 @@ func (m *CommentRsp) validate(all bool) error { var errors []error if m.GetIdPackage() <= 0 { - err := CommentRspValidationError{ + err := AddCommentRspValidationError{ field: "IdPackage", reason: "value must be greater than 0", } @@ -1392,18 +1392,19 @@ func (m *CommentRsp) validate(all bool) error { // no validation rules for Text if len(errors) > 0 { - return CommentRspMultiError(errors) + return AddCommentRspMultiError(errors) } return nil } -// CommentRspMultiError is an error wrapping multiple validation errors -// returned by CommentRsp.ValidateAll() if the designated constraints aren't met. -type CommentRspMultiError []error +// AddCommentRspMultiError is an error wrapping multiple validation errors +// returned by AddCommentRsp.ValidateAll() if the designated constraints +// aren't met. +type AddCommentRspMultiError []error // Error returns a concatenation of all the error messages it wraps. -func (m CommentRspMultiError) Error() string { +func (m AddCommentRspMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) @@ -1412,11 +1413,11 @@ func (m CommentRspMultiError) Error() string { } // AllErrors returns a list of validation violation errors. -func (m CommentRspMultiError) AllErrors() []error { return m } +func (m AddCommentRspMultiError) AllErrors() []error { return m } -// CommentRspValidationError is the validation error returned by -// CommentRsp.Validate if the designated constraints aren't met. -type CommentRspValidationError struct { +// AddCommentRspValidationError is the validation error returned by +// AddCommentRsp.Validate if the designated constraints aren't met. +type AddCommentRspValidationError struct { field string reason string cause error @@ -1424,22 +1425,22 @@ type CommentRspValidationError struct { } // Field function returns field value. -func (e CommentRspValidationError) Field() string { return e.field } +func (e AddCommentRspValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e CommentRspValidationError) Reason() string { return e.reason } +func (e AddCommentRspValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e CommentRspValidationError) Cause() error { return e.cause } +func (e AddCommentRspValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e CommentRspValidationError) Key() bool { return e.key } +func (e AddCommentRspValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e CommentRspValidationError) ErrorName() string { return "CommentRspValidationError" } +func (e AddCommentRspValidationError) ErrorName() string { return "AddCommentRspValidationError" } // Error satisfies the builtin error interface -func (e CommentRspValidationError) Error() string { +func (e AddCommentRspValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -1451,14 +1452,14 @@ func (e CommentRspValidationError) Error() string { } return fmt.Sprintf( - "invalid %sCommentRsp.%s: %s%s", + "invalid %sAddCommentRsp.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = CommentRspValidationError{} +var _ error = AddCommentRspValidationError{} var _ interface { Field() string @@ -1466,24 +1467,24 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = CommentRspValidationError{} +} = AddCommentRspValidationError{} -// Validate checks the field values on CommentReq with the rules defined in the -// proto definition for this message. If any rules are violated, the first +// Validate checks the field values on AddCommentReq with the rules defined in +// the proto definition for this message. If any rules are violated, the first // error encountered is returned, or nil if there are no violations. -func (m *CommentReq) Validate() error { +func (m *AddCommentReq) Validate() error { return m.validate(false) } -// ValidateAll checks the field values on CommentReq with the rules defined in -// the proto definition for this message. If any rules are violated, the -// result is a list of violation errors wrapped in CommentReqMultiError, or +// ValidateAll checks the field values on AddCommentReq with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in AddCommentReqMultiError, or // nil if none found. -func (m *CommentReq) ValidateAll() error { +func (m *AddCommentReq) ValidateAll() error { return m.validate(true) } -func (m *CommentReq) validate(all bool) error { +func (m *AddCommentReq) validate(all bool) error { if m == nil { return nil } @@ -1491,7 +1492,7 @@ func (m *CommentReq) validate(all bool) error { var errors []error if m.GetId() <= 0 { - err := CommentReqValidationError{ + err := AddCommentReqValidationError{ field: "Id", reason: "value must be greater than 0", } @@ -1502,18 +1503,19 @@ func (m *CommentReq) validate(all bool) error { } if len(errors) > 0 { - return CommentReqMultiError(errors) + return AddCommentReqMultiError(errors) } return nil } -// CommentReqMultiError is an error wrapping multiple validation errors -// returned by CommentReq.ValidateAll() if the designated constraints aren't met. -type CommentReqMultiError []error +// AddCommentReqMultiError is an error wrapping multiple validation errors +// returned by AddCommentReq.ValidateAll() if the designated constraints +// aren't met. +type AddCommentReqMultiError []error // Error returns a concatenation of all the error messages it wraps. -func (m CommentReqMultiError) Error() string { +func (m AddCommentReqMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) @@ -1522,11 +1524,11 @@ func (m CommentReqMultiError) Error() string { } // AllErrors returns a list of validation violation errors. -func (m CommentReqMultiError) AllErrors() []error { return m } +func (m AddCommentReqMultiError) AllErrors() []error { return m } -// CommentReqValidationError is the validation error returned by -// CommentReq.Validate if the designated constraints aren't met. -type CommentReqValidationError struct { +// AddCommentReqValidationError is the validation error returned by +// AddCommentReq.Validate if the designated constraints aren't met. +type AddCommentReqValidationError struct { field string reason string cause error @@ -1534,22 +1536,22 @@ type CommentReqValidationError struct { } // Field function returns field value. -func (e CommentReqValidationError) Field() string { return e.field } +func (e AddCommentReqValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e CommentReqValidationError) Reason() string { return e.reason } +func (e AddCommentReqValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e CommentReqValidationError) Cause() error { return e.cause } +func (e AddCommentReqValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e CommentReqValidationError) Key() bool { return e.key } +func (e AddCommentReqValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e CommentReqValidationError) ErrorName() string { return "CommentReqValidationError" } +func (e AddCommentReqValidationError) ErrorName() string { return "AddCommentReqValidationError" } // Error satisfies the builtin error interface -func (e CommentReqValidationError) Error() string { +func (e AddCommentReqValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -1561,14 +1563,14 @@ func (e CommentReqValidationError) Error() string { } return fmt.Sprintf( - "invalid %sCommentReq.%s: %s%s", + "invalid %sAddCommentReq.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = CommentReqValidationError{} +var _ error = AddCommentReqValidationError{} var _ interface { Field() string @@ -1576,4 +1578,226 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = CommentReqValidationError{} +} = AddCommentReqValidationError{} + +// Validate checks the field values on AddPackageRsp with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *AddPackageRsp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on AddPackageRsp with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in AddPackageRspMultiError, or +// nil if none found. +func (m *AddPackageRsp) ValidateAll() error { + return m.validate(true) +} + +func (m *AddPackageRsp) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if utf8.RuneCountInString(m.GetName()) < 1 { + err := AddPackageRspValidationError{ + field: "Name", + reason: "value length must be at least 1 runes", + } + if !all { + return err + } + errors = append(errors, err) + } + + if utf8.RuneCountInString(m.GetUrl()) < 1 { + err := AddPackageRspValidationError{ + field: "Url", + reason: "value length must be at least 1 runes", + } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return AddPackageRspMultiError(errors) + } + + return nil +} + +// AddPackageRspMultiError is an error wrapping multiple validation errors +// returned by AddPackageRsp.ValidateAll() if the designated constraints +// aren't met. +type AddPackageRspMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m AddPackageRspMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m AddPackageRspMultiError) AllErrors() []error { return m } + +// AddPackageRspValidationError is the validation error returned by +// AddPackageRsp.Validate if the designated constraints aren't met. +type AddPackageRspValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e AddPackageRspValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e AddPackageRspValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e AddPackageRspValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e AddPackageRspValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e AddPackageRspValidationError) ErrorName() string { return "AddPackageRspValidationError" } + +// Error satisfies the builtin error interface +func (e AddPackageRspValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sAddPackageRsp.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = AddPackageRspValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = AddPackageRspValidationError{} + +// Validate checks the field values on AddPackageReq with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *AddPackageReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on AddPackageReq with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in AddPackageReqMultiError, or +// nil if none found. +func (m *AddPackageReq) ValidateAll() error { + return m.validate(true) +} + +func (m *AddPackageReq) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if len(errors) > 0 { + return AddPackageReqMultiError(errors) + } + + return nil +} + +// AddPackageReqMultiError is an error wrapping multiple validation errors +// returned by AddPackageReq.ValidateAll() if the designated constraints +// aren't met. +type AddPackageReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m AddPackageReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m AddPackageReqMultiError) AllErrors() []error { return m } + +// AddPackageReqValidationError is the validation error returned by +// AddPackageReq.Validate if the designated constraints aren't met. +type AddPackageReqValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e AddPackageReqValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e AddPackageReqValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e AddPackageReqValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e AddPackageReqValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e AddPackageReqValidationError) ErrorName() string { return "AddPackageReqValidationError" } + +// Error satisfies the builtin error interface +func (e AddPackageReqValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sAddPackageReq.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = AddPackageReqValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = AddPackageReqValidationError{} diff --git a/proto/micro/dashboard_micro.pb.go b/proto/micro/dashboard_micro.pb.go index 5d3c19c..4bcffa2 100644 --- a/proto/micro/dashboard_micro.pb.go +++ b/proto/micro/dashboard_micro.pb.go @@ -23,11 +23,13 @@ var ( type DashboardServiceClient interface { ListPackage(ctx context.Context, req *go_generate.ListPackageReq, opts ...client.CallOption) (*go_generate.ListPackageRsp, error) UpdateInfo(ctx context.Context, req *go_generate.UpdateInfoPackageRsp, opts ...client.CallOption) (*go_generate.UpdateInfoPackageReq, error) - AddComment(ctx context.Context, req *go_generate.CommentRsp, opts ...client.CallOption) (*go_generate.CommentReq, error) + AddComment(ctx context.Context, req *go_generate.AddCommentRsp, opts ...client.CallOption) (*go_generate.AddCommentReq, error) + AddPackage(ctx context.Context, req *go_generate.AddPackageRsp, opts ...client.CallOption) (*go_generate.AddPackageReq, error) } type DashboardServiceServer interface { ListPackage(ctx context.Context, req *go_generate.ListPackageReq, rsp *go_generate.ListPackageRsp) error UpdateInfo(ctx context.Context, req *go_generate.UpdateInfoPackageRsp, rsp *go_generate.UpdateInfoPackageReq) error - AddComment(ctx context.Context, req *go_generate.CommentRsp, rsp *go_generate.CommentReq) error + AddComment(ctx context.Context, req *go_generate.AddCommentRsp, rsp *go_generate.AddCommentReq) error + AddPackage(ctx context.Context, req *go_generate.AddPackageRsp, rsp *go_generate.AddPackageReq) error } diff --git a/proto/micro/dashboard_micro_http.pb.go b/proto/micro/dashboard_micro_http.pb.go index 91d7e05..6d1cc4d 100644 --- a/proto/micro/dashboard_micro_http.pb.go +++ b/proto/micro/dashboard_micro_http.pb.go @@ -40,8 +40,8 @@ func (c *dashboardServiceClient) UpdateInfo(ctx context.Context, req *go_generat return rsp, nil } -func (c *dashboardServiceClient) AddComment(ctx context.Context, req *go_generate.CommentRsp, opts ...client.CallOption) (*go_generate.CommentReq, error) { - rsp := &go_generate.CommentReq{} +func (c *dashboardServiceClient) AddComment(ctx context.Context, req *go_generate.AddCommentRsp, opts ...client.CallOption) (*go_generate.AddCommentReq, error) { + rsp := &go_generate.AddCommentReq{} err := c.c.Call(ctx, c.c.NewRequest(c.name, "DashboardService.AddComment", req), rsp, opts...) if err != nil { return nil, err @@ -49,6 +49,15 @@ func (c *dashboardServiceClient) AddComment(ctx context.Context, req *go_generat return rsp, nil } +func (c *dashboardServiceClient) AddPackage(ctx context.Context, req *go_generate.AddPackageRsp, opts ...client.CallOption) (*go_generate.AddPackageReq, error) { + rsp := &go_generate.AddPackageReq{} + err := c.c.Call(ctx, c.c.NewRequest(c.name, "DashboardService.AddPackage", req), rsp, opts...) + if err != nil { + return nil, err + } + return rsp, nil +} + type dashboardServiceServer struct { DashboardServiceServer } @@ -61,15 +70,20 @@ func (h *dashboardServiceServer) UpdateInfo(ctx context.Context, req *go_generat return h.DashboardServiceServer.UpdateInfo(ctx, req, rsp) } -func (h *dashboardServiceServer) AddComment(ctx context.Context, req *go_generate.CommentRsp, rsp *go_generate.CommentReq) error { +func (h *dashboardServiceServer) AddComment(ctx context.Context, req *go_generate.AddCommentRsp, rsp *go_generate.AddCommentReq) error { return h.DashboardServiceServer.AddComment(ctx, req, rsp) } +func (h *dashboardServiceServer) AddPackage(ctx context.Context, req *go_generate.AddPackageRsp, rsp *go_generate.AddPackageReq) error { + return h.DashboardServiceServer.AddPackage(ctx, req, rsp) +} + func RegisterDashboardServiceServer(s server.Server, sh DashboardServiceServer, opts ...server.HandlerOption) error { type dashboardService interface { ListPackage(ctx context.Context, req *go_generate.ListPackageReq, rsp *go_generate.ListPackageRsp) error UpdateInfo(ctx context.Context, req *go_generate.UpdateInfoPackageRsp, rsp *go_generate.UpdateInfoPackageReq) error - AddComment(ctx context.Context, req *go_generate.CommentRsp, rsp *go_generate.CommentReq) error + AddComment(ctx context.Context, req *go_generate.AddCommentRsp, rsp *go_generate.AddCommentReq) error + AddPackage(ctx context.Context, req *go_generate.AddPackageRsp, rsp *go_generate.AddPackageReq) error } type DashboardService struct { dashboardService diff --git a/service/service.go b/service/service.go index d3f527b..b275939 100644 --- a/service/service.go +++ b/service/service.go @@ -12,7 +12,6 @@ import ( "go.unistack.org/unistack-org/pkgdash/storage" cmsservice "go.unistack.org/cms-service" - grpcsrv "go.unistack.org/micro-server-grpc/v3" "go.unistack.org/micro/v3" "go.unistack.org/micro/v3/config" "go.unistack.org/micro/v3/logger" @@ -43,12 +42,7 @@ func NewService(ctx context.Context) (micro.Service, error) { router = microuter.NewRouter() } - mgsrv := grpcsrv.NewServer( - server.Register(reg), - ) - svc := micro.NewService( - micro.Server(mgsrv), micro.Register(reg), micro.Router(router), micro.Config(cs...), @@ -133,9 +127,10 @@ func NewService(ctx context.Context) (micro.Service, error) { mux := http.NewServeMux() - mux.HandleFunc("/listPackage", h.ListPackage) - mux.HandleFunc("/updateInfo", h.UpdateInfo) - mux.HandleFunc("/addComment", h.AddComment) + mux.HandleFunc("/listPackage", handler.Methods(http.MethodGet, h.ListPackage)) + mux.HandleFunc("/updateInfo", handler.Methods(http.MethodPost, h.UpdateInfo)) + mux.HandleFunc("/addComment", handler.Methods(http.MethodPut, h.AddComment)) + mux.HandleFunc("/addPackage", handler.Methods(http.MethodPost, h.AddPackage)) if err = svc.Server().Handle(svc.Server().NewHandler(mux)); err != nil { logger.Fatalf(ctx, "failed to register handler: %v", err) diff --git a/storage/migrations/postgres/000001_init_schema.up.sql b/storage/migrations/postgres/000001_init_schema.up.sql index 02c4ecc..a8ad351 100644 --- a/storage/migrations/postgres/000001_init_schema.up.sql +++ b/storage/migrations/postgres/000001_init_schema.up.sql @@ -1,12 +1,12 @@ create table if not exists dashboard ( id serial not null unique primary key , - "uniq_id" uuid not null unique default gen_random_uuid() , - package integer + "uuid" uuid not null unique default gen_random_uuid() , + package integer[] default '{}'::integer[] ); create table if not exists comment ( id serial not null unique primary key , - text text , + "text" text , created timestamp not null default current_timestamp , updated timestamp ); @@ -20,7 +20,7 @@ create table if not exists module ( create table if not exists issue ( id serial not null unique primary key , --package integer references package(id) , - modules integer[] , + modules integer[] default '{}'::integer[], status integer default 0 , "desc" varchar ); @@ -29,9 +29,9 @@ create table if not exists package ( id serial not null unique primary key , name varchar not null , url varchar , - modules integer[] , - issues integer[] , - comments integer[] + modules integer[] default '{}'::integer[], + issues integer[] default '{}'::integer[], + comments integer[] default '{}'::integer[] ); diff --git a/storage/postgres/quries.go b/storage/postgres/quries.go index accfcad..ad6f232 100644 --- a/storage/postgres/quries.go +++ b/storage/postgres/quries.go @@ -2,6 +2,22 @@ package postgres const ( queryListPackage = ` -select * from package; +select + id, + name, + url, + comments + --modules, + --issues, + from package; +` + queryAddComment = ` +with insert_comm as ( + insert into comment(text) values ($1) returning id +) +update package set comments = array_append(comments, (select * from insert_comm)) where id=$2; +` + queryAddPackage = ` +insert into package(name, url, modules) values ($1, $2, $3); ` ) diff --git a/storage/postgres/storage.go b/storage/postgres/storage.go index dfe5875..6e0a275 100644 --- a/storage/postgres/storage.go +++ b/storage/postgres/storage.go @@ -1,14 +1,19 @@ package postgres import ( + "context" "database/sql" "embed" "errors" - "go.unistack.org/unistack-org/pkgdash/config" + pb "go.unistack.org/unistack-org/pkgdash/proto/go_generate" "github.com/golang-migrate/migrate/v4" - "github.com/golang-migrate/migrate/v4/database/pgx" + mpgx "github.com/golang-migrate/migrate/v4/database/pgx" "github.com/golang-migrate/migrate/v4/source/iofs" + "github.com/lib/pq" + "go.unistack.org/micro/v3/logger" + "go.unistack.org/unistack-org/pkgdash/config" + "go.unistack.org/unistack-org/pkgdash/models" ) const ( @@ -31,8 +36,8 @@ func NewStorageFS(fs embed.FS) func(*sql.DB) (interface{}, error) { } func (s *Postgres) MigrateUp() error { - driver, err := pgx.WithInstance(s.db, &pgx.Config{ - MigrationsTable: pgx.DefaultMigrationsTable, + driver, err := mpgx.WithInstance(s.db, &mpgx.Config{ + MigrationsTable: mpgx.DefaultMigrationsTable, DatabaseName: config.ServiceName, }) if err != nil { @@ -57,8 +62,8 @@ func (s *Postgres) MigrateUp() error { } func (s *Postgres) MigrateDown() error { - driver, err := pgx.WithInstance(s.db, &pgx.Config{ - MigrationsTable: pgx.DefaultMigrationsTable, + driver, err := mpgx.WithInstance(s.db, &mpgx.Config{ + MigrationsTable: mpgx.DefaultMigrationsTable, DatabaseName: config.ServiceName, }) if err != nil { @@ -81,3 +86,92 @@ func (s *Postgres) MigrateDown() error { return nil } + +func (s *Postgres) ListPackage(ctx context.Context) (models.ListPackage, error) { + rows, err := s.db.QueryContext(ctx, queryListPackage) + if err != nil { + return nil, err + } + + defer func() { + if err = rows.Close(); err != nil { + return + } + err = rows.Err() + }() + + result := make([]*models.Package, 0) + for rows.Next() { + tmp := &models.Package{} + if err = rows.Scan( + &tmp.ID, + &tmp.Name, + &tmp.URL, + pq.Array(&tmp.Comments), + ); err != nil { + return nil, err + } + } + + return result, err +} + +func (s *Postgres) AddComment(ctx context.Context, rsp *pb.AddCommentRsp) error { + tx, err := s.db.BeginTx(ctx, nil) + if err != nil { + return err + } + + defer func() { + if err != nil { + if rollbackErr := tx.Rollback(); rollbackErr != nil { + logger.Errorf(ctx, "AddComment: unable to rollback: %v", rollbackErr) + } + } else { + err = tx.Commit() + } + }() + + res, err := tx.ExecContext(ctx, queryAddComment, rsp.Text, rsp.IdPackage) + if err != nil { + return err + } + + if aff, affErr := res.RowsAffected(); err != nil { + err = affErr + } else if aff == 0 { + err = errors.New("rows affected is 0") + } + + return err +} + +func (s *Postgres) AddPackage(ctx context.Context, rsp *pb.AddPackageRsp) error { + tx, err := s.db.BeginTx(ctx, nil) + if err != nil { + return err + } + + defer func() { + if err != nil { + if rollbackErr := tx.Rollback(); rollbackErr != nil { + logger.Errorf(ctx, "AddPackage: unable to rollback: %v", rollbackErr) + } + } else { + err = tx.Commit() + } + }() + + res, err := tx.ExecContext(ctx, queryAddPackage, rsp.Name, rsp.Url, pq.Array(rsp.Modules)) + if err != nil { + return err + } + + if aff, affErr := res.RowsAffected(); err != nil { + err = affErr + } else if aff == 0 { + err = errors.New("rows affected is 0") + } + + return err +} diff --git a/storage/storage.go b/storage/storage.go index 9328115..2833e6a 100644 --- a/storage/storage.go +++ b/storage/storage.go @@ -5,6 +5,7 @@ import ( "database/sql" "embed" "go.unistack.org/unistack-org/pkgdash/models" + pb "go.unistack.org/unistack-org/pkgdash/proto/go_generate" "go.unistack.org/unistack-org/pkgdash/storage/postgres" cmsstorage "go.unistack.org/cms-service/storage" @@ -24,7 +25,9 @@ func init() { type Storage interface { cmsstorage.Migrator - List(ctx context.Context) ([]*models.Package, error) + ListPackage(ctx context.Context) (models.ListPackage, error) + AddComment(ctx context.Context, rsp *pb.AddCommentRsp) error + AddPackage(ctx context.Context, rsp *pb.AddPackageRsp) error } func NewStorage(name string, db *sql.DB) (interface{}, error) { -- 2.45.2 From a0d101e9ce564608f516ffae1e8fb984926bf9cd Mon Sep 17 00:00:00 2001 From: Evstigneev Denis Date: Thu, 10 Aug 2023 12:44:12 +0300 Subject: [PATCH 02/16] restore Dockerfile --- proto/docker_generate/Dockerfile | 43 ++++++++++++++++++++++++++++++++ proto/docker_generate/Makefile | 7 ++++++ 2 files changed, 50 insertions(+) create mode 100644 proto/docker_generate/Dockerfile create mode 100644 proto/docker_generate/Makefile diff --git a/proto/docker_generate/Dockerfile b/proto/docker_generate/Dockerfile new file mode 100644 index 0000000..24e0cd6 --- /dev/null +++ b/proto/docker_generate/Dockerfile @@ -0,0 +1,43 @@ +FROM golang:1.19-bullseye + +RUN mkdir /build +WORKDIR /build + +RUN apt-get update && apt-get -y install --no-install-recommends protobuf-compiler libprotobuf-dev + +ENV PATH=${PATH}:${GOBIN} + +ENV GEN_VALIDATE=github.com/envoyproxy/protoc-gen-validate@v1.0.2 +ENV GOOGLEAPIS=github.com/google/googleapis@v0.0.0-20200324113624-36c0febd0fa7 +ENV GRPC_GATEWAY=github.com/grpc-ecosystem/grpc-gateway@v1.16.0 + +RUN go install ${GEN_VALIDATE} + +RUN go install github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway@v1.16.0 && \ + go install github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger@v1.16.0 && \ + go install google.golang.org/protobuf/cmd/protoc-gen-go@latest + +RUN go install go.unistack.org/protoc-gen-go-micro/v3@latest + +RUN go mod init proto +RUN go get ${GOOGLEAPIS} && \ + go get ${GRPC_GATEWAY} && \ + go get google.golang.org/grpc@v1.57.0 && \ + go get -u github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway && \ + go get -u github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2 && \ + go get google.golang.org/protobuf/cmd/protoc-gen-go && \ + go get go.unistack.org/micro-proto/v3@v3.3.1 + +CMD rm -rf go_generate && \ + protoc \ + --validate_out=lang=go:. \ + --go-micro_out=debug=true,components="micro|http":. \ + --go_out=. \ + --grpc-gateway_out=. \ + --proto_path=/go/pkg/mod/go.unistack.org/micro-proto/v3@v3.3.1 \ + -I=./ \ + -I=/usr/include \ + -I=/go/pkg/mod/${GEN_VALIDATE} \ + -I=/go/pkg/mod/${GOOGLEAPIS} \ + -I=/go/pkg/mod/${GRPC_GATEWAY} \ + ./*.proto diff --git a/proto/docker_generate/Makefile b/proto/docker_generate/Makefile new file mode 100644 index 0000000..cac80f5 --- /dev/null +++ b/proto/docker_generate/Makefile @@ -0,0 +1,7 @@ +#New version of proto Makefile and Dockerfile can be found +#at https://qcm-git.mbrd.ru/service-platform/examples/makefile + +.PHONY: proto +proto: + docker build -t proto:latest . + docker run --rm --name=proto -v `pwd`:/build proto:latest \ No newline at end of file -- 2.45.2 From 89522f28da4c608d4fd80ddd7c6814ae114a937f Mon Sep 17 00:00:00 2001 From: Evstigneev Denis Date: Thu, 10 Aug 2023 13:05:17 +0300 Subject: [PATCH 03/16] add validate req fields --- proto/dashboard.proto | 19 +- proto/generate.sh | 4 +- proto/go_generate/dashboard.pb.go | 266 ++++++++++------- proto/go_generate/dashboard.pb.validate.go | 328 ++++++++++++++++----- proto/micro/dashboard_micro.pb.go | 4 +- proto/micro/dashboard_micro_http.pb.go | 12 +- storage/postgres/storage.go | 4 +- 7 files changed, 447 insertions(+), 190 deletions(-) diff --git a/proto/dashboard.proto b/proto/dashboard.proto index aceec1e..ac9de8d 100644 --- a/proto/dashboard.proto +++ b/proto/dashboard.proto @@ -5,10 +5,11 @@ package proto; option go_package = "go.unistack.org/unistack-org/pkgdash/proto/go_generate;go_generate"; import "validate/validate.proto"; +import "google/protobuf/wrappers.proto"; service DashboardService { rpc ListPackage(ListPackageReq) returns (ListPackageRsp) {}; - rpc UpdateInfo(UpdateInfoPackageRsp) returns (UpdateInfoPackageReq) {}; + rpc UpdatePackage(UpdatePackageRsp) returns (UpdatePackageReq) {}; rpc AddComment(AddCommentRsp) returns (AddCommentReq) {}; rpc AddPackage(AddPackageRsp) returns (AddPackageReq) {}; }; @@ -60,15 +61,19 @@ message ListPackageRsp{ repeated Package packages = 1; } -message UpdateInfoPackageRsp { - uint64 id = 1 [(validate.rules).uint64.gt = 0]; +message UpdatePackageRsp { + google.protobuf.UInt64Value id = 1 [(validate.rules).message.required = true]; + google.protobuf.StringValue name = 2 [(validate.rules).message.required = true]; + google.protobuf.StringValue url = 3 [(validate.rules).message.required = true]; + repeated uint64 modules = 4 ; + repeated uint64 issues = 5 ; } -message UpdateInfoPackageReq { +message UpdatePackageReq { uint64 id = 1 [(validate.rules).uint64.gt = 0]; } message AddCommentRsp { - uint64 idPackage = 1 [(validate.rules).uint64.gt = 0]; + google.protobuf.UInt64Value idPackage = 1 [(validate.rules).message.required = true]; string text = 2; } @@ -77,8 +82,8 @@ message AddCommentReq { } message AddPackageRsp { - string name = 1 [(validate.rules).string.min_len = 1]; - string url = 2 [(validate.rules).string.min_len = 1]; + google.protobuf.StringValue name = 1 [(validate.rules).message.required = true]; + google.protobuf.StringValue url = 2 [(validate.rules).message.required = true]; repeated uint64 modules = 3; } message AddPackageReq{} \ No newline at end of file diff --git a/proto/generate.sh b/proto/generate.sh index bc9a3c2..d841b96 100755 --- a/proto/generate.sh +++ b/proto/generate.sh @@ -8,7 +8,7 @@ --validate_out=paths=source_relative,lang=go:go_generate " -find . -not \( -name "*.sh" -or -name "*.proto" -or -name "generate.go" \) -delete +find . -not \( -name "*.sh" -or -name "*.proto" -or -name "generate.go" -or -name "Dockerfile" -or -name "Makefile" \) -delete mkdir -p micro go_generate && \ protoc -I. $PROTO_ARGS ./*.proto || \ -find . -not \( -name "*.sh" -or -name "*.proto" -or -name "generate.go" \) -delete \ No newline at end of file +find . -not \( -name "*.sh" -or -name "*.proto" -or -name "generate.go" -or -name "Dockerfile" -or -name "Makefile" \) -delete \ No newline at end of file diff --git a/proto/go_generate/dashboard.pb.go b/proto/go_generate/dashboard.pb.go index 269862a..17a613c 100644 --- a/proto/go_generate/dashboard.pb.go +++ b/proto/go_generate/dashboard.pb.go @@ -10,6 +10,7 @@ import ( _ "github.com/envoyproxy/protoc-gen-validate/validate" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" reflect "reflect" sync "sync" ) @@ -532,16 +533,20 @@ func (x *ListPackageRsp) GetPackages() []*Package { return nil } -type UpdateInfoPackageRsp struct { +type UpdatePackageRsp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Id *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Url *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty"` + Modules []uint64 `protobuf:"varint,4,rep,packed,name=modules,proto3" json:"modules,omitempty"` + Issues []uint64 `protobuf:"varint,5,rep,packed,name=issues,proto3" json:"issues,omitempty"` } -func (x *UpdateInfoPackageRsp) Reset() { - *x = UpdateInfoPackageRsp{} +func (x *UpdatePackageRsp) Reset() { + *x = UpdatePackageRsp{} if protoimpl.UnsafeEnabled { mi := &file_dashboard_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -549,13 +554,13 @@ func (x *UpdateInfoPackageRsp) Reset() { } } -func (x *UpdateInfoPackageRsp) String() string { +func (x *UpdatePackageRsp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpdateInfoPackageRsp) ProtoMessage() {} +func (*UpdatePackageRsp) ProtoMessage() {} -func (x *UpdateInfoPackageRsp) ProtoReflect() protoreflect.Message { +func (x *UpdatePackageRsp) ProtoReflect() protoreflect.Message { mi := &file_dashboard_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -567,19 +572,47 @@ func (x *UpdateInfoPackageRsp) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdateInfoPackageRsp.ProtoReflect.Descriptor instead. -func (*UpdateInfoPackageRsp) Descriptor() ([]byte, []int) { +// Deprecated: Use UpdatePackageRsp.ProtoReflect.Descriptor instead. +func (*UpdatePackageRsp) Descriptor() ([]byte, []int) { return file_dashboard_proto_rawDescGZIP(), []int{8} } -func (x *UpdateInfoPackageRsp) GetId() uint64 { +func (x *UpdatePackageRsp) GetId() *wrapperspb.UInt64Value { if x != nil { return x.Id } - return 0 + return nil } -type UpdateInfoPackageReq struct { +func (x *UpdatePackageRsp) GetName() *wrapperspb.StringValue { + if x != nil { + return x.Name + } + return nil +} + +func (x *UpdatePackageRsp) GetUrl() *wrapperspb.StringValue { + if x != nil { + return x.Url + } + return nil +} + +func (x *UpdatePackageRsp) GetModules() []uint64 { + if x != nil { + return x.Modules + } + return nil +} + +func (x *UpdatePackageRsp) GetIssues() []uint64 { + if x != nil { + return x.Issues + } + return nil +} + +type UpdatePackageReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -587,8 +620,8 @@ type UpdateInfoPackageReq struct { Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` } -func (x *UpdateInfoPackageReq) Reset() { - *x = UpdateInfoPackageReq{} +func (x *UpdatePackageReq) Reset() { + *x = UpdatePackageReq{} if protoimpl.UnsafeEnabled { mi := &file_dashboard_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -596,13 +629,13 @@ func (x *UpdateInfoPackageReq) Reset() { } } -func (x *UpdateInfoPackageReq) String() string { +func (x *UpdatePackageReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpdateInfoPackageReq) ProtoMessage() {} +func (*UpdatePackageReq) ProtoMessage() {} -func (x *UpdateInfoPackageReq) ProtoReflect() protoreflect.Message { +func (x *UpdatePackageReq) ProtoReflect() protoreflect.Message { mi := &file_dashboard_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -614,12 +647,12 @@ func (x *UpdateInfoPackageReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdateInfoPackageReq.ProtoReflect.Descriptor instead. -func (*UpdateInfoPackageReq) Descriptor() ([]byte, []int) { +// Deprecated: Use UpdatePackageReq.ProtoReflect.Descriptor instead. +func (*UpdatePackageReq) Descriptor() ([]byte, []int) { return file_dashboard_proto_rawDescGZIP(), []int{9} } -func (x *UpdateInfoPackageReq) GetId() uint64 { +func (x *UpdatePackageReq) GetId() uint64 { if x != nil { return x.Id } @@ -631,8 +664,8 @@ type AddCommentRsp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - IdPackage uint64 `protobuf:"varint,1,opt,name=idPackage,proto3" json:"idPackage,omitempty"` - Text string `protobuf:"bytes,2,opt,name=text,proto3" json:"text,omitempty"` + IdPackage *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=idPackage,proto3" json:"idPackage,omitempty"` + Text string `protobuf:"bytes,2,opt,name=text,proto3" json:"text,omitempty"` } func (x *AddCommentRsp) Reset() { @@ -667,11 +700,11 @@ func (*AddCommentRsp) Descriptor() ([]byte, []int) { return file_dashboard_proto_rawDescGZIP(), []int{10} } -func (x *AddCommentRsp) GetIdPackage() uint64 { +func (x *AddCommentRsp) GetIdPackage() *wrapperspb.UInt64Value { if x != nil { return x.IdPackage } - return 0 + return nil } func (x *AddCommentRsp) GetText() string { @@ -733,9 +766,9 @@ type AddPackageRsp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` - Modules []uint64 `protobuf:"varint,3,rep,packed,name=modules,proto3" json:"modules,omitempty"` + Name *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Url *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` + Modules []uint64 `protobuf:"varint,3,rep,packed,name=modules,proto3" json:"modules,omitempty"` } func (x *AddPackageRsp) Reset() { @@ -770,18 +803,18 @@ func (*AddPackageRsp) Descriptor() ([]byte, []int) { return file_dashboard_proto_rawDescGZIP(), []int{12} } -func (x *AddPackageRsp) GetName() string { +func (x *AddPackageRsp) GetName() *wrapperspb.StringValue { if x != nil { return x.Name } - return "" + return nil } -func (x *AddPackageRsp) GetUrl() string { +func (x *AddPackageRsp) GetUrl() *wrapperspb.StringValue { if x != nil { return x.Url } - return "" + return nil } func (x *AddPackageRsp) GetModules() []uint64 { @@ -835,6 +868,8 @@ var file_dashboard_proto_rawDesc = []byte{ 0x0a, 0x0f, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x2e, 0x0a, 0x08, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x73, 0x70, 0x12, 0x22, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, @@ -888,50 +923,67 @@ var file_dashboard_proto_rawDesc = []byte{ 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x12, 0x2a, 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x08, 0x70, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x73, 0x22, 0x2f, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, - 0x6e, 0x66, 0x6f, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x12, 0x17, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, - 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x22, 0x2f, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x17, + 0x6b, 0x61, 0x67, 0x65, 0x73, 0x22, 0xf2, 0x01, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x12, 0x36, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, + 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x75, + 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, + 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, + 0x28, 0x04, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x22, 0x2b, 0x0a, 0x10, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, - 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x22, 0x4a, 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x43, 0x6f, - 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x73, 0x70, 0x12, 0x25, 0x0a, 0x09, 0x69, 0x64, 0x50, 0x61, - 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, - 0x32, 0x02, 0x20, 0x00, 0x52, 0x09, 0x69, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, - 0x65, 0x78, 0x74, 0x22, 0x28, 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, - 0x74, 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x22, 0x61, 0x0a, - 0x0d, 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x12, 0x1b, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, - 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x03, 0x75, - 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, - 0x01, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, - 0x22, 0x0f, 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, - 0x71, 0x32, 0x93, 0x02, 0x0a, 0x10, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, - 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, - 0x52, 0x73, 0x70, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, - 0x1a, 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, - 0x6e, 0x66, 0x6f, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x22, 0x00, 0x12, - 0x3a, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, - 0x52, 0x73, 0x70, 0x1a, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x64, 0x64, 0x43, - 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x0a, 0x41, - 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x1a, - 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, - 0x67, 0x65, 0x52, 0x65, 0x71, 0x22, 0x00, 0x42, 0x44, 0x5a, 0x42, 0x67, 0x6f, 0x2e, 0x75, 0x6e, - 0x69, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x75, 0x6e, 0x69, 0x73, 0x74, - 0x61, 0x63, 0x6b, 0x2d, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x3b, 0x67, 0x6f, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x22, 0x69, 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x43, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x73, 0x70, 0x12, 0x44, 0x0a, 0x09, 0x69, 0x64, 0x50, 0x61, + 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, + 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x09, 0x69, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x12, + 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, + 0x78, 0x74, 0x22, 0x28, 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x22, 0x9f, 0x01, 0x0a, + 0x0d, 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x12, 0x3a, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, + 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x03, 0x75, 0x72, + 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, + 0x03, 0x75, 0x72, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x22, 0x0f, + 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x32, + 0x8e, 0x02, 0x0a, 0x10, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, + 0x61, 0x67, 0x65, 0x12, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, + 0x70, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, + 0x6b, 0x61, 0x67, 0x65, 0x12, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x1a, 0x17, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, + 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x43, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, + 0x64, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x73, 0x70, 0x1a, 0x14, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, + 0x65, 0x71, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, + 0x67, 0x65, 0x12, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x61, + 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x1a, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x22, 0x00, + 0x42, 0x44, 0x5a, 0x42, 0x67, 0x6f, 0x2e, 0x75, 0x6e, 0x69, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, + 0x6f, 0x72, 0x67, 0x2f, 0x75, 0x6e, 0x69, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2d, 0x6f, 0x72, 0x67, + 0x2f, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, + 0x6f, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x3b, 0x67, 0x6f, 0x5f, 0x67, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -948,39 +1000,47 @@ func file_dashboard_proto_rawDescGZIP() []byte { var file_dashboard_proto_msgTypes = make([]protoimpl.MessageInfo, 14) var file_dashboard_proto_goTypes = []interface{}{ - (*ErrorRsp)(nil), // 0: proto.ErrorRsp - (*Error)(nil), // 1: proto.Error - (*Package)(nil), // 2: proto.Package - (*Module)(nil), // 3: proto.Module - (*Issue)(nil), // 4: proto.Issue - (*Comment)(nil), // 5: proto.Comment - (*ListPackageReq)(nil), // 6: proto.ListPackageReq - (*ListPackageRsp)(nil), // 7: proto.ListPackageRsp - (*UpdateInfoPackageRsp)(nil), // 8: proto.UpdateInfoPackageRsp - (*UpdateInfoPackageReq)(nil), // 9: proto.UpdateInfoPackageReq - (*AddCommentRsp)(nil), // 10: proto.AddCommentRsp - (*AddCommentReq)(nil), // 11: proto.AddCommentReq - (*AddPackageRsp)(nil), // 12: proto.AddPackageRsp - (*AddPackageReq)(nil), // 13: proto.AddPackageReq + (*ErrorRsp)(nil), // 0: proto.ErrorRsp + (*Error)(nil), // 1: proto.Error + (*Package)(nil), // 2: proto.Package + (*Module)(nil), // 3: proto.Module + (*Issue)(nil), // 4: proto.Issue + (*Comment)(nil), // 5: proto.Comment + (*ListPackageReq)(nil), // 6: proto.ListPackageReq + (*ListPackageRsp)(nil), // 7: proto.ListPackageRsp + (*UpdatePackageRsp)(nil), // 8: proto.UpdatePackageRsp + (*UpdatePackageReq)(nil), // 9: proto.UpdatePackageReq + (*AddCommentRsp)(nil), // 10: proto.AddCommentRsp + (*AddCommentReq)(nil), // 11: proto.AddCommentReq + (*AddPackageRsp)(nil), // 12: proto.AddPackageRsp + (*AddPackageReq)(nil), // 13: proto.AddPackageReq + (*wrapperspb.UInt64Value)(nil), // 14: google.protobuf.UInt64Value + (*wrapperspb.StringValue)(nil), // 15: google.protobuf.StringValue } var file_dashboard_proto_depIdxs = []int32{ 1, // 0: proto.ErrorRsp.error:type_name -> proto.Error 3, // 1: proto.Package.modules:type_name -> proto.Module 4, // 2: proto.Package.issues:type_name -> proto.Issue 2, // 3: proto.ListPackageRsp.packages:type_name -> proto.Package - 6, // 4: proto.DashboardService.ListPackage:input_type -> proto.ListPackageReq - 8, // 5: proto.DashboardService.UpdateInfo:input_type -> proto.UpdateInfoPackageRsp - 10, // 6: proto.DashboardService.AddComment:input_type -> proto.AddCommentRsp - 12, // 7: proto.DashboardService.AddPackage:input_type -> proto.AddPackageRsp - 7, // 8: proto.DashboardService.ListPackage:output_type -> proto.ListPackageRsp - 9, // 9: proto.DashboardService.UpdateInfo:output_type -> proto.UpdateInfoPackageReq - 11, // 10: proto.DashboardService.AddComment:output_type -> proto.AddCommentReq - 13, // 11: proto.DashboardService.AddPackage:output_type -> proto.AddPackageReq - 8, // [8:12] is the sub-list for method output_type - 4, // [4:8] is the sub-list for method input_type - 4, // [4:4] is the sub-list for extension type_name - 4, // [4:4] is the sub-list for extension extendee - 0, // [0:4] is the sub-list for field type_name + 14, // 4: proto.UpdatePackageRsp.id:type_name -> google.protobuf.UInt64Value + 15, // 5: proto.UpdatePackageRsp.name:type_name -> google.protobuf.StringValue + 15, // 6: proto.UpdatePackageRsp.url:type_name -> google.protobuf.StringValue + 14, // 7: proto.AddCommentRsp.idPackage:type_name -> google.protobuf.UInt64Value + 15, // 8: proto.AddPackageRsp.name:type_name -> google.protobuf.StringValue + 15, // 9: proto.AddPackageRsp.url:type_name -> google.protobuf.StringValue + 6, // 10: proto.DashboardService.ListPackage:input_type -> proto.ListPackageReq + 8, // 11: proto.DashboardService.UpdatePackage:input_type -> proto.UpdatePackageRsp + 10, // 12: proto.DashboardService.AddComment:input_type -> proto.AddCommentRsp + 12, // 13: proto.DashboardService.AddPackage:input_type -> proto.AddPackageRsp + 7, // 14: proto.DashboardService.ListPackage:output_type -> proto.ListPackageRsp + 9, // 15: proto.DashboardService.UpdatePackage:output_type -> proto.UpdatePackageReq + 11, // 16: proto.DashboardService.AddComment:output_type -> proto.AddCommentReq + 13, // 17: proto.DashboardService.AddPackage:output_type -> proto.AddPackageReq + 14, // [14:18] is the sub-list for method output_type + 10, // [10:14] is the sub-list for method input_type + 10, // [10:10] is the sub-list for extension type_name + 10, // [10:10] is the sub-list for extension extendee + 0, // [0:10] is the sub-list for field type_name } func init() { file_dashboard_proto_init() } @@ -1086,7 +1146,7 @@ func file_dashboard_proto_init() { } } file_dashboard_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateInfoPackageRsp); i { + switch v := v.(*UpdatePackageRsp); i { case 0: return &v.state case 1: @@ -1098,7 +1158,7 @@ func file_dashboard_proto_init() { } } file_dashboard_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateInfoPackageReq); i { + switch v := v.(*UpdatePackageReq); i { case 0: return &v.state case 1: diff --git a/proto/go_generate/dashboard.pb.validate.go b/proto/go_generate/dashboard.pb.validate.go index 471e6d4..5ff836e 100644 --- a/proto/go_generate/dashboard.pb.validate.go +++ b/proto/go_generate/dashboard.pb.validate.go @@ -1130,32 +1130,32 @@ var _ interface { ErrorName() string } = ListPackageRspValidationError{} -// Validate checks the field values on UpdateInfoPackageRsp with the rules -// defined in the proto definition for this message. If any rules are -// violated, the first error encountered is returned, or nil if there are no violations. -func (m *UpdateInfoPackageRsp) Validate() error { +// Validate checks the field values on UpdatePackageRsp with the rules defined +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. +func (m *UpdatePackageRsp) Validate() error { return m.validate(false) } -// ValidateAll checks the field values on UpdateInfoPackageRsp with the rules +// ValidateAll checks the field values on UpdatePackageRsp with the rules // defined in the proto definition for this message. If any rules are // violated, the result is a list of violation errors wrapped in -// UpdateInfoPackageRspMultiError, or nil if none found. -func (m *UpdateInfoPackageRsp) ValidateAll() error { +// UpdatePackageRspMultiError, or nil if none found. +func (m *UpdatePackageRsp) ValidateAll() error { return m.validate(true) } -func (m *UpdateInfoPackageRsp) validate(all bool) error { +func (m *UpdatePackageRsp) validate(all bool) error { if m == nil { return nil } var errors []error - if m.GetId() <= 0 { - err := UpdateInfoPackageRspValidationError{ + if m.GetId() == nil { + err := UpdatePackageRspValidationError{ field: "Id", - reason: "value must be greater than 0", + reason: "value is required", } if !all { return err @@ -1163,20 +1163,129 @@ func (m *UpdateInfoPackageRsp) validate(all bool) error { errors = append(errors, err) } + if all { + switch v := interface{}(m.GetId()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdatePackageRspValidationError{ + field: "Id", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdatePackageRspValidationError{ + field: "Id", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetId()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return UpdatePackageRspValidationError{ + field: "Id", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if m.GetName() == nil { + err := UpdatePackageRspValidationError{ + field: "Name", + reason: "value is required", + } + if !all { + return err + } + errors = append(errors, err) + } + + if all { + switch v := interface{}(m.GetName()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdatePackageRspValidationError{ + field: "Name", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdatePackageRspValidationError{ + field: "Name", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetName()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return UpdatePackageRspValidationError{ + field: "Name", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if m.GetUrl() == nil { + err := UpdatePackageRspValidationError{ + field: "Url", + reason: "value is required", + } + if !all { + return err + } + errors = append(errors, err) + } + + if all { + switch v := interface{}(m.GetUrl()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdatePackageRspValidationError{ + field: "Url", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdatePackageRspValidationError{ + field: "Url", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetUrl()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return UpdatePackageRspValidationError{ + field: "Url", + reason: "embedded message failed validation", + cause: err, + } + } + } + if len(errors) > 0 { - return UpdateInfoPackageRspMultiError(errors) + return UpdatePackageRspMultiError(errors) } return nil } -// UpdateInfoPackageRspMultiError is an error wrapping multiple validation -// errors returned by UpdateInfoPackageRsp.ValidateAll() if the designated -// constraints aren't met. -type UpdateInfoPackageRspMultiError []error +// UpdatePackageRspMultiError is an error wrapping multiple validation errors +// returned by UpdatePackageRsp.ValidateAll() if the designated constraints +// aren't met. +type UpdatePackageRspMultiError []error // Error returns a concatenation of all the error messages it wraps. -func (m UpdateInfoPackageRspMultiError) Error() string { +func (m UpdatePackageRspMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) @@ -1185,11 +1294,11 @@ func (m UpdateInfoPackageRspMultiError) Error() string { } // AllErrors returns a list of validation violation errors. -func (m UpdateInfoPackageRspMultiError) AllErrors() []error { return m } +func (m UpdatePackageRspMultiError) AllErrors() []error { return m } -// UpdateInfoPackageRspValidationError is the validation error returned by -// UpdateInfoPackageRsp.Validate if the designated constraints aren't met. -type UpdateInfoPackageRspValidationError struct { +// UpdatePackageRspValidationError is the validation error returned by +// UpdatePackageRsp.Validate if the designated constraints aren't met. +type UpdatePackageRspValidationError struct { field string reason string cause error @@ -1197,24 +1306,22 @@ type UpdateInfoPackageRspValidationError struct { } // Field function returns field value. -func (e UpdateInfoPackageRspValidationError) Field() string { return e.field } +func (e UpdatePackageRspValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e UpdateInfoPackageRspValidationError) Reason() string { return e.reason } +func (e UpdatePackageRspValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e UpdateInfoPackageRspValidationError) Cause() error { return e.cause } +func (e UpdatePackageRspValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e UpdateInfoPackageRspValidationError) Key() bool { return e.key } +func (e UpdatePackageRspValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e UpdateInfoPackageRspValidationError) ErrorName() string { - return "UpdateInfoPackageRspValidationError" -} +func (e UpdatePackageRspValidationError) ErrorName() string { return "UpdatePackageRspValidationError" } // Error satisfies the builtin error interface -func (e UpdateInfoPackageRspValidationError) Error() string { +func (e UpdatePackageRspValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -1226,14 +1333,14 @@ func (e UpdateInfoPackageRspValidationError) Error() string { } return fmt.Sprintf( - "invalid %sUpdateInfoPackageRsp.%s: %s%s", + "invalid %sUpdatePackageRsp.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = UpdateInfoPackageRspValidationError{} +var _ error = UpdatePackageRspValidationError{} var _ interface { Field() string @@ -1241,24 +1348,24 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = UpdateInfoPackageRspValidationError{} +} = UpdatePackageRspValidationError{} -// Validate checks the field values on UpdateInfoPackageReq with the rules -// defined in the proto definition for this message. If any rules are -// violated, the first error encountered is returned, or nil if there are no violations. -func (m *UpdateInfoPackageReq) Validate() error { +// Validate checks the field values on UpdatePackageReq with the rules defined +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. +func (m *UpdatePackageReq) Validate() error { return m.validate(false) } -// ValidateAll checks the field values on UpdateInfoPackageReq with the rules +// ValidateAll checks the field values on UpdatePackageReq with the rules // defined in the proto definition for this message. If any rules are // violated, the result is a list of violation errors wrapped in -// UpdateInfoPackageReqMultiError, or nil if none found. -func (m *UpdateInfoPackageReq) ValidateAll() error { +// UpdatePackageReqMultiError, or nil if none found. +func (m *UpdatePackageReq) ValidateAll() error { return m.validate(true) } -func (m *UpdateInfoPackageReq) validate(all bool) error { +func (m *UpdatePackageReq) validate(all bool) error { if m == nil { return nil } @@ -1266,7 +1373,7 @@ func (m *UpdateInfoPackageReq) validate(all bool) error { var errors []error if m.GetId() <= 0 { - err := UpdateInfoPackageReqValidationError{ + err := UpdatePackageReqValidationError{ field: "Id", reason: "value must be greater than 0", } @@ -1277,19 +1384,19 @@ func (m *UpdateInfoPackageReq) validate(all bool) error { } if len(errors) > 0 { - return UpdateInfoPackageReqMultiError(errors) + return UpdatePackageReqMultiError(errors) } return nil } -// UpdateInfoPackageReqMultiError is an error wrapping multiple validation -// errors returned by UpdateInfoPackageReq.ValidateAll() if the designated -// constraints aren't met. -type UpdateInfoPackageReqMultiError []error +// UpdatePackageReqMultiError is an error wrapping multiple validation errors +// returned by UpdatePackageReq.ValidateAll() if the designated constraints +// aren't met. +type UpdatePackageReqMultiError []error // Error returns a concatenation of all the error messages it wraps. -func (m UpdateInfoPackageReqMultiError) Error() string { +func (m UpdatePackageReqMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) @@ -1298,11 +1405,11 @@ func (m UpdateInfoPackageReqMultiError) Error() string { } // AllErrors returns a list of validation violation errors. -func (m UpdateInfoPackageReqMultiError) AllErrors() []error { return m } +func (m UpdatePackageReqMultiError) AllErrors() []error { return m } -// UpdateInfoPackageReqValidationError is the validation error returned by -// UpdateInfoPackageReq.Validate if the designated constraints aren't met. -type UpdateInfoPackageReqValidationError struct { +// UpdatePackageReqValidationError is the validation error returned by +// UpdatePackageReq.Validate if the designated constraints aren't met. +type UpdatePackageReqValidationError struct { field string reason string cause error @@ -1310,24 +1417,22 @@ type UpdateInfoPackageReqValidationError struct { } // Field function returns field value. -func (e UpdateInfoPackageReqValidationError) Field() string { return e.field } +func (e UpdatePackageReqValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e UpdateInfoPackageReqValidationError) Reason() string { return e.reason } +func (e UpdatePackageReqValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e UpdateInfoPackageReqValidationError) Cause() error { return e.cause } +func (e UpdatePackageReqValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e UpdateInfoPackageReqValidationError) Key() bool { return e.key } +func (e UpdatePackageReqValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e UpdateInfoPackageReqValidationError) ErrorName() string { - return "UpdateInfoPackageReqValidationError" -} +func (e UpdatePackageReqValidationError) ErrorName() string { return "UpdatePackageReqValidationError" } // Error satisfies the builtin error interface -func (e UpdateInfoPackageReqValidationError) Error() string { +func (e UpdatePackageReqValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -1339,14 +1444,14 @@ func (e UpdateInfoPackageReqValidationError) Error() string { } return fmt.Sprintf( - "invalid %sUpdateInfoPackageReq.%s: %s%s", + "invalid %sUpdatePackageReq.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = UpdateInfoPackageReqValidationError{} +var _ error = UpdatePackageReqValidationError{} var _ interface { Field() string @@ -1354,7 +1459,7 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = UpdateInfoPackageReqValidationError{} +} = UpdatePackageReqValidationError{} // Validate checks the field values on AddCommentRsp with the rules defined in // the proto definition for this message. If any rules are violated, the first @@ -1378,10 +1483,10 @@ func (m *AddCommentRsp) validate(all bool) error { var errors []error - if m.GetIdPackage() <= 0 { + if m.GetIdPackage() == nil { err := AddCommentRspValidationError{ field: "IdPackage", - reason: "value must be greater than 0", + reason: "value is required", } if !all { return err @@ -1389,6 +1494,35 @@ func (m *AddCommentRsp) validate(all bool) error { errors = append(errors, err) } + if all { + switch v := interface{}(m.GetIdPackage()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, AddCommentRspValidationError{ + field: "IdPackage", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, AddCommentRspValidationError{ + field: "IdPackage", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetIdPackage()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return AddCommentRspValidationError{ + field: "IdPackage", + reason: "embedded message failed validation", + cause: err, + } + } + } + // no validation rules for Text if len(errors) > 0 { @@ -1602,10 +1736,10 @@ func (m *AddPackageRsp) validate(all bool) error { var errors []error - if utf8.RuneCountInString(m.GetName()) < 1 { + if m.GetName() == nil { err := AddPackageRspValidationError{ field: "Name", - reason: "value length must be at least 1 runes", + reason: "value is required", } if !all { return err @@ -1613,10 +1747,39 @@ func (m *AddPackageRsp) validate(all bool) error { errors = append(errors, err) } - if utf8.RuneCountInString(m.GetUrl()) < 1 { + if all { + switch v := interface{}(m.GetName()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, AddPackageRspValidationError{ + field: "Name", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, AddPackageRspValidationError{ + field: "Name", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetName()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return AddPackageRspValidationError{ + field: "Name", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if m.GetUrl() == nil { err := AddPackageRspValidationError{ field: "Url", - reason: "value length must be at least 1 runes", + reason: "value is required", } if !all { return err @@ -1624,6 +1787,35 @@ func (m *AddPackageRsp) validate(all bool) error { errors = append(errors, err) } + if all { + switch v := interface{}(m.GetUrl()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, AddPackageRspValidationError{ + field: "Url", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, AddPackageRspValidationError{ + field: "Url", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetUrl()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return AddPackageRspValidationError{ + field: "Url", + reason: "embedded message failed validation", + cause: err, + } + } + } + if len(errors) > 0 { return AddPackageRspMultiError(errors) } diff --git a/proto/micro/dashboard_micro.pb.go b/proto/micro/dashboard_micro.pb.go index 4bcffa2..2120f79 100644 --- a/proto/micro/dashboard_micro.pb.go +++ b/proto/micro/dashboard_micro.pb.go @@ -22,14 +22,14 @@ var ( type DashboardServiceClient interface { ListPackage(ctx context.Context, req *go_generate.ListPackageReq, opts ...client.CallOption) (*go_generate.ListPackageRsp, error) - UpdateInfo(ctx context.Context, req *go_generate.UpdateInfoPackageRsp, opts ...client.CallOption) (*go_generate.UpdateInfoPackageReq, error) + UpdatePackage(ctx context.Context, req *go_generate.UpdatePackageRsp, opts ...client.CallOption) (*go_generate.UpdatePackageReq, error) AddComment(ctx context.Context, req *go_generate.AddCommentRsp, opts ...client.CallOption) (*go_generate.AddCommentReq, error) AddPackage(ctx context.Context, req *go_generate.AddPackageRsp, opts ...client.CallOption) (*go_generate.AddPackageReq, error) } type DashboardServiceServer interface { ListPackage(ctx context.Context, req *go_generate.ListPackageReq, rsp *go_generate.ListPackageRsp) error - UpdateInfo(ctx context.Context, req *go_generate.UpdateInfoPackageRsp, rsp *go_generate.UpdateInfoPackageReq) error + UpdatePackage(ctx context.Context, req *go_generate.UpdatePackageRsp, rsp *go_generate.UpdatePackageReq) error AddComment(ctx context.Context, req *go_generate.AddCommentRsp, rsp *go_generate.AddCommentReq) error AddPackage(ctx context.Context, req *go_generate.AddPackageRsp, rsp *go_generate.AddPackageReq) error } diff --git a/proto/micro/dashboard_micro_http.pb.go b/proto/micro/dashboard_micro_http.pb.go index 6d1cc4d..0db14fe 100644 --- a/proto/micro/dashboard_micro_http.pb.go +++ b/proto/micro/dashboard_micro_http.pb.go @@ -31,9 +31,9 @@ func (c *dashboardServiceClient) ListPackage(ctx context.Context, req *go_genera return rsp, nil } -func (c *dashboardServiceClient) UpdateInfo(ctx context.Context, req *go_generate.UpdateInfoPackageRsp, opts ...client.CallOption) (*go_generate.UpdateInfoPackageReq, error) { - rsp := &go_generate.UpdateInfoPackageReq{} - err := c.c.Call(ctx, c.c.NewRequest(c.name, "DashboardService.UpdateInfo", req), rsp, opts...) +func (c *dashboardServiceClient) UpdatePackage(ctx context.Context, req *go_generate.UpdatePackageRsp, opts ...client.CallOption) (*go_generate.UpdatePackageReq, error) { + rsp := &go_generate.UpdatePackageReq{} + err := c.c.Call(ctx, c.c.NewRequest(c.name, "DashboardService.UpdatePackage", req), rsp, opts...) if err != nil { return nil, err } @@ -66,8 +66,8 @@ func (h *dashboardServiceServer) ListPackage(ctx context.Context, req *go_genera return h.DashboardServiceServer.ListPackage(ctx, req, rsp) } -func (h *dashboardServiceServer) UpdateInfo(ctx context.Context, req *go_generate.UpdateInfoPackageRsp, rsp *go_generate.UpdateInfoPackageReq) error { - return h.DashboardServiceServer.UpdateInfo(ctx, req, rsp) +func (h *dashboardServiceServer) UpdatePackage(ctx context.Context, req *go_generate.UpdatePackageRsp, rsp *go_generate.UpdatePackageReq) error { + return h.DashboardServiceServer.UpdatePackage(ctx, req, rsp) } func (h *dashboardServiceServer) AddComment(ctx context.Context, req *go_generate.AddCommentRsp, rsp *go_generate.AddCommentReq) error { @@ -81,7 +81,7 @@ func (h *dashboardServiceServer) AddPackage(ctx context.Context, req *go_generat func RegisterDashboardServiceServer(s server.Server, sh DashboardServiceServer, opts ...server.HandlerOption) error { type dashboardService interface { ListPackage(ctx context.Context, req *go_generate.ListPackageReq, rsp *go_generate.ListPackageRsp) error - UpdateInfo(ctx context.Context, req *go_generate.UpdateInfoPackageRsp, rsp *go_generate.UpdateInfoPackageReq) error + UpdatePackage(ctx context.Context, req *go_generate.UpdatePackageRsp, rsp *go_generate.UpdatePackageReq) error AddComment(ctx context.Context, req *go_generate.AddCommentRsp, rsp *go_generate.AddCommentReq) error AddPackage(ctx context.Context, req *go_generate.AddPackageRsp, rsp *go_generate.AddPackageReq) error } diff --git a/storage/postgres/storage.go b/storage/postgres/storage.go index 6e0a275..84685fe 100644 --- a/storage/postgres/storage.go +++ b/storage/postgres/storage.go @@ -132,7 +132,7 @@ func (s *Postgres) AddComment(ctx context.Context, rsp *pb.AddCommentRsp) error } }() - res, err := tx.ExecContext(ctx, queryAddComment, rsp.Text, rsp.IdPackage) + res, err := tx.ExecContext(ctx, queryAddComment, rsp.Text, rsp.IdPackage.Value) if err != nil { return err } @@ -162,7 +162,7 @@ func (s *Postgres) AddPackage(ctx context.Context, rsp *pb.AddPackageRsp) error } }() - res, err := tx.ExecContext(ctx, queryAddPackage, rsp.Name, rsp.Url, pq.Array(rsp.Modules)) + res, err := tx.ExecContext(ctx, queryAddPackage, rsp.Name.Value, rsp.Url.Value, pq.Array(rsp.Modules)) if err != nil { return err } -- 2.45.2 From a5a6c683a45c0a732e297dab158cc5a51f0b0f2e Mon Sep 17 00:00:00 2001 From: Evstigneev Denis Date: Thu, 10 Aug 2023 17:53:11 +0300 Subject: [PATCH 04/16] add worker with analyze go.mod(pref ver util) --- handler/handlers.go | 67 ++++-- main.go | 2 +- models/entities.go | 21 +- service/client_git/client.go | 218 ++++++++++++++++++ service/client_git/client_test.go | 49 ++++ service/service.go | 5 +- .../postgres/000001_init_schema.up.sql | 4 +- storage/postgres/quries.go | 5 + storage/postgres/storage.go | 60 +++++ storage/postgres/storage_test.go | 25 ++ storage/storage.go | 2 + 11 files changed, 428 insertions(+), 30 deletions(-) create mode 100644 service/client_git/client.go create mode 100644 service/client_git/client_test.go create mode 100644 storage/postgres/storage_test.go diff --git a/handler/handlers.go b/handler/handlers.go index d8a6695..0ce644b 100644 --- a/handler/handlers.go +++ b/handler/handlers.go @@ -2,16 +2,16 @@ package handler import ( "context" - "io" - "net/http" - cmsstorage "go.unistack.org/cms-service/storage" "go.unistack.org/micro/v3" "go.unistack.org/micro/v3/errors" "go.unistack.org/unistack-org/pkgdash/config" pb "go.unistack.org/unistack-org/pkgdash/proto/go_generate" + "go.unistack.org/unistack-org/pkgdash/service/client_git" "go.unistack.org/unistack-org/pkgdash/storage" "google.golang.org/protobuf/encoding/protojson" + "io" + "net/http" ) type Handler struct { @@ -21,6 +21,9 @@ type Handler struct { writer writer protojson.MarshalOptions protojson.UnmarshalOptions + + git client_git.Client + chanUrl chan *pb.AddPackageRsp } func (h *Handler) ListPackage(w http.ResponseWriter, r *http.Request) { @@ -42,12 +45,39 @@ func (h *Handler) ListPackage(w http.ResponseWriter, r *http.Request) { h.writer.Response(ctx, w, rsp) } -func (h *Handler) UpdateInfo(w http.ResponseWriter, r *http.Request) { +func (h *Handler) UpdatePackage(w http.ResponseWriter, r *http.Request) { ctx := r.Context() logger := h.svc.Logger() - logger.Debug(ctx, "Start UpdateInfo") + logger.Debug(ctx, "Start UpdatePackage") - // TODO + defer r.Body.Close() + all, err := io.ReadAll(r.Body) + if err != nil { + logger.Error(ctx, err) + h.writer.Response(ctx, w, NewInternalError(err)) + return + } + + rsp := new(pb.UpdatePackageRsp) + if err = h.Unmarshal(all, rsp); err != nil { + logger.Error(ctx, err) + h.writer.Response(ctx, w, NewUnmarshalError(err)) + return + } + + if err = rsp.Validate(); err != nil { + logger.Error(ctx, err) + h.writer.Response(ctx, w, NewValidationError(err)) + return + } + + if err = h.store.UpdatePackage(ctx, rsp); err != nil { + logger.Error(ctx, err) + h.writer.Response(ctx, w, NewInternalError(err)) + return + } + + logger.Debug(ctx, "Success finish UpdatePackage") } func (h *Handler) AddComment(w http.ResponseWriter, r *http.Request) { @@ -111,21 +141,24 @@ func (h *Handler) AddPackage(w http.ResponseWriter, r *http.Request) { return } - // TODO: - // need logic for add module from go.mod - // err := setModules(req) - - if err = h.store.AddPackage(ctx, req); err != nil { - logger.Error(ctx, err) - h.writer.Response(ctx, w, NewInternalError(err)) - return + if h.git.IsClose() { + logger.Error(ctx, "chan is closed") + } else { + h.chanUrl <- req } logger.Debug(ctx, "Success finish addPackage") } -func NewHandler(svc micro.Service, w writer) *Handler { - return &Handler{svc: svc, writer: w} +func NewHandler(svc micro.Service, w writer, client client_git.Client) *Handler { + h := &Handler{ + svc: svc, + writer: w, + git: client, + } + h.EmitUnpopulated = true + h.UseProtoNames = false + return h } func (h *Handler) Init(ctx context.Context) error { @@ -138,6 +171,8 @@ func (h *Handler) Init(ctx context.Context) error { return errors.New(config.ServiceName, "error init storage", 1) } + h.chanUrl = h.git.Run(ctx, st) + h.store = st return nil diff --git a/main.go b/main.go index 2961783..779e647 100644 --- a/main.go +++ b/main.go @@ -65,7 +65,7 @@ func main() { cloneOpts.Depth = 1 } - if err := cloneOpts.Validate(); err != nil { + if err = cloneOpts.Validate(); err != nil { logger.Fatal(ctx, err) } diff --git a/models/entities.go b/models/entities.go index b1a5ea4..9ec3f86 100644 --- a/models/entities.go +++ b/models/entities.go @@ -7,19 +7,20 @@ import ( ) type Package struct { - ID int64 `db:"id" json:"id"` // package id - Name string `db:"name" json:"name"` // service name, last component path - URL string `db:"url" json:"url"` // scm url - Modules []int64 `db:"modules" json:"modules"` // parsed go.mod modules - Issues []int64 `db:"issues" json:"issues,omitempty"` // issues list - Comments []int64 `db:"comments" json:"comments,omitempty"` + ID int64 `db:"id" json:"id"` // package id + Name string `db:"name" json:"name"` // service name, last component path + URL string `db:"url" json:"url"` // scm url + Modules []uint64 `db:"modules" json:"modules"` // parsed go.mod modules + Issues []int64 `db:"issues" json:"issues,omitempty"` // issues list + Comments []int64 `db:"comments" json:"comments,omitempty"` } type Module struct { - ID int64 `db:"id"` - Name string `db:"name"` // module name - Version string `db:"version"` // module - Package int64 `db:"package"` + ID int64 `db:"id"` + Name string `db:"name"` // module name + Version string `db:"version"` // module + Package int64 `db:"package"` + LastVersion string `db:"last_version"` } type Issue struct { diff --git a/service/client_git/client.go b/service/client_git/client.go new file mode 100644 index 0000000..664d221 --- /dev/null +++ b/service/client_git/client.go @@ -0,0 +1,218 @@ +package client_git + +import ( + "context" + "fmt" + "github.com/pkg/errors" + "go.unistack.org/unistack-org/pkgdash/internal" + "go.unistack.org/unistack-org/pkgdash/models" + "io" + "net/url" + "os" + "sort" + "strings" + + "github.com/go-git/go-git/v5" + "github.com/go-git/go-git/v5/plumbing/filemode" + "github.com/go-git/go-git/v5/plumbing/object" + "github.com/go-git/go-git/v5/storage/memory" + "go.unistack.org/micro/v3/logger" + pb "go.unistack.org/unistack-org/pkgdash/proto/go_generate" + "go.unistack.org/unistack-org/pkgdash/storage" + "golang.org/x/mod/modfile" + "golang.org/x/mod/module" +) + +type Client interface { + Run(ctx context.Context, st storage.Storage) chan *pb.AddPackageRsp + IsClose() bool + Done() <-chan struct{} +} + +type client struct { + worker chan *pb.AddPackageRsp + closed bool + lock chan struct{} +} + +func NewClient(cap uint) Client { + return &client{ + make(chan *pb.AddPackageRsp, cap), + false, + make(chan struct{}), + } +} + +func (c *client) Run(ctx context.Context, st storage.Storage) chan *pb.AddPackageRsp { + go func() { + defer close(c.worker) + for { + select { + case data := <-c.worker: + go func() { + runner(ctx, st, data) + }() + case <-ctx.Done(): + logger.Info(ctx, ctx.Err()) + return + } + } + }() + + return c.worker +} + +func (c *client) IsClose() bool { + return c.closed +} + +// Done for locked goroutine +func (c *client) Done() <-chan struct{} { + return c.lock +} + +func runner(ctx context.Context, st storage.Storage, rsp *pb.AddPackageRsp) { + modules, err := getGoModule(ctx, rsp.Url.Value) + if err != nil { + logger.Error(ctx, err) + return + } + + logger.Infof(ctx, "success get list mod", modules) + + if rsp.Modules, err = st.InsertButchModules(ctx, modules); err != nil { + logger.Error(ctx, err) + return + } + + if err = st.AddPackage(ctx, rsp); err != nil { + logger.Error(ctx, err) + } +} + +func getGoModule(ctx context.Context, gitUrl string) ([]models.Module, error) { + u, err := url.Parse(gitUrl) + if err != nil { + logger.Fatal(ctx, err) + } + + var rev string + if idx := strings.Index(u.Path, "@"); idx > 0 { + rev = u.Path[idx+1:] + } + + cloneOpts := &git.CloneOptions{ + URL: gitUrl, + Progress: os.Stdout, + } + + if len(rev) == 0 { + cloneOpts.SingleBranch = true + cloneOpts.Depth = 1 + } + + if err = cloneOpts.Validate(); err != nil { + return nil, err + } + + repo, err := git.CloneContext(ctx, memory.NewStorage(), nil, cloneOpts) + if err != nil { + return nil, err + } + + ref, err := repo.Head() + if err != nil { + return nil, fmt.Errorf("failed to get head: %v", err) + } + + commit, err := repo.CommitObject(ref.Hash()) + if err != nil { + return nil, fmt.Errorf("failed to get commit: %v", err) + } + + tree, err := commit.Tree() + if err != nil { + return nil, err + } + + unique := make(map[string]models.Module) + var mvs []module.Version + err = tree.Files().ForEach(func(file *object.File) error { + if file == nil { + err = errors.New("file pointer is nil") + logger.Error(ctx, err) + return err + } + + switch file.Mode { + case filemode.Regular: + if strings.HasSuffix(file.Name, "go.mod") { + if mvs, err = Direct(file); err != nil { + return err + } + for i := range mvs { + unique[mvs[i].Path] = models.Module{ + Name: mvs[i].Path, + Version: mvs[i].Version, + LastVersion: mvs[i].Version, + } + } + internal.Updates(internal.UpdateOptions{ + Pre: false, + Major: false, + Cached: false, + Modules: mvs, + OnUpdate: func(u internal.Update) { + if u.Err != nil { + logger.Errorf(ctx, "%s: failed: %v\n", u.Module.Path, u.Err) + } else { + val := unique[u.Module.Path] + val.LastVersion = u.Version + unique[u.Module.Path] = val + } + }, + }) + } + } + return nil + }) + + result := make([]models.Module, 0, len(unique)) + for _, v := range unique { + result = append(result, v) + } + + sort.Slice(result, func(i, j int) bool { + return result[i].Name < result[j].Name + }) + + return result, err +} + +func Direct(file *object.File) ([]module.Version, error) { + r, err := file.Reader() + if err != nil { + return nil, err + } + defer r.Close() + data, err := io.ReadAll(r) + if err != nil { + return nil, err + } + modfile, err := modfile.ParseLax("go.mod", data, nil) + if err != nil { + return nil, err + } + var mods []module.Version + for _, req := range modfile.Require { + // if !req.Indirect { + mods = append(mods, req.Mod) + //} + } + /* + sort.Slice(mods, func(i, j int) bool { + return mods[i].Path < mods[j].Path + }) + */ + return mods, nil +} diff --git a/service/client_git/client_test.go b/service/client_git/client_test.go new file mode 100644 index 0000000..f6b07c1 --- /dev/null +++ b/service/client_git/client_test.go @@ -0,0 +1,49 @@ +package client_git + +import ( + "context" + "database/sql" + "fmt" + pb "go.unistack.org/unistack-org/pkgdash/proto/go_generate" + "go.unistack.org/unistack-org/pkgdash/storage" + "go.unistack.org/unistack-org/pkgdash/storage/postgres" + "google.golang.org/protobuf/types/known/wrapperspb" + "testing" +) + +func TestClient(t *testing.T) { + dsn := fmt.Sprintf("user=%s password=%s host=%s port=%s dbname=%s sslmode=disable", "test", "123", "localhost", "5432", "postgres") + conn, err := sql.Open("postgres", dsn) + if err != nil { + t.Fatal(err) + } + defer conn.Close() + if err = conn.Ping(); err != nil { + t.Fatal(err) + } + + st, err := postgres.NewStorage(conn) + if err != nil { + t.Fatal(err) + } + + s, ok := st.(storage.Storage) + if !ok { + t.Fatal("typecast error") + } + + ctx, cancel := context.WithCancel(context.Background()) + _ = cancel + cli := NewClient(1) + + ch := cli.Run(ctx, s) + + data := &pb.AddPackageRsp{ + Name: wrapperspb.String("test"), + Url: wrapperspb.String("https://github.com/dantedenis/service_history.git"), + } + + ch <- data + + <-cli.Done() +} diff --git a/service/service.go b/service/service.go index b275939..a80be6d 100644 --- a/service/service.go +++ b/service/service.go @@ -6,6 +6,7 @@ import ( intcfg "go.unistack.org/unistack-org/pkgdash/config" "go.unistack.org/unistack-org/pkgdash/handler" "go.unistack.org/unistack-org/pkgdash/handler/encoders" + "go.unistack.org/unistack-org/pkgdash/service/client_git" "net/http" //pbmicro "go.unistack.org/unistack-org/pkgdash/proto/micro" @@ -53,7 +54,7 @@ func NewService(ctx context.Context) (micro.Service, error) { logger.Fatalf(ctx, "failed init writer: %v", err) } - h := handler.NewHandler(svc, writer) + h := handler.NewHandler(svc, writer, client_git.NewClient(5)) if err := svc.Init( micro.AfterStart(func(_ context.Context) error { @@ -128,7 +129,7 @@ func NewService(ctx context.Context) (micro.Service, error) { mux := http.NewServeMux() mux.HandleFunc("/listPackage", handler.Methods(http.MethodGet, h.ListPackage)) - mux.HandleFunc("/updateInfo", handler.Methods(http.MethodPost, h.UpdateInfo)) + mux.HandleFunc("/updateInfo", handler.Methods(http.MethodPost, h.UpdatePackage)) mux.HandleFunc("/addComment", handler.Methods(http.MethodPut, h.AddComment)) mux.HandleFunc("/addPackage", handler.Methods(http.MethodPost, h.AddPackage)) diff --git a/storage/migrations/postgres/000001_init_schema.up.sql b/storage/migrations/postgres/000001_init_schema.up.sql index a8ad351..2e7fdd1 100644 --- a/storage/migrations/postgres/000001_init_schema.up.sql +++ b/storage/migrations/postgres/000001_init_schema.up.sql @@ -14,7 +14,8 @@ create table if not exists comment ( create table if not exists module ( id serial not null unique primary key , name varchar not null , - version varchar not null + version varchar not null , + last_version varchar not null ); create table if not exists issue ( @@ -34,4 +35,5 @@ create table if not exists package ( comments integer[] default '{}'::integer[] ); +create unique index module_info on module(name, version); diff --git a/storage/postgres/quries.go b/storage/postgres/quries.go index ad6f232..aa0e3c8 100644 --- a/storage/postgres/quries.go +++ b/storage/postgres/quries.go @@ -19,5 +19,10 @@ update package set comments = array_append(comments, (select * from insert_comm) ` queryAddPackage = ` insert into package(name, url, modules) values ($1, $2, $3); +` + queryInsMsgGetIDs = ` +insert into module(name, version, last_version) values +%s +returning id; ` ) diff --git a/storage/postgres/storage.go b/storage/postgres/storage.go index 84685fe..81e62ff 100644 --- a/storage/postgres/storage.go +++ b/storage/postgres/storage.go @@ -5,7 +5,9 @@ import ( "database/sql" "embed" "errors" + "fmt" pb "go.unistack.org/unistack-org/pkgdash/proto/go_generate" + "strings" "github.com/golang-migrate/migrate/v4" mpgx "github.com/golang-migrate/migrate/v4/database/pgx" @@ -87,6 +89,10 @@ func (s *Postgres) MigrateDown() error { return nil } +func (s *Postgres) UpdatePackage(ctx context.Context, rsp *pb.UpdatePackageRsp) error { + panic("need implement") +} + func (s *Postgres) ListPackage(ctx context.Context) (models.ListPackage, error) { rows, err := s.db.QueryContext(ctx, queryListPackage) if err != nil { @@ -175,3 +181,57 @@ func (s *Postgres) AddPackage(ctx context.Context, rsp *pb.AddPackageRsp) error return err } + +func (s *Postgres) InsertButchModules(ctx context.Context, rsp []models.Module) ([]uint64, error) { + tx, err := s.db.BeginTx(ctx, nil) + if err != nil { + return nil, err + } + defer func() { + if err != nil { + if rollbackErr := tx.Rollback(); rollbackErr != nil { + logger.Errorf(ctx, "AddPackage: unable to rollback: %v", rollbackErr) + } + } else { + err = tx.Commit() + } + }() + + query := generateQuery(rsp) + + rows, err := tx.QueryContext(ctx, query) + if err != nil { + return nil, err + } + defer func() { + if err = rows.Close(); err != nil { + return + } + err = rows.Err() + }() + + result := make([]uint64, 0) + for rows.Next() { + tmp := uint64(0) + if err = rows.Scan(&tmp); err != nil { + return nil, err + } + + result = append(result, tmp) + } + + return result, err +} + +func generateQuery(rsp []models.Module) string { + const pattern = `%c('%s', '%s', '%s')` + build := strings.Builder{} + comma := ' ' + for i := range rsp { + str := fmt.Sprintf(pattern, comma, rsp[i].Name, rsp[i].Version, rsp[i].LastVersion) + build.WriteString(str) + comma = ',' + } + + return fmt.Sprintf(queryInsMsgGetIDs, build.String()) +} diff --git a/storage/postgres/storage_test.go b/storage/postgres/storage_test.go new file mode 100644 index 0000000..9f228b1 --- /dev/null +++ b/storage/postgres/storage_test.go @@ -0,0 +1,25 @@ +package postgres + +import ( + "fmt" + "go.unistack.org/unistack-org/pkgdash/models" + "testing" +) + +func TestGenerate(t *testing.T) { + m := []models.Module{ + { + 1, "test", "1.2.3", 2, "23.31", + }, + { + 1, "321test", "1.3", 4, "2111.31", + }, + { + 1, "testabcd", "1.2.3", 2, "153453.31", + }, + } + + str := generateQuery(m) + + fmt.Println(str) +} diff --git a/storage/storage.go b/storage/storage.go index 2833e6a..616cb8c 100644 --- a/storage/storage.go +++ b/storage/storage.go @@ -26,8 +26,10 @@ type Storage interface { cmsstorage.Migrator ListPackage(ctx context.Context) (models.ListPackage, error) + UpdatePackage(ctx context.Context, rsp *pb.UpdatePackageRsp) error AddComment(ctx context.Context, rsp *pb.AddCommentRsp) error AddPackage(ctx context.Context, rsp *pb.AddPackageRsp) error + InsertButchModules(ctx context.Context, rsp []models.Module) ([]uint64, error) } func NewStorage(name string, db *sql.DB) (interface{}, error) { -- 2.45.2 From 6eb76b1d151f55a34ac949ced75d3abae1cd6240 Mon Sep 17 00:00:00 2001 From: Evstigneev Denis Date: Thu, 10 Aug 2023 22:16:14 +0300 Subject: [PATCH 05/16] add sqlite --- .gitignore | 1 + go.mod | 1 + go.sum | 1 + handler/handlers.go | 11 +- service/client_git/client_test.go | 39 ++- service/service.go | 10 +- .../sqlite/000001_init_schema.down.sql | 5 + .../sqlite/000001_init_schema.up.sql | 38 +++ storage/sqlite/quries.go | 28 ++ storage/sqlite/storage.go | 239 ++++++++++++++++++ storage/storage.go | 2 + 11 files changed, 364 insertions(+), 11 deletions(-) create mode 100644 storage/migrations/sqlite/000001_init_schema.down.sql create mode 100644 storage/migrations/sqlite/000001_init_schema.up.sql create mode 100644 storage/sqlite/quries.go create mode 100644 storage/sqlite/storage.go diff --git a/.gitignore b/.gitignore index b55a950..9e82b91 100644 --- a/.gitignore +++ b/.gitignore @@ -27,3 +27,4 @@ bin/ tmp/ /pkgdash +*.sqlite diff --git a/go.mod b/go.mod index 6875102..5cda315 100644 --- a/go.mod +++ b/go.mod @@ -9,6 +9,7 @@ require ( github.com/google/uuid v1.3.0 github.com/jackc/pgtype v1.14.0 github.com/lib/pq v1.10.2 + github.com/mattn/go-sqlite3 v1.14.16 github.com/pkg/errors v0.9.1 go.unistack.org/cms-service v0.0.1 go.unistack.org/micro-client-http/v3 v3.9.3 diff --git a/go.sum b/go.sum index 874027e..5931b1c 100644 --- a/go.sum +++ b/go.sum @@ -747,6 +747,7 @@ github.com/mattn/go-shellwords v1.0.3/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vq github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/mattn/go-sqlite3 v1.14.16 h1:yOQRA0RpS5PFz/oikGwBEqvAWhWg5ufRz4ETLjwpU1Y= +github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= diff --git a/handler/handlers.go b/handler/handlers.go index 0ce644b..1021fdf 100644 --- a/handler/handlers.go +++ b/handler/handlers.go @@ -2,16 +2,17 @@ package handler import ( "context" + "io" + "net/http" + cmsstorage "go.unistack.org/cms-service/storage" "go.unistack.org/micro/v3" "go.unistack.org/micro/v3/errors" "go.unistack.org/unistack-org/pkgdash/config" pb "go.unistack.org/unistack-org/pkgdash/proto/go_generate" - "go.unistack.org/unistack-org/pkgdash/service/client_git" + cligit "go.unistack.org/unistack-org/pkgdash/service/client_git" "go.unistack.org/unistack-org/pkgdash/storage" "google.golang.org/protobuf/encoding/protojson" - "io" - "net/http" ) type Handler struct { @@ -22,7 +23,7 @@ type Handler struct { protojson.MarshalOptions protojson.UnmarshalOptions - git client_git.Client + git cligit.Client chanUrl chan *pb.AddPackageRsp } @@ -150,7 +151,7 @@ func (h *Handler) AddPackage(w http.ResponseWriter, r *http.Request) { logger.Debug(ctx, "Success finish addPackage") } -func NewHandler(svc micro.Service, w writer, client client_git.Client) *Handler { +func NewHandler(svc micro.Service, w writer, client cligit.Client) *Handler { h := &Handler{ svc: svc, writer: w, diff --git a/service/client_git/client_test.go b/service/client_git/client_test.go index f6b07c1..784685f 100644 --- a/service/client_git/client_test.go +++ b/service/client_git/client_test.go @@ -7,11 +7,12 @@ import ( pb "go.unistack.org/unistack-org/pkgdash/proto/go_generate" "go.unistack.org/unistack-org/pkgdash/storage" "go.unistack.org/unistack-org/pkgdash/storage/postgres" + "go.unistack.org/unistack-org/pkgdash/storage/sqlite" "google.golang.org/protobuf/types/known/wrapperspb" "testing" ) -func TestClient(t *testing.T) { +func TestClientPG(t *testing.T) { dsn := fmt.Sprintf("user=%s password=%s host=%s port=%s dbname=%s sslmode=disable", "test", "123", "localhost", "5432", "postgres") conn, err := sql.Open("postgres", dsn) if err != nil { @@ -47,3 +48,39 @@ func TestClient(t *testing.T) { <-cli.Done() } + +func TestClientLite(t *testing.T) { + conn, err := sql.Open("sqlite3", "../../identifier.sqlite") + if err != nil { + t.Fatal(err) + } + defer conn.Close() + if err = conn.Ping(); err != nil { + t.Fatal(err) + } + + st, err := sqlite.NewStorage(conn) + if err != nil { + t.Fatal(err) + } + + s, ok := st.(storage.Storage) + if !ok { + t.Fatal("typecast error") + } + + ctx, cancel := context.WithCancel(context.Background()) + _ = cancel + cli := NewClient(1) + + ch := cli.Run(ctx, s) + + data := &pb.AddPackageRsp{ + Name: wrapperspb.String("test"), + Url: wrapperspb.String("https://github.com/dantedenis/service_history.git"), + } + + ch <- data + + <-cli.Done() +} diff --git a/service/service.go b/service/service.go index a80be6d..6c9303c 100644 --- a/service/service.go +++ b/service/service.go @@ -56,26 +56,26 @@ func NewService(ctx context.Context) (micro.Service, error) { h := handler.NewHandler(svc, writer, client_git.NewClient(5)) - if err := svc.Init( + if err = svc.Init( micro.AfterStart(func(_ context.Context) error { return h.Init(svc.Options().Context) }), micro.BeforeStart(func(ctx context.Context) error { - if err := config.Load(ctx, cs, config.LoadOverride(true)); err != nil { + if err = config.Load(ctx, cs, config.LoadOverride(true)); err != nil { return err } - if err := config.Validate(ctx, cfg); err != nil { + if err = config.Validate(ctx, cfg); err != nil { return err } - if err := svc.Init( + if err = svc.Init( micro.Name(cfg.Service.Name), micro.Version(cfg.Service.Version), ); err != nil { return err } - if err := svc.Server("http").Init( + if err = svc.Server("http").Init( server.Address(cfg.App.Address), server.Name(cfg.Service.Name), server.Version(cfg.Service.Version), diff --git a/storage/migrations/sqlite/000001_init_schema.down.sql b/storage/migrations/sqlite/000001_init_schema.down.sql new file mode 100644 index 0000000..b9ce01f --- /dev/null +++ b/storage/migrations/sqlite/000001_init_schema.down.sql @@ -0,0 +1,5 @@ +drop table if exists dashboard ; +drop table if exists package ; +drop table if exists module ; +drop table if exists issue ; +drop table if exists comment; \ No newline at end of file diff --git a/storage/migrations/sqlite/000001_init_schema.up.sql b/storage/migrations/sqlite/000001_init_schema.up.sql new file mode 100644 index 0000000..8893211 --- /dev/null +++ b/storage/migrations/sqlite/000001_init_schema.up.sql @@ -0,0 +1,38 @@ +create table if not exists dashboard ( + id integer primary key autoincrement not null , + "uuid" uuid not null unique , + package integer[] default '{}' +); + +create table if not exists comment ( + id integer primary key autoincrement not null , + "text" text , + created timestamp not null default current_timestamp , + updated timestamp +); + +create table if not exists module ( + id integer primary key autoincrement not null , + name varchar not null , + version varchar not null , + last_version varchar not null +); + +create table if not exists issue ( + id serial not null unique primary key , + --package integer references package(id) , + modules integer[] default '[]', + status integer default 0 , + "desc" varchar +); + +create table if not exists package ( + id integer primary key autoincrement not null , + name varchar not null , + url varchar , + modules integer[] default '[]', + issues integer[] default '[]', + comments integer[] default '[]' +); + + diff --git a/storage/sqlite/quries.go b/storage/sqlite/quries.go new file mode 100644 index 0000000..df92c68 --- /dev/null +++ b/storage/sqlite/quries.go @@ -0,0 +1,28 @@ +package sqlite + +const ( + queryListPackage = ` +select + id, + name, + url, + comments + --modules, + --issues, + from package; +` + queryAddComment = ` +insert into comment(text) values ($1) ; +update package +set comments = json_insert(comments, '$[#]', ( select last_insert_rowid() as id from comment )) +where id = $2 ; +` + queryAddPackage = ` +insert into package(name, url, modules) values ($1, $2, $3); +` + queryInsMsgGetIDs = ` +insert into module(name, version, last_version) values +%s +returning id; +` +) diff --git a/storage/sqlite/storage.go b/storage/sqlite/storage.go new file mode 100644 index 0000000..3019b18 --- /dev/null +++ b/storage/sqlite/storage.go @@ -0,0 +1,239 @@ +package sqlite + +import ( + "context" + "database/sql" + "embed" + "errors" + "fmt" + "strings" + + _ "github.com/mattn/go-sqlite3" + + "github.com/golang-migrate/migrate/v4" + "github.com/golang-migrate/migrate/v4/database/sqlite" + "github.com/golang-migrate/migrate/v4/source/iofs" + "github.com/lib/pq" + "go.unistack.org/micro/v3/logger" + "go.unistack.org/unistack-org/pkgdash/config" + "go.unistack.org/unistack-org/pkgdash/models" + pb "go.unistack.org/unistack-org/pkgdash/proto/go_generate" +) + +const ( + pathMigration = `migrations/sqlite` +) + +type Postgres struct { + db *sql.DB + fs embed.FS +} + +func NewStorage(db *sql.DB) (interface{}, error) { + return &Postgres{db: db}, nil +} + +func NewStorageFS(fs embed.FS) func(*sql.DB) (interface{}, error) { + return func(db *sql.DB) (interface{}, error) { + return &Postgres{db: db, fs: fs}, nil + } +} + +func (s *Postgres) MigrateUp() error { + driver, err := sqlite.WithInstance(s.db, &sqlite.Config{ + MigrationsTable: sqlite.DefaultMigrationsTable, + DatabaseName: config.ServiceName, + }) + if err != nil { + return err + } + source, err := iofs.New(s.fs, pathMigration) + if err != nil { + return err + } + + // TODO: pass own logger + m, err := migrate.NewWithInstance("fs", source, config.ServiceName, driver) + if err != nil { + return err + } + + if err = m.Up(); err != nil && !errors.Is(err, migrate.ErrNoChange) { + return err + } + + return nil +} + +func (s *Postgres) MigrateDown() error { + driver, err := sqlite.WithInstance(s.db, &sqlite.Config{ + MigrationsTable: sqlite.DefaultMigrationsTable, + DatabaseName: config.ServiceName, + }) + if err != nil { + return err + } + source, err := iofs.New(s.fs, pathMigration) + if err != nil { + return err + } + + // TODO: pass own logger + m, err := migrate.NewWithInstance("fs", source, config.ServiceName, driver) + if err != nil { + return err + } + + if err = m.Down(); err != nil && !errors.Is(err, migrate.ErrNoChange) { + return err + } + + return nil +} + +func (s *Postgres) UpdatePackage(ctx context.Context, rsp *pb.UpdatePackageRsp) error { + panic("need implement") +} + +func (s *Postgres) ListPackage(ctx context.Context) (models.ListPackage, error) { + rows, err := s.db.QueryContext(ctx, queryListPackage) + if err != nil { + return nil, err + } + + defer func() { + if err = rows.Close(); err != nil { + return + } + err = rows.Err() + }() + + result := make([]*models.Package, 0) + for rows.Next() { + tmp := &models.Package{} + if err = rows.Scan( + &tmp.ID, + &tmp.Name, + &tmp.URL, + pq.Array(&tmp.Comments), + ); err != nil { + return nil, err + } + } + + return result, err +} + +func (s *Postgres) AddComment(ctx context.Context, rsp *pb.AddCommentRsp) error { + tx, err := s.db.BeginTx(ctx, nil) + if err != nil { + return err + } + + defer func() { + if err != nil { + if rollbackErr := tx.Rollback(); rollbackErr != nil { + logger.Errorf(ctx, "AddComment: unable to rollback: %v", rollbackErr) + } + } else { + err = tx.Commit() + } + }() + + res, err := tx.ExecContext(ctx, queryAddComment, rsp.Text, rsp.IdPackage.Value) + if err != nil { + return err + } + + if aff, affErr := res.RowsAffected(); err != nil { + err = affErr + } else if aff == 0 { + err = errors.New("rows affected is 0") + } + + return err +} + +func (s *Postgres) AddPackage(ctx context.Context, rsp *pb.AddPackageRsp) error { + tx, err := s.db.BeginTx(ctx, nil) + if err != nil { + return err + } + + defer func() { + if err != nil { + if rollbackErr := tx.Rollback(); rollbackErr != nil { + logger.Errorf(ctx, "AddPackage: unable to rollback: %v", rollbackErr) + } + } else { + err = tx.Commit() + } + }() + + res, err := tx.ExecContext(ctx, queryAddPackage, rsp.Name.Value, rsp.Url.Value, pq.Array(rsp.Modules)) + if err != nil { + return err + } + + if aff, affErr := res.RowsAffected(); err != nil { + err = affErr + } else if aff == 0 { + err = errors.New("rows affected is 0") + } + + return err +} + +func (s *Postgres) InsertButchModules(ctx context.Context, rsp []models.Module) ([]uint64, error) { + tx, err := s.db.BeginTx(ctx, nil) + if err != nil { + return nil, err + } + defer func() { + if err != nil { + if rollbackErr := tx.Rollback(); rollbackErr != nil { + logger.Errorf(ctx, "AddPackage: unable to rollback: %v", rollbackErr) + } + } else { + err = tx.Commit() + } + }() + + query := generateQuery(rsp) + + rows, err := tx.QueryContext(ctx, query) + if err != nil { + return nil, err + } + defer func() { + if err = rows.Close(); err != nil { + return + } + err = rows.Err() + }() + + result := make([]uint64, 0) + for rows.Next() { + tmp := uint64(0) + if err = rows.Scan(&tmp); err != nil { + return nil, err + } + + result = append(result, tmp) + } + + return result, err +} + +func generateQuery(rsp []models.Module) string { + const pattern = `%c('%s', '%s', '%s')` + build := strings.Builder{} + comma := ' ' + for i := range rsp { + str := fmt.Sprintf(pattern, comma, rsp[i].Name, rsp[i].Version, rsp[i].LastVersion) + build.WriteString(str) + comma = ',' + } + + return fmt.Sprintf(queryInsMsgGetIDs, build.String()) +} diff --git a/storage/storage.go b/storage/storage.go index 616cb8c..64df6c5 100644 --- a/storage/storage.go +++ b/storage/storage.go @@ -7,6 +7,7 @@ import ( "go.unistack.org/unistack-org/pkgdash/models" pb "go.unistack.org/unistack-org/pkgdash/proto/go_generate" "go.unistack.org/unistack-org/pkgdash/storage/postgres" + "go.unistack.org/unistack-org/pkgdash/storage/sqlite" cmsstorage "go.unistack.org/cms-service/storage" ) @@ -20,6 +21,7 @@ var ( func init() { storages.RegisterStorage("postgres", postgres.NewStorageFS(fs)) + storages.RegisterStorage("sqlite", sqlite.NewStorageFS(fs)) } type Storage interface { -- 2.45.2 From 0efc90a17ebfed822f1bebadc1aec31c2fa40117 Mon Sep 17 00:00:00 2001 From: Evstigneev Denis Date: Thu, 10 Aug 2023 22:24:41 +0300 Subject: [PATCH 06/16] add mapping listPackage --- models/entities.go | 6 +- models/mapping.go | 13 ++ proto/dashboard.proto | 5 +- proto/go_generate/dashboard.pb.go | 260 +++++++++++---------- proto/go_generate/dashboard.pb.validate.go | 68 ------ 5 files changed, 152 insertions(+), 200 deletions(-) diff --git a/models/entities.go b/models/entities.go index 9ec3f86..e40e007 100644 --- a/models/entities.go +++ b/models/entities.go @@ -7,12 +7,12 @@ import ( ) type Package struct { - ID int64 `db:"id" json:"id"` // package id + ID uint64 `db:"id" json:"id"` // package id Name string `db:"name" json:"name"` // service name, last component path URL string `db:"url" json:"url"` // scm url Modules []uint64 `db:"modules" json:"modules"` // parsed go.mod modules - Issues []int64 `db:"issues" json:"issues,omitempty"` // issues list - Comments []int64 `db:"comments" json:"comments,omitempty"` + Issues []uint64 `db:"issues" json:"issues,omitempty"` // issues list + Comments []uint64 `db:"comments" json:"comments,omitempty"` } type Module struct { diff --git a/models/mapping.go b/models/mapping.go index 44a39fe..04413f1 100644 --- a/models/mapping.go +++ b/models/mapping.go @@ -9,5 +9,18 @@ type ListPackage []*Package func (l ListPackage) Mapping() []*pb.Package { result := make([]*pb.Package, 0, len(l)) + for i := range l { + temp := &pb.Package{ + Id: l[i].ID, + Name: l[i].Name, + Url: l[i].URL, + Modules: l[i].Modules, + Issues: l[i].Issues, + Comments: l[i].Comments, + } + + result = append(result, temp) + } + return result } diff --git a/proto/dashboard.proto b/proto/dashboard.proto index ac9de8d..d8cf391 100644 --- a/proto/dashboard.proto +++ b/proto/dashboard.proto @@ -29,8 +29,9 @@ message Package { uint64 id = 1 [(validate.rules).uint64.gt = 0]; string name = 2 [(validate.rules).string.min_len = 1]; string url = 3 [(validate.rules).string.min_len = 1]; - repeated Module modules = 4; - repeated Issue issues = 5; + repeated uint64 modules = 4; + repeated uint64 issues = 5; + repeated uint64 comments = 6; }; message Module { diff --git a/proto/go_generate/dashboard.pb.go b/proto/go_generate/dashboard.pb.go index 17a613c..51adab9 100644 --- a/proto/go_generate/dashboard.pb.go +++ b/proto/go_generate/dashboard.pb.go @@ -145,11 +145,12 @@ type Package struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty"` - Modules []*Module `protobuf:"bytes,4,rep,name=modules,proto3" json:"modules,omitempty"` - Issues []*Issue `protobuf:"bytes,5,rep,name=issues,proto3" json:"issues,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty"` + Modules []uint64 `protobuf:"varint,4,rep,packed,name=modules,proto3" json:"modules,omitempty"` + Issues []uint64 `protobuf:"varint,5,rep,packed,name=issues,proto3" json:"issues,omitempty"` + Comments []uint64 `protobuf:"varint,6,rep,packed,name=comments,proto3" json:"comments,omitempty"` } func (x *Package) Reset() { @@ -205,20 +206,27 @@ func (x *Package) GetUrl() string { return "" } -func (x *Package) GetModules() []*Module { +func (x *Package) GetModules() []uint64 { if x != nil { return x.Modules } return nil } -func (x *Package) GetIssues() []*Issue { +func (x *Package) GetIssues() []uint64 { if x != nil { return x.Issues } return nil } +func (x *Package) GetComments() []uint64 { + if x != nil { + return x.Comments + } + return nil +} + type Module struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -879,111 +887,111 @@ var file_dashboard_proto_rawDesc = []byte{ 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x22, 0xa9, 0x01, 0x0a, 0x07, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x17, + 0x6c, 0x73, 0x22, 0xa8, 0x01, 0x0a, 0x07, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, - 0x27, 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x0d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, - 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, - 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x22, 0x84, - 0x01, 0x0a, 0x06, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x07, 0x70, 0x61, - 0x63, 0x6b, 0x61, 0x67, 0x65, 0x22, 0x9b, 0x01, 0x0a, 0x05, 0x49, 0x73, 0x73, 0x75, 0x65, 0x12, - 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, - 0x32, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, - 0x00, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x04, 0x64, 0x65, 0x73, - 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, - 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x21, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, - 0x52, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, 0x64, - 0x75, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, - 0x6c, 0x65, 0x73, 0x22, 0x9f, 0x01, 0x0a, 0x07, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, - 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, - 0x32, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, - 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, - 0x20, 0x00, 0x52, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, - 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, - 0x21, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, - 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x12, 0x21, 0x0a, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x07, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x64, 0x22, 0x10, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x22, 0x3c, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x50, - 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x12, 0x2a, 0x0a, 0x08, 0x70, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x08, 0x70, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x73, 0x22, 0xf2, 0x01, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x12, 0x36, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x08, - 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, - 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, + 0x18, 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x04, + 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, + 0x75, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, + 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x04, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x84, 0x01, + 0x0a, 0x06, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, + 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x21, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x07, 0x70, 0x61, 0x63, + 0x6b, 0x61, 0x67, 0x65, 0x22, 0x9b, 0x01, 0x0a, 0x05, 0x49, 0x73, 0x73, 0x75, 0x65, 0x12, 0x17, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, + 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, + 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, + 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x21, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, + 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x75, + 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, + 0x65, 0x73, 0x22, 0x9f, 0x01, 0x0a, 0x07, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x17, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, + 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, + 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, + 0x00, 0x52, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, + 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x21, + 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x12, 0x21, 0x0a, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x07, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x22, 0x10, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, + 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x22, 0x3c, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, + 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x12, 0x2a, 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, + 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, + 0x61, 0x67, 0x65, 0x73, 0x22, 0xf2, 0x01, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, + 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x12, 0x36, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x3a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, + 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, + 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, + 0x73, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, + 0x04, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x22, 0x2b, 0x0a, 0x10, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, + 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x22, 0x69, 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x73, 0x70, 0x12, 0x44, 0x0a, 0x09, 0x69, 0x64, 0x50, 0x61, 0x63, + 0x6b, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, + 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x09, 0x69, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, + 0x74, 0x22, 0x28, 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, + 0x65, 0x71, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, + 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x22, 0x9f, 0x01, 0x0a, 0x0d, + 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x12, 0x3a, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, - 0x02, 0x10, 0x01, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x75, - 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, - 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, - 0x28, 0x04, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x22, 0x2b, 0x0a, 0x10, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x17, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, - 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x22, 0x69, 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x43, 0x6f, - 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x73, 0x70, 0x12, 0x44, 0x0a, 0x09, 0x69, 0x64, 0x50, 0x61, - 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, - 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, - 0x02, 0x10, 0x01, 0x52, 0x09, 0x69, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, - 0x78, 0x74, 0x22, 0x28, 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, - 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, - 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x22, 0x9f, 0x01, 0x0a, - 0x0d, 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x12, 0x3a, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, - 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x03, 0x75, 0x72, - 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, - 0x03, 0x75, 0x72, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x22, 0x0f, - 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x32, - 0x8e, 0x02, 0x0a, 0x10, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, - 0x61, 0x67, 0x65, 0x12, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, - 0x70, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x12, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x1a, 0x17, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, - 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x43, - 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, - 0x64, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x73, 0x70, 0x1a, 0x14, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, - 0x65, 0x71, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, - 0x67, 0x65, 0x12, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x61, - 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x1a, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x22, 0x00, - 0x42, 0x44, 0x5a, 0x42, 0x67, 0x6f, 0x2e, 0x75, 0x6e, 0x69, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, - 0x6f, 0x72, 0x67, 0x2f, 0x75, 0x6e, 0x69, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2d, 0x6f, 0x72, 0x67, - 0x2f, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, - 0x6f, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x3b, 0x67, 0x6f, 0x5f, 0x67, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x03, 0x75, 0x72, 0x6c, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x03, + 0x75, 0x72, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x22, 0x0f, 0x0a, + 0x0d, 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x32, 0x8e, + 0x02, 0x0a, 0x10, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, + 0x67, 0x65, 0x12, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, + 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, + 0x22, 0x00, 0x12, 0x43, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, + 0x61, 0x67, 0x65, 0x12, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x1a, 0x17, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x61, + 0x67, 0x65, 0x52, 0x65, 0x71, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x43, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x64, + 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x73, 0x70, 0x1a, 0x14, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, + 0x71, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, + 0x65, 0x12, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, + 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x1a, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x22, 0x00, 0x42, + 0x44, 0x5a, 0x42, 0x67, 0x6f, 0x2e, 0x75, 0x6e, 0x69, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x6f, + 0x72, 0x67, 0x2f, 0x75, 0x6e, 0x69, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2d, 0x6f, 0x72, 0x67, 0x2f, + 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, + 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x3b, 0x67, 0x6f, 0x5f, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1019,28 +1027,26 @@ var file_dashboard_proto_goTypes = []interface{}{ } var file_dashboard_proto_depIdxs = []int32{ 1, // 0: proto.ErrorRsp.error:type_name -> proto.Error - 3, // 1: proto.Package.modules:type_name -> proto.Module - 4, // 2: proto.Package.issues:type_name -> proto.Issue - 2, // 3: proto.ListPackageRsp.packages:type_name -> proto.Package - 14, // 4: proto.UpdatePackageRsp.id:type_name -> google.protobuf.UInt64Value - 15, // 5: proto.UpdatePackageRsp.name:type_name -> google.protobuf.StringValue - 15, // 6: proto.UpdatePackageRsp.url:type_name -> google.protobuf.StringValue - 14, // 7: proto.AddCommentRsp.idPackage:type_name -> google.protobuf.UInt64Value - 15, // 8: proto.AddPackageRsp.name:type_name -> google.protobuf.StringValue - 15, // 9: proto.AddPackageRsp.url:type_name -> google.protobuf.StringValue - 6, // 10: proto.DashboardService.ListPackage:input_type -> proto.ListPackageReq - 8, // 11: proto.DashboardService.UpdatePackage:input_type -> proto.UpdatePackageRsp - 10, // 12: proto.DashboardService.AddComment:input_type -> proto.AddCommentRsp - 12, // 13: proto.DashboardService.AddPackage:input_type -> proto.AddPackageRsp - 7, // 14: proto.DashboardService.ListPackage:output_type -> proto.ListPackageRsp - 9, // 15: proto.DashboardService.UpdatePackage:output_type -> proto.UpdatePackageReq - 11, // 16: proto.DashboardService.AddComment:output_type -> proto.AddCommentReq - 13, // 17: proto.DashboardService.AddPackage:output_type -> proto.AddPackageReq - 14, // [14:18] is the sub-list for method output_type - 10, // [10:14] is the sub-list for method input_type - 10, // [10:10] is the sub-list for extension type_name - 10, // [10:10] is the sub-list for extension extendee - 0, // [0:10] is the sub-list for field type_name + 2, // 1: proto.ListPackageRsp.packages:type_name -> proto.Package + 14, // 2: proto.UpdatePackageRsp.id:type_name -> google.protobuf.UInt64Value + 15, // 3: proto.UpdatePackageRsp.name:type_name -> google.protobuf.StringValue + 15, // 4: proto.UpdatePackageRsp.url:type_name -> google.protobuf.StringValue + 14, // 5: proto.AddCommentRsp.idPackage:type_name -> google.protobuf.UInt64Value + 15, // 6: proto.AddPackageRsp.name:type_name -> google.protobuf.StringValue + 15, // 7: proto.AddPackageRsp.url:type_name -> google.protobuf.StringValue + 6, // 8: proto.DashboardService.ListPackage:input_type -> proto.ListPackageReq + 8, // 9: proto.DashboardService.UpdatePackage:input_type -> proto.UpdatePackageRsp + 10, // 10: proto.DashboardService.AddComment:input_type -> proto.AddCommentRsp + 12, // 11: proto.DashboardService.AddPackage:input_type -> proto.AddPackageRsp + 7, // 12: proto.DashboardService.ListPackage:output_type -> proto.ListPackageRsp + 9, // 13: proto.DashboardService.UpdatePackage:output_type -> proto.UpdatePackageReq + 11, // 14: proto.DashboardService.AddComment:output_type -> proto.AddCommentReq + 13, // 15: proto.DashboardService.AddPackage:output_type -> proto.AddPackageReq + 12, // [12:16] is the sub-list for method output_type + 8, // [8:12] is the sub-list for method input_type + 8, // [8:8] is the sub-list for extension type_name + 8, // [8:8] is the sub-list for extension extendee + 0, // [0:8] is the sub-list for field type_name } func init() { file_dashboard_proto_init() } diff --git a/proto/go_generate/dashboard.pb.validate.go b/proto/go_generate/dashboard.pb.validate.go index 5ff836e..a98f164 100644 --- a/proto/go_generate/dashboard.pb.validate.go +++ b/proto/go_generate/dashboard.pb.validate.go @@ -323,74 +323,6 @@ func (m *Package) validate(all bool) error { errors = append(errors, err) } - for idx, item := range m.GetModules() { - _, _ = idx, item - - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, PackageValidationError{ - field: fmt.Sprintf("Modules[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, PackageValidationError{ - field: fmt.Sprintf("Modules[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return PackageValidationError{ - field: fmt.Sprintf("Modules[%v]", idx), - reason: "embedded message failed validation", - cause: err, - } - } - } - - } - - for idx, item := range m.GetIssues() { - _, _ = idx, item - - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, PackageValidationError{ - field: fmt.Sprintf("Issues[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, PackageValidationError{ - field: fmt.Sprintf("Issues[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return PackageValidationError{ - field: fmt.Sprintf("Issues[%v]", idx), - reason: "embedded message failed validation", - cause: err, - } - } - } - - } - if len(errors) > 0 { return PackageMultiError(errors) } -- 2.45.2 From 790a4db3cadbef14a5842fd9dc0e9ae653c66b19 Mon Sep 17 00:00:00 2001 From: Evstigneev Denis Date: Thu, 10 Aug 2023 22:27:43 +0300 Subject: [PATCH 07/16] move scripts --- main.go => cmd/script/main.go | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename main.go => cmd/script/main.go (100%) diff --git a/main.go b/cmd/script/main.go similarity index 100% rename from main.go rename to cmd/script/main.go -- 2.45.2 From 1eeb6607be469bb624ce5a9e5ec24bc5697146e6 Mon Sep 17 00:00:00 2001 From: Evstigneev Denis Date: Thu, 10 Aug 2023 22:35:48 +0300 Subject: [PATCH 08/16] rename struct storage --- service/service.go | 2 +- storage/sqlite/storage.go | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/service/service.go b/service/service.go index 6c9303c..c43ed6b 100644 --- a/service/service.go +++ b/service/service.go @@ -129,7 +129,7 @@ func NewService(ctx context.Context) (micro.Service, error) { mux := http.NewServeMux() mux.HandleFunc("/listPackage", handler.Methods(http.MethodGet, h.ListPackage)) - mux.HandleFunc("/updateInfo", handler.Methods(http.MethodPost, h.UpdatePackage)) + mux.HandleFunc("/updatePackage", handler.Methods(http.MethodPost, h.UpdatePackage)) mux.HandleFunc("/addComment", handler.Methods(http.MethodPut, h.AddComment)) mux.HandleFunc("/addPackage", handler.Methods(http.MethodPost, h.AddPackage)) diff --git a/storage/sqlite/storage.go b/storage/sqlite/storage.go index 3019b18..5e21b5b 100644 --- a/storage/sqlite/storage.go +++ b/storage/sqlite/storage.go @@ -24,22 +24,22 @@ const ( pathMigration = `migrations/sqlite` ) -type Postgres struct { +type Sqlite struct { db *sql.DB fs embed.FS } func NewStorage(db *sql.DB) (interface{}, error) { - return &Postgres{db: db}, nil + return &Sqlite{db: db}, nil } func NewStorageFS(fs embed.FS) func(*sql.DB) (interface{}, error) { return func(db *sql.DB) (interface{}, error) { - return &Postgres{db: db, fs: fs}, nil + return &Sqlite{db: db, fs: fs}, nil } } -func (s *Postgres) MigrateUp() error { +func (s *Sqlite) MigrateUp() error { driver, err := sqlite.WithInstance(s.db, &sqlite.Config{ MigrationsTable: sqlite.DefaultMigrationsTable, DatabaseName: config.ServiceName, @@ -65,7 +65,7 @@ func (s *Postgres) MigrateUp() error { return nil } -func (s *Postgres) MigrateDown() error { +func (s *Sqlite) MigrateDown() error { driver, err := sqlite.WithInstance(s.db, &sqlite.Config{ MigrationsTable: sqlite.DefaultMigrationsTable, DatabaseName: config.ServiceName, @@ -91,11 +91,11 @@ func (s *Postgres) MigrateDown() error { return nil } -func (s *Postgres) UpdatePackage(ctx context.Context, rsp *pb.UpdatePackageRsp) error { +func (s *Sqlite) UpdatePackage(ctx context.Context, rsp *pb.UpdatePackageRsp) error { panic("need implement") } -func (s *Postgres) ListPackage(ctx context.Context) (models.ListPackage, error) { +func (s *Sqlite) ListPackage(ctx context.Context) (models.ListPackage, error) { rows, err := s.db.QueryContext(ctx, queryListPackage) if err != nil { return nil, err @@ -124,7 +124,7 @@ func (s *Postgres) ListPackage(ctx context.Context) (models.ListPackage, error) return result, err } -func (s *Postgres) AddComment(ctx context.Context, rsp *pb.AddCommentRsp) error { +func (s *Sqlite) AddComment(ctx context.Context, rsp *pb.AddCommentRsp) error { tx, err := s.db.BeginTx(ctx, nil) if err != nil { return err @@ -154,7 +154,7 @@ func (s *Postgres) AddComment(ctx context.Context, rsp *pb.AddCommentRsp) error return err } -func (s *Postgres) AddPackage(ctx context.Context, rsp *pb.AddPackageRsp) error { +func (s *Sqlite) AddPackage(ctx context.Context, rsp *pb.AddPackageRsp) error { tx, err := s.db.BeginTx(ctx, nil) if err != nil { return err @@ -184,7 +184,7 @@ func (s *Postgres) AddPackage(ctx context.Context, rsp *pb.AddPackageRsp) error return err } -func (s *Postgres) InsertButchModules(ctx context.Context, rsp []models.Module) ([]uint64, error) { +func (s *Sqlite) InsertButchModules(ctx context.Context, rsp []models.Module) ([]uint64, error) { tx, err := s.db.BeginTx(ctx, nil) if err != nil { return nil, err -- 2.45.2 From c1f1e315699cb015648dadad974f3316dc6be468 Mon Sep 17 00:00:00 2001 From: Evstigneev Denis Date: Fri, 11 Aug 2023 08:58:31 +0300 Subject: [PATCH 09/16] rename fields --- handler/handlers.go | 28 +- proto/dashboard.proto | 26 +- proto/go_generate/dashboard.pb.go | 569 ++++++----- proto/go_generate/dashboard.pb.validate.go | 1018 ++++++++++++-------- proto/micro/dashboard_micro.pb.go | 14 +- proto/micro/dashboard_micro_http.pb.go | 38 +- service/client_git/client.go | 16 +- service/client_git/client_test.go | 4 +- service/service.go | 1 + storage/postgres/storage.go | 14 +- storage/postgres/storage_test.go | 20 +- storage/sqlite/storage.go | 14 +- storage/storage.go | 8 +- 13 files changed, 1090 insertions(+), 680 deletions(-) diff --git a/handler/handlers.go b/handler/handlers.go index 1021fdf..a9cbfc4 100644 --- a/handler/handlers.go +++ b/handler/handlers.go @@ -24,7 +24,7 @@ type Handler struct { protojson.UnmarshalOptions git cligit.Client - chanUrl chan *pb.AddPackageRsp + chanUrl chan *pb.AddPackageReq } func (h *Handler) ListPackage(w http.ResponseWriter, r *http.Request) { @@ -59,20 +59,20 @@ func (h *Handler) UpdatePackage(w http.ResponseWriter, r *http.Request) { return } - rsp := new(pb.UpdatePackageRsp) - if err = h.Unmarshal(all, rsp); err != nil { + req := new(pb.UpdatePackageReq) + if err = h.Unmarshal(all, req); err != nil { logger.Error(ctx, err) h.writer.Response(ctx, w, NewUnmarshalError(err)) return } - if err = rsp.Validate(); err != nil { + if err = req.Validate(); err != nil { logger.Error(ctx, err) h.writer.Response(ctx, w, NewValidationError(err)) return } - if err = h.store.UpdatePackage(ctx, rsp); err != nil { + if err = h.store.UpdatePackage(ctx, req); err != nil { logger.Error(ctx, err) h.writer.Response(ctx, w, NewInternalError(err)) return @@ -94,20 +94,20 @@ func (h *Handler) AddComment(w http.ResponseWriter, r *http.Request) { return } - rsp := new(pb.AddCommentRsp) - if err = h.Unmarshal(all, rsp); err != nil { + req := new(pb.AddCommentReq) + if err = h.Unmarshal(all, req); err != nil { logger.Error(ctx, err) h.writer.Response(ctx, w, NewUnmarshalError(err)) return } - if err = rsp.Validate(); err != nil { + if err = req.Validate(); err != nil { logger.Error(ctx, err) h.writer.Response(ctx, w, NewValidationError(err)) return } - if err = h.store.AddComment(ctx, rsp); err != nil { + if err = h.store.AddComment(ctx, req); err != nil { logger.Error(ctx, err) h.writer.Response(ctx, w, NewInternalError(err)) return @@ -129,7 +129,7 @@ func (h *Handler) AddPackage(w http.ResponseWriter, r *http.Request) { return } - req := new(pb.AddPackageRsp) + req := new(pb.AddPackageReq) if err = h.Unmarshal(all, req); err != nil { logger.Error(ctx, err) h.writer.Response(ctx, w, NewUnmarshalError(err)) @@ -151,6 +151,14 @@ func (h *Handler) AddPackage(w http.ResponseWriter, r *http.Request) { logger.Debug(ctx, "Success finish addPackage") } +func (h *Handler) GetModule(w http.ResponseWriter, r *http.Request) { + ctx := r.Context() + logger := h.svc.Logger() + logger.Debug(ctx, "Start GetModule") + + //rsp := new(pb.GetModuleRsp) +} + func NewHandler(svc micro.Service, w writer, client cligit.Client) *Handler { h := &Handler{ svc: svc, diff --git a/proto/dashboard.proto b/proto/dashboard.proto index d8cf391..5dc2a57 100644 --- a/proto/dashboard.proto +++ b/proto/dashboard.proto @@ -9,9 +9,10 @@ import "google/protobuf/wrappers.proto"; service DashboardService { rpc ListPackage(ListPackageReq) returns (ListPackageRsp) {}; - rpc UpdatePackage(UpdatePackageRsp) returns (UpdatePackageReq) {}; - rpc AddComment(AddCommentRsp) returns (AddCommentReq) {}; - rpc AddPackage(AddPackageRsp) returns (AddPackageReq) {}; + rpc UpdatePackage(UpdatePackageReq) returns (UpdatePackageRsp) {}; + rpc AddComment(AddCommentReq) returns (AddCommentRsp) {}; + rpc AddPackage(AddPackageReq) returns (AddPackageRsp) {}; + rpc GetModule(GetModuleReq) returns (GetModuleRsp) {}; }; message ErrorRsp { @@ -62,29 +63,36 @@ message ListPackageRsp{ repeated Package packages = 1; } -message UpdatePackageRsp { +message UpdatePackageReq { google.protobuf.UInt64Value id = 1 [(validate.rules).message.required = true]; google.protobuf.StringValue name = 2 [(validate.rules).message.required = true]; google.protobuf.StringValue url = 3 [(validate.rules).message.required = true]; repeated uint64 modules = 4 ; repeated uint64 issues = 5 ; } -message UpdatePackageReq { +message UpdatePackageRsp { uint64 id = 1 [(validate.rules).uint64.gt = 0]; } -message AddCommentRsp { +message AddCommentReq { google.protobuf.UInt64Value idPackage = 1 [(validate.rules).message.required = true]; string text = 2; } -message AddCommentReq { +message AddCommentRsp { uint64 id = 1 [(validate.rules).uint64.gt = 0]; } -message AddPackageRsp { +message AddPackageReq { google.protobuf.StringValue name = 1 [(validate.rules).message.required = true]; google.protobuf.StringValue url = 2 [(validate.rules).message.required = true]; repeated uint64 modules = 3; } -message AddPackageReq{} \ No newline at end of file +message AddPackageRsp{} + +message GetModuleReq { + repeated uint64 modules_id = 1 ; +} +message GetModuleRsp { + repeated Module modules = 1 ; +} \ No newline at end of file diff --git a/proto/go_generate/dashboard.pb.go b/proto/go_generate/dashboard.pb.go index 51adab9..c893678 100644 --- a/proto/go_generate/dashboard.pb.go +++ b/proto/go_generate/dashboard.pb.go @@ -541,7 +541,7 @@ func (x *ListPackageRsp) GetPackages() []*Package { return nil } -type UpdatePackageRsp struct { +type UpdatePackageReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -553,85 +553,10 @@ type UpdatePackageRsp struct { Issues []uint64 `protobuf:"varint,5,rep,packed,name=issues,proto3" json:"issues,omitempty"` } -func (x *UpdatePackageRsp) Reset() { - *x = UpdatePackageRsp{} - if protoimpl.UnsafeEnabled { - mi := &file_dashboard_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *UpdatePackageRsp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpdatePackageRsp) ProtoMessage() {} - -func (x *UpdatePackageRsp) ProtoReflect() protoreflect.Message { - mi := &file_dashboard_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpdatePackageRsp.ProtoReflect.Descriptor instead. -func (*UpdatePackageRsp) Descriptor() ([]byte, []int) { - return file_dashboard_proto_rawDescGZIP(), []int{8} -} - -func (x *UpdatePackageRsp) GetId() *wrapperspb.UInt64Value { - if x != nil { - return x.Id - } - return nil -} - -func (x *UpdatePackageRsp) GetName() *wrapperspb.StringValue { - if x != nil { - return x.Name - } - return nil -} - -func (x *UpdatePackageRsp) GetUrl() *wrapperspb.StringValue { - if x != nil { - return x.Url - } - return nil -} - -func (x *UpdatePackageRsp) GetModules() []uint64 { - if x != nil { - return x.Modules - } - return nil -} - -func (x *UpdatePackageRsp) GetIssues() []uint64 { - if x != nil { - return x.Issues - } - return nil -} - -type UpdatePackageReq struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` -} - func (x *UpdatePackageReq) Reset() { *x = UpdatePackageReq{} if protoimpl.UnsafeEnabled { - mi := &file_dashboard_proto_msgTypes[9] + mi := &file_dashboard_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -644,7 +569,7 @@ func (x *UpdatePackageReq) String() string { func (*UpdatePackageReq) ProtoMessage() {} func (x *UpdatePackageReq) ProtoReflect() protoreflect.Message { - mi := &file_dashboard_proto_msgTypes[9] + mi := &file_dashboard_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -657,42 +582,69 @@ func (x *UpdatePackageReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdatePackageReq.ProtoReflect.Descriptor instead. func (*UpdatePackageReq) Descriptor() ([]byte, []int) { - return file_dashboard_proto_rawDescGZIP(), []int{9} + return file_dashboard_proto_rawDescGZIP(), []int{8} } -func (x *UpdatePackageReq) GetId() uint64 { +func (x *UpdatePackageReq) GetId() *wrapperspb.UInt64Value { if x != nil { return x.Id } - return 0 + return nil } -type AddCommentRsp struct { +func (x *UpdatePackageReq) GetName() *wrapperspb.StringValue { + if x != nil { + return x.Name + } + return nil +} + +func (x *UpdatePackageReq) GetUrl() *wrapperspb.StringValue { + if x != nil { + return x.Url + } + return nil +} + +func (x *UpdatePackageReq) GetModules() []uint64 { + if x != nil { + return x.Modules + } + return nil +} + +func (x *UpdatePackageReq) GetIssues() []uint64 { + if x != nil { + return x.Issues + } + return nil +} + +type UpdatePackageRsp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - IdPackage *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=idPackage,proto3" json:"idPackage,omitempty"` - Text string `protobuf:"bytes,2,opt,name=text,proto3" json:"text,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` } -func (x *AddCommentRsp) Reset() { - *x = AddCommentRsp{} +func (x *UpdatePackageRsp) Reset() { + *x = UpdatePackageRsp{} if protoimpl.UnsafeEnabled { - mi := &file_dashboard_proto_msgTypes[10] + mi := &file_dashboard_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *AddCommentRsp) String() string { +func (x *UpdatePackageRsp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AddCommentRsp) ProtoMessage() {} +func (*UpdatePackageRsp) ProtoMessage() {} -func (x *AddCommentRsp) ProtoReflect() protoreflect.Message { - mi := &file_dashboard_proto_msgTypes[10] +func (x *UpdatePackageRsp) ProtoReflect() protoreflect.Message { + mi := &file_dashboard_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -703,23 +655,16 @@ func (x *AddCommentRsp) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AddCommentRsp.ProtoReflect.Descriptor instead. -func (*AddCommentRsp) Descriptor() ([]byte, []int) { - return file_dashboard_proto_rawDescGZIP(), []int{10} +// Deprecated: Use UpdatePackageRsp.ProtoReflect.Descriptor instead. +func (*UpdatePackageRsp) Descriptor() ([]byte, []int) { + return file_dashboard_proto_rawDescGZIP(), []int{9} } -func (x *AddCommentRsp) GetIdPackage() *wrapperspb.UInt64Value { +func (x *UpdatePackageRsp) GetId() uint64 { if x != nil { - return x.IdPackage + return x.Id } - return nil -} - -func (x *AddCommentRsp) GetText() string { - if x != nil { - return x.Text - } - return "" + return 0 } type AddCommentReq struct { @@ -727,13 +672,14 @@ type AddCommentReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + IdPackage *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=idPackage,proto3" json:"idPackage,omitempty"` + Text string `protobuf:"bytes,2,opt,name=text,proto3" json:"text,omitempty"` } func (x *AddCommentReq) Reset() { *x = AddCommentReq{} if protoimpl.UnsafeEnabled { - mi := &file_dashboard_proto_msgTypes[11] + mi := &file_dashboard_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -746,7 +692,7 @@ func (x *AddCommentReq) String() string { func (*AddCommentReq) ProtoMessage() {} func (x *AddCommentReq) ProtoReflect() protoreflect.Message { - mi := &file_dashboard_proto_msgTypes[11] + mi := &file_dashboard_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -759,43 +705,48 @@ func (x *AddCommentReq) ProtoReflect() protoreflect.Message { // Deprecated: Use AddCommentReq.ProtoReflect.Descriptor instead. func (*AddCommentReq) Descriptor() ([]byte, []int) { - return file_dashboard_proto_rawDescGZIP(), []int{11} + return file_dashboard_proto_rawDescGZIP(), []int{10} } -func (x *AddCommentReq) GetId() uint64 { +func (x *AddCommentReq) GetIdPackage() *wrapperspb.UInt64Value { if x != nil { - return x.Id + return x.IdPackage } - return 0 + return nil } -type AddPackageRsp struct { +func (x *AddCommentReq) GetText() string { + if x != nil { + return x.Text + } + return "" +} + +type AddCommentRsp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Url *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` - Modules []uint64 `protobuf:"varint,3,rep,packed,name=modules,proto3" json:"modules,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` } -func (x *AddPackageRsp) Reset() { - *x = AddPackageRsp{} +func (x *AddCommentRsp) Reset() { + *x = AddCommentRsp{} if protoimpl.UnsafeEnabled { - mi := &file_dashboard_proto_msgTypes[12] + mi := &file_dashboard_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *AddPackageRsp) String() string { +func (x *AddCommentRsp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AddPackageRsp) ProtoMessage() {} +func (*AddCommentRsp) ProtoMessage() {} -func (x *AddPackageRsp) ProtoReflect() protoreflect.Message { - mi := &file_dashboard_proto_msgTypes[12] +func (x *AddCommentRsp) ProtoReflect() protoreflect.Message { + mi := &file_dashboard_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -806,42 +757,32 @@ func (x *AddPackageRsp) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AddPackageRsp.ProtoReflect.Descriptor instead. -func (*AddPackageRsp) Descriptor() ([]byte, []int) { - return file_dashboard_proto_rawDescGZIP(), []int{12} +// Deprecated: Use AddCommentRsp.ProtoReflect.Descriptor instead. +func (*AddCommentRsp) Descriptor() ([]byte, []int) { + return file_dashboard_proto_rawDescGZIP(), []int{11} } -func (x *AddPackageRsp) GetName() *wrapperspb.StringValue { +func (x *AddCommentRsp) GetId() uint64 { if x != nil { - return x.Name + return x.Id } - return nil -} - -func (x *AddPackageRsp) GetUrl() *wrapperspb.StringValue { - if x != nil { - return x.Url - } - return nil -} - -func (x *AddPackageRsp) GetModules() []uint64 { - if x != nil { - return x.Modules - } - return nil + return 0 } type AddPackageReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + Name *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Url *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` + Modules []uint64 `protobuf:"varint,3,rep,packed,name=modules,proto3" json:"modules,omitempty"` } func (x *AddPackageReq) Reset() { *x = AddPackageReq{} if protoimpl.UnsafeEnabled { - mi := &file_dashboard_proto_msgTypes[13] + mi := &file_dashboard_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -854,7 +795,7 @@ func (x *AddPackageReq) String() string { func (*AddPackageReq) ProtoMessage() {} func (x *AddPackageReq) ProtoReflect() protoreflect.Message { - mi := &file_dashboard_proto_msgTypes[13] + mi := &file_dashboard_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -867,9 +808,162 @@ func (x *AddPackageReq) ProtoReflect() protoreflect.Message { // Deprecated: Use AddPackageReq.ProtoReflect.Descriptor instead. func (*AddPackageReq) Descriptor() ([]byte, []int) { + return file_dashboard_proto_rawDescGZIP(), []int{12} +} + +func (x *AddPackageReq) GetName() *wrapperspb.StringValue { + if x != nil { + return x.Name + } + return nil +} + +func (x *AddPackageReq) GetUrl() *wrapperspb.StringValue { + if x != nil { + return x.Url + } + return nil +} + +func (x *AddPackageReq) GetModules() []uint64 { + if x != nil { + return x.Modules + } + return nil +} + +type AddPackageRsp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *AddPackageRsp) Reset() { + *x = AddPackageRsp{} + if protoimpl.UnsafeEnabled { + mi := &file_dashboard_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AddPackageRsp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AddPackageRsp) ProtoMessage() {} + +func (x *AddPackageRsp) ProtoReflect() protoreflect.Message { + mi := &file_dashboard_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AddPackageRsp.ProtoReflect.Descriptor instead. +func (*AddPackageRsp) Descriptor() ([]byte, []int) { return file_dashboard_proto_rawDescGZIP(), []int{13} } +type GetModuleReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ModulesId []uint64 `protobuf:"varint,1,rep,packed,name=modules_id,json=modulesId,proto3" json:"modules_id,omitempty"` +} + +func (x *GetModuleReq) Reset() { + *x = GetModuleReq{} + if protoimpl.UnsafeEnabled { + mi := &file_dashboard_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetModuleReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetModuleReq) ProtoMessage() {} + +func (x *GetModuleReq) ProtoReflect() protoreflect.Message { + mi := &file_dashboard_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetModuleReq.ProtoReflect.Descriptor instead. +func (*GetModuleReq) Descriptor() ([]byte, []int) { + return file_dashboard_proto_rawDescGZIP(), []int{14} +} + +func (x *GetModuleReq) GetModulesId() []uint64 { + if x != nil { + return x.ModulesId + } + return nil +} + +type GetModuleRsp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Modules []*Module `protobuf:"bytes,1,rep,name=modules,proto3" json:"modules,omitempty"` +} + +func (x *GetModuleRsp) Reset() { + *x = GetModuleRsp{} + if protoimpl.UnsafeEnabled { + mi := &file_dashboard_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetModuleRsp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetModuleRsp) ProtoMessage() {} + +func (x *GetModuleRsp) ProtoReflect() protoreflect.Message { + mi := &file_dashboard_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetModuleRsp.ProtoReflect.Descriptor instead. +func (*GetModuleRsp) Descriptor() ([]byte, []int) { + return file_dashboard_proto_rawDescGZIP(), []int{15} +} + +func (x *GetModuleRsp) GetModules() []*Module { + if x != nil { + return x.Modules + } + return nil +} + var File_dashboard_proto protoreflect.FileDescriptor var file_dashboard_proto_rawDesc = []byte{ @@ -932,7 +1026,7 @@ var file_dashboard_proto_rawDesc = []byte{ 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x22, 0xf2, 0x01, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, - 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x12, 0x36, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x36, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x02, 0x69, @@ -947,19 +1041,19 @@ var file_dashboard_proto_rawDesc = []byte{ 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x22, 0x2b, 0x0a, 0x10, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, + 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x22, 0x69, 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6d, - 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x73, 0x70, 0x12, 0x44, 0x0a, 0x09, 0x69, 0x64, 0x50, 0x61, 0x63, + 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, 0x44, 0x0a, 0x09, 0x69, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x69, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x22, 0x28, 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, - 0x65, 0x71, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, + 0x73, 0x70, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x22, 0x9f, 0x01, 0x0a, 0x0d, - 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x12, 0x3a, 0x0a, + 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x3a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, @@ -969,29 +1063,39 @@ var file_dashboard_proto_rawDesc = []byte{ 0x61, 0x6c, 0x75, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x22, 0x0f, 0x0a, - 0x0d, 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x32, 0x8e, - 0x02, 0x0a, 0x10, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, - 0x67, 0x65, 0x12, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, - 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, - 0x22, 0x00, 0x12, 0x43, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, - 0x61, 0x67, 0x65, 0x12, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x1a, 0x17, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x61, - 0x67, 0x65, 0x52, 0x65, 0x71, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x43, 0x6f, - 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x64, - 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x73, 0x70, 0x1a, 0x14, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, - 0x71, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, - 0x65, 0x12, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x1a, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x22, 0x00, 0x42, - 0x44, 0x5a, 0x42, 0x67, 0x6f, 0x2e, 0x75, 0x6e, 0x69, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x6f, - 0x72, 0x67, 0x2f, 0x75, 0x6e, 0x69, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2d, 0x6f, 0x72, 0x67, 0x2f, - 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, - 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x3b, 0x67, 0x6f, 0x5f, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x0d, 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x22, 0x2d, + 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1d, + 0x0a, 0x0a, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x04, 0x52, 0x09, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x49, 0x64, 0x22, 0x37, 0x0a, + 0x0c, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x73, 0x70, 0x12, 0x27, 0x0a, + 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x6d, + 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x32, 0xc7, 0x02, 0x0a, 0x10, 0x44, 0x61, 0x73, 0x68, 0x62, + 0x6f, 0x61, 0x72, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x4c, + 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x15, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, + 0x71, 0x1a, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, + 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x0d, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x17, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, + 0x65, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x22, 0x00, 0x12, + 0x3a, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x64, 0x64, 0x43, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x0a, 0x41, + 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, + 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, + 0x67, 0x65, 0x52, 0x73, 0x70, 0x22, 0x00, 0x12, 0x37, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x4d, 0x6f, + 0x64, 0x75, 0x6c, 0x65, 0x12, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x65, 0x74, + 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x73, 0x70, 0x22, 0x00, + 0x42, 0x44, 0x5a, 0x42, 0x67, 0x6f, 0x2e, 0x75, 0x6e, 0x69, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, + 0x6f, 0x72, 0x67, 0x2f, 0x75, 0x6e, 0x69, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2d, 0x6f, 0x72, 0x67, + 0x2f, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, + 0x6f, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x3b, 0x67, 0x6f, 0x5f, 0x67, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1006,7 +1110,7 @@ func file_dashboard_proto_rawDescGZIP() []byte { return file_dashboard_proto_rawDescData } -var file_dashboard_proto_msgTypes = make([]protoimpl.MessageInfo, 14) +var file_dashboard_proto_msgTypes = make([]protoimpl.MessageInfo, 16) var file_dashboard_proto_goTypes = []interface{}{ (*ErrorRsp)(nil), // 0: proto.ErrorRsp (*Error)(nil), // 1: proto.Error @@ -1016,37 +1120,42 @@ var file_dashboard_proto_goTypes = []interface{}{ (*Comment)(nil), // 5: proto.Comment (*ListPackageReq)(nil), // 6: proto.ListPackageReq (*ListPackageRsp)(nil), // 7: proto.ListPackageRsp - (*UpdatePackageRsp)(nil), // 8: proto.UpdatePackageRsp - (*UpdatePackageReq)(nil), // 9: proto.UpdatePackageReq - (*AddCommentRsp)(nil), // 10: proto.AddCommentRsp - (*AddCommentReq)(nil), // 11: proto.AddCommentReq - (*AddPackageRsp)(nil), // 12: proto.AddPackageRsp - (*AddPackageReq)(nil), // 13: proto.AddPackageReq - (*wrapperspb.UInt64Value)(nil), // 14: google.protobuf.UInt64Value - (*wrapperspb.StringValue)(nil), // 15: google.protobuf.StringValue + (*UpdatePackageReq)(nil), // 8: proto.UpdatePackageReq + (*UpdatePackageRsp)(nil), // 9: proto.UpdatePackageRsp + (*AddCommentReq)(nil), // 10: proto.AddCommentReq + (*AddCommentRsp)(nil), // 11: proto.AddCommentRsp + (*AddPackageReq)(nil), // 12: proto.AddPackageReq + (*AddPackageRsp)(nil), // 13: proto.AddPackageRsp + (*GetModuleReq)(nil), // 14: proto.GetModuleReq + (*GetModuleRsp)(nil), // 15: proto.GetModuleRsp + (*wrapperspb.UInt64Value)(nil), // 16: google.protobuf.UInt64Value + (*wrapperspb.StringValue)(nil), // 17: google.protobuf.StringValue } var file_dashboard_proto_depIdxs = []int32{ 1, // 0: proto.ErrorRsp.error:type_name -> proto.Error 2, // 1: proto.ListPackageRsp.packages:type_name -> proto.Package - 14, // 2: proto.UpdatePackageRsp.id:type_name -> google.protobuf.UInt64Value - 15, // 3: proto.UpdatePackageRsp.name:type_name -> google.protobuf.StringValue - 15, // 4: proto.UpdatePackageRsp.url:type_name -> google.protobuf.StringValue - 14, // 5: proto.AddCommentRsp.idPackage:type_name -> google.protobuf.UInt64Value - 15, // 6: proto.AddPackageRsp.name:type_name -> google.protobuf.StringValue - 15, // 7: proto.AddPackageRsp.url:type_name -> google.protobuf.StringValue - 6, // 8: proto.DashboardService.ListPackage:input_type -> proto.ListPackageReq - 8, // 9: proto.DashboardService.UpdatePackage:input_type -> proto.UpdatePackageRsp - 10, // 10: proto.DashboardService.AddComment:input_type -> proto.AddCommentRsp - 12, // 11: proto.DashboardService.AddPackage:input_type -> proto.AddPackageRsp - 7, // 12: proto.DashboardService.ListPackage:output_type -> proto.ListPackageRsp - 9, // 13: proto.DashboardService.UpdatePackage:output_type -> proto.UpdatePackageReq - 11, // 14: proto.DashboardService.AddComment:output_type -> proto.AddCommentReq - 13, // 15: proto.DashboardService.AddPackage:output_type -> proto.AddPackageReq - 12, // [12:16] is the sub-list for method output_type - 8, // [8:12] is the sub-list for method input_type - 8, // [8:8] is the sub-list for extension type_name - 8, // [8:8] is the sub-list for extension extendee - 0, // [0:8] is the sub-list for field type_name + 16, // 2: proto.UpdatePackageReq.id:type_name -> google.protobuf.UInt64Value + 17, // 3: proto.UpdatePackageReq.name:type_name -> google.protobuf.StringValue + 17, // 4: proto.UpdatePackageReq.url:type_name -> google.protobuf.StringValue + 16, // 5: proto.AddCommentReq.idPackage:type_name -> google.protobuf.UInt64Value + 17, // 6: proto.AddPackageReq.name:type_name -> google.protobuf.StringValue + 17, // 7: proto.AddPackageReq.url:type_name -> google.protobuf.StringValue + 3, // 8: proto.GetModuleRsp.modules:type_name -> proto.Module + 6, // 9: proto.DashboardService.ListPackage:input_type -> proto.ListPackageReq + 8, // 10: proto.DashboardService.UpdatePackage:input_type -> proto.UpdatePackageReq + 10, // 11: proto.DashboardService.AddComment:input_type -> proto.AddCommentReq + 12, // 12: proto.DashboardService.AddPackage:input_type -> proto.AddPackageReq + 14, // 13: proto.DashboardService.GetModule:input_type -> proto.GetModuleReq + 7, // 14: proto.DashboardService.ListPackage:output_type -> proto.ListPackageRsp + 9, // 15: proto.DashboardService.UpdatePackage:output_type -> proto.UpdatePackageRsp + 11, // 16: proto.DashboardService.AddComment:output_type -> proto.AddCommentRsp + 13, // 17: proto.DashboardService.AddPackage:output_type -> proto.AddPackageRsp + 15, // 18: proto.DashboardService.GetModule:output_type -> proto.GetModuleRsp + 14, // [14:19] is the sub-list for method output_type + 9, // [9:14] is the sub-list for method input_type + 9, // [9:9] is the sub-list for extension type_name + 9, // [9:9] is the sub-list for extension extendee + 0, // [0:9] is the sub-list for field type_name } func init() { file_dashboard_proto_init() } @@ -1152,18 +1261,6 @@ func file_dashboard_proto_init() { } } file_dashboard_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdatePackageRsp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_dashboard_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdatePackageReq); i { case 0: return &v.state @@ -1175,8 +1272,8 @@ func file_dashboard_proto_init() { return nil } } - file_dashboard_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddCommentRsp); i { + file_dashboard_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdatePackageRsp); i { case 0: return &v.state case 1: @@ -1187,7 +1284,7 @@ func file_dashboard_proto_init() { return nil } } - file_dashboard_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_dashboard_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddCommentReq); i { case 0: return &v.state @@ -1199,8 +1296,20 @@ func file_dashboard_proto_init() { return nil } } + file_dashboard_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AddCommentRsp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } file_dashboard_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddPackageRsp); i { + switch v := v.(*AddPackageReq); i { case 0: return &v.state case 1: @@ -1212,7 +1321,31 @@ func file_dashboard_proto_init() { } } file_dashboard_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddPackageReq); i { + switch v := v.(*AddPackageRsp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_dashboard_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetModuleReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_dashboard_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetModuleRsp); i { case 0: return &v.state case 1: @@ -1230,7 +1363,7 @@ func file_dashboard_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_dashboard_proto_rawDesc, NumEnums: 0, - NumMessages: 14, + NumMessages: 16, NumExtensions: 0, NumServices: 1, }, diff --git a/proto/go_generate/dashboard.pb.validate.go b/proto/go_generate/dashboard.pb.validate.go index a98f164..92131ab 100644 --- a/proto/go_generate/dashboard.pb.validate.go +++ b/proto/go_generate/dashboard.pb.validate.go @@ -1062,226 +1062,6 @@ var _ interface { ErrorName() string } = ListPackageRspValidationError{} -// Validate checks the field values on UpdatePackageRsp with the rules defined -// in the proto definition for this message. If any rules are violated, the -// first error encountered is returned, or nil if there are no violations. -func (m *UpdatePackageRsp) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdatePackageRsp with the rules -// defined in the proto definition for this message. If any rules are -// violated, the result is a list of violation errors wrapped in -// UpdatePackageRspMultiError, or nil if none found. -func (m *UpdatePackageRsp) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdatePackageRsp) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - if m.GetId() == nil { - err := UpdatePackageRspValidationError{ - field: "Id", - reason: "value is required", - } - if !all { - return err - } - errors = append(errors, err) - } - - if all { - switch v := interface{}(m.GetId()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdatePackageRspValidationError{ - field: "Id", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdatePackageRspValidationError{ - field: "Id", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetId()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return UpdatePackageRspValidationError{ - field: "Id", - reason: "embedded message failed validation", - cause: err, - } - } - } - - if m.GetName() == nil { - err := UpdatePackageRspValidationError{ - field: "Name", - reason: "value is required", - } - if !all { - return err - } - errors = append(errors, err) - } - - if all { - switch v := interface{}(m.GetName()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdatePackageRspValidationError{ - field: "Name", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdatePackageRspValidationError{ - field: "Name", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetName()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return UpdatePackageRspValidationError{ - field: "Name", - reason: "embedded message failed validation", - cause: err, - } - } - } - - if m.GetUrl() == nil { - err := UpdatePackageRspValidationError{ - field: "Url", - reason: "value is required", - } - if !all { - return err - } - errors = append(errors, err) - } - - if all { - switch v := interface{}(m.GetUrl()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdatePackageRspValidationError{ - field: "Url", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdatePackageRspValidationError{ - field: "Url", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetUrl()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return UpdatePackageRspValidationError{ - field: "Url", - reason: "embedded message failed validation", - cause: err, - } - } - } - - if len(errors) > 0 { - return UpdatePackageRspMultiError(errors) - } - - return nil -} - -// UpdatePackageRspMultiError is an error wrapping multiple validation errors -// returned by UpdatePackageRsp.ValidateAll() if the designated constraints -// aren't met. -type UpdatePackageRspMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdatePackageRspMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdatePackageRspMultiError) AllErrors() []error { return m } - -// UpdatePackageRspValidationError is the validation error returned by -// UpdatePackageRsp.Validate if the designated constraints aren't met. -type UpdatePackageRspValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e UpdatePackageRspValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e UpdatePackageRspValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e UpdatePackageRspValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e UpdatePackageRspValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e UpdatePackageRspValidationError) ErrorName() string { return "UpdatePackageRspValidationError" } - -// Error satisfies the builtin error interface -func (e UpdatePackageRspValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sUpdatePackageRsp.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = UpdatePackageRspValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = UpdatePackageRspValidationError{} - // Validate checks the field values on UpdatePackageReq with the rules defined // in the proto definition for this message. If any rules are violated, the // first error encountered is returned, or nil if there are no violations. @@ -1304,10 +1084,10 @@ func (m *UpdatePackageReq) validate(all bool) error { var errors []error - if m.GetId() <= 0 { + if m.GetId() == nil { err := UpdatePackageReqValidationError{ field: "Id", - reason: "value must be greater than 0", + reason: "value is required", } if !all { return err @@ -1315,6 +1095,115 @@ func (m *UpdatePackageReq) validate(all bool) error { errors = append(errors, err) } + if all { + switch v := interface{}(m.GetId()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdatePackageReqValidationError{ + field: "Id", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdatePackageReqValidationError{ + field: "Id", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetId()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return UpdatePackageReqValidationError{ + field: "Id", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if m.GetName() == nil { + err := UpdatePackageReqValidationError{ + field: "Name", + reason: "value is required", + } + if !all { + return err + } + errors = append(errors, err) + } + + if all { + switch v := interface{}(m.GetName()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdatePackageReqValidationError{ + field: "Name", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdatePackageReqValidationError{ + field: "Name", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetName()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return UpdatePackageReqValidationError{ + field: "Name", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if m.GetUrl() == nil { + err := UpdatePackageReqValidationError{ + field: "Url", + reason: "value is required", + } + if !all { + return err + } + errors = append(errors, err) + } + + if all { + switch v := interface{}(m.GetUrl()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdatePackageReqValidationError{ + field: "Url", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdatePackageReqValidationError{ + field: "Url", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetUrl()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return UpdatePackageReqValidationError{ + field: "Url", + reason: "embedded message failed validation", + cause: err, + } + } + } + if len(errors) > 0 { return UpdatePackageReqMultiError(errors) } @@ -1393,32 +1282,32 @@ var _ interface { ErrorName() string } = UpdatePackageReqValidationError{} -// Validate checks the field values on AddCommentRsp with the rules defined in -// the proto definition for this message. If any rules are violated, the first -// error encountered is returned, or nil if there are no violations. -func (m *AddCommentRsp) Validate() error { +// Validate checks the field values on UpdatePackageRsp with the rules defined +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. +func (m *UpdatePackageRsp) Validate() error { return m.validate(false) } -// ValidateAll checks the field values on AddCommentRsp with the rules defined -// in the proto definition for this message. If any rules are violated, the -// result is a list of violation errors wrapped in AddCommentRspMultiError, or -// nil if none found. -func (m *AddCommentRsp) ValidateAll() error { +// ValidateAll checks the field values on UpdatePackageRsp with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdatePackageRspMultiError, or nil if none found. +func (m *UpdatePackageRsp) ValidateAll() error { return m.validate(true) } -func (m *AddCommentRsp) validate(all bool) error { +func (m *UpdatePackageRsp) validate(all bool) error { if m == nil { return nil } var errors []error - if m.GetIdPackage() == nil { - err := AddCommentRspValidationError{ - field: "IdPackage", - reason: "value is required", + if m.GetId() <= 0 { + err := UpdatePackageRspValidationError{ + field: "Id", + reason: "value must be greater than 0", } if !all { return err @@ -1426,51 +1315,20 @@ func (m *AddCommentRsp) validate(all bool) error { errors = append(errors, err) } - if all { - switch v := interface{}(m.GetIdPackage()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, AddCommentRspValidationError{ - field: "IdPackage", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, AddCommentRspValidationError{ - field: "IdPackage", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetIdPackage()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return AddCommentRspValidationError{ - field: "IdPackage", - reason: "embedded message failed validation", - cause: err, - } - } - } - - // no validation rules for Text - if len(errors) > 0 { - return AddCommentRspMultiError(errors) + return UpdatePackageRspMultiError(errors) } return nil } -// AddCommentRspMultiError is an error wrapping multiple validation errors -// returned by AddCommentRsp.ValidateAll() if the designated constraints +// UpdatePackageRspMultiError is an error wrapping multiple validation errors +// returned by UpdatePackageRsp.ValidateAll() if the designated constraints // aren't met. -type AddCommentRspMultiError []error +type UpdatePackageRspMultiError []error // Error returns a concatenation of all the error messages it wraps. -func (m AddCommentRspMultiError) Error() string { +func (m UpdatePackageRspMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) @@ -1479,11 +1337,11 @@ func (m AddCommentRspMultiError) Error() string { } // AllErrors returns a list of validation violation errors. -func (m AddCommentRspMultiError) AllErrors() []error { return m } +func (m UpdatePackageRspMultiError) AllErrors() []error { return m } -// AddCommentRspValidationError is the validation error returned by -// AddCommentRsp.Validate if the designated constraints aren't met. -type AddCommentRspValidationError struct { +// UpdatePackageRspValidationError is the validation error returned by +// UpdatePackageRsp.Validate if the designated constraints aren't met. +type UpdatePackageRspValidationError struct { field string reason string cause error @@ -1491,22 +1349,22 @@ type AddCommentRspValidationError struct { } // Field function returns field value. -func (e AddCommentRspValidationError) Field() string { return e.field } +func (e UpdatePackageRspValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e AddCommentRspValidationError) Reason() string { return e.reason } +func (e UpdatePackageRspValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e AddCommentRspValidationError) Cause() error { return e.cause } +func (e UpdatePackageRspValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e AddCommentRspValidationError) Key() bool { return e.key } +func (e UpdatePackageRspValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e AddCommentRspValidationError) ErrorName() string { return "AddCommentRspValidationError" } +func (e UpdatePackageRspValidationError) ErrorName() string { return "UpdatePackageRspValidationError" } // Error satisfies the builtin error interface -func (e AddCommentRspValidationError) Error() string { +func (e UpdatePackageRspValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -1518,14 +1376,14 @@ func (e AddCommentRspValidationError) Error() string { } return fmt.Sprintf( - "invalid %sAddCommentRsp.%s: %s%s", + "invalid %sUpdatePackageRsp.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = AddCommentRspValidationError{} +var _ error = UpdatePackageRspValidationError{} var _ interface { Field() string @@ -1533,7 +1391,7 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = AddCommentRspValidationError{} +} = UpdatePackageRspValidationError{} // Validate checks the field values on AddCommentReq with the rules defined in // the proto definition for this message. If any rules are violated, the first @@ -1557,10 +1415,10 @@ func (m *AddCommentReq) validate(all bool) error { var errors []error - if m.GetId() <= 0 { + if m.GetIdPackage() == nil { err := AddCommentReqValidationError{ - field: "Id", - reason: "value must be greater than 0", + field: "IdPackage", + reason: "value is required", } if !all { return err @@ -1568,6 +1426,37 @@ func (m *AddCommentReq) validate(all bool) error { errors = append(errors, err) } + if all { + switch v := interface{}(m.GetIdPackage()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, AddCommentReqValidationError{ + field: "IdPackage", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, AddCommentReqValidationError{ + field: "IdPackage", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetIdPackage()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return AddCommentReqValidationError{ + field: "IdPackage", + reason: "embedded message failed validation", + cause: err, + } + } + } + + // no validation rules for Text + if len(errors) > 0 { return AddCommentReqMultiError(errors) } @@ -1646,6 +1535,297 @@ var _ interface { ErrorName() string } = AddCommentReqValidationError{} +// Validate checks the field values on AddCommentRsp with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *AddCommentRsp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on AddCommentRsp with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in AddCommentRspMultiError, or +// nil if none found. +func (m *AddCommentRsp) ValidateAll() error { + return m.validate(true) +} + +func (m *AddCommentRsp) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if m.GetId() <= 0 { + err := AddCommentRspValidationError{ + field: "Id", + reason: "value must be greater than 0", + } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return AddCommentRspMultiError(errors) + } + + return nil +} + +// AddCommentRspMultiError is an error wrapping multiple validation errors +// returned by AddCommentRsp.ValidateAll() if the designated constraints +// aren't met. +type AddCommentRspMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m AddCommentRspMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m AddCommentRspMultiError) AllErrors() []error { return m } + +// AddCommentRspValidationError is the validation error returned by +// AddCommentRsp.Validate if the designated constraints aren't met. +type AddCommentRspValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e AddCommentRspValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e AddCommentRspValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e AddCommentRspValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e AddCommentRspValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e AddCommentRspValidationError) ErrorName() string { return "AddCommentRspValidationError" } + +// Error satisfies the builtin error interface +func (e AddCommentRspValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sAddCommentRsp.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = AddCommentRspValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = AddCommentRspValidationError{} + +// Validate checks the field values on AddPackageReq with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *AddPackageReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on AddPackageReq with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in AddPackageReqMultiError, or +// nil if none found. +func (m *AddPackageReq) ValidateAll() error { + return m.validate(true) +} + +func (m *AddPackageReq) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if m.GetName() == nil { + err := AddPackageReqValidationError{ + field: "Name", + reason: "value is required", + } + if !all { + return err + } + errors = append(errors, err) + } + + if all { + switch v := interface{}(m.GetName()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, AddPackageReqValidationError{ + field: "Name", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, AddPackageReqValidationError{ + field: "Name", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetName()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return AddPackageReqValidationError{ + field: "Name", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if m.GetUrl() == nil { + err := AddPackageReqValidationError{ + field: "Url", + reason: "value is required", + } + if !all { + return err + } + errors = append(errors, err) + } + + if all { + switch v := interface{}(m.GetUrl()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, AddPackageReqValidationError{ + field: "Url", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, AddPackageReqValidationError{ + field: "Url", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetUrl()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return AddPackageReqValidationError{ + field: "Url", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if len(errors) > 0 { + return AddPackageReqMultiError(errors) + } + + return nil +} + +// AddPackageReqMultiError is an error wrapping multiple validation errors +// returned by AddPackageReq.ValidateAll() if the designated constraints +// aren't met. +type AddPackageReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m AddPackageReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m AddPackageReqMultiError) AllErrors() []error { return m } + +// AddPackageReqValidationError is the validation error returned by +// AddPackageReq.Validate if the designated constraints aren't met. +type AddPackageReqValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e AddPackageReqValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e AddPackageReqValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e AddPackageReqValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e AddPackageReqValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e AddPackageReqValidationError) ErrorName() string { return "AddPackageReqValidationError" } + +// Error satisfies the builtin error interface +func (e AddPackageReqValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sAddPackageReq.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = AddPackageReqValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = AddPackageReqValidationError{} + // Validate checks the field values on AddPackageRsp with the rules defined in // the proto definition for this message. If any rules are violated, the first // error encountered is returned, or nil if there are no violations. @@ -1668,86 +1848,6 @@ func (m *AddPackageRsp) validate(all bool) error { var errors []error - if m.GetName() == nil { - err := AddPackageRspValidationError{ - field: "Name", - reason: "value is required", - } - if !all { - return err - } - errors = append(errors, err) - } - - if all { - switch v := interface{}(m.GetName()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, AddPackageRspValidationError{ - field: "Name", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, AddPackageRspValidationError{ - field: "Name", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetName()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return AddPackageRspValidationError{ - field: "Name", - reason: "embedded message failed validation", - cause: err, - } - } - } - - if m.GetUrl() == nil { - err := AddPackageRspValidationError{ - field: "Url", - reason: "value is required", - } - if !all { - return err - } - errors = append(errors, err) - } - - if all { - switch v := interface{}(m.GetUrl()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, AddPackageRspValidationError{ - field: "Url", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, AddPackageRspValidationError{ - field: "Url", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetUrl()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return AddPackageRspValidationError{ - field: "Url", - reason: "embedded message failed validation", - cause: err, - } - } - } - if len(errors) > 0 { return AddPackageRspMultiError(errors) } @@ -1826,22 +1926,22 @@ var _ interface { ErrorName() string } = AddPackageRspValidationError{} -// Validate checks the field values on AddPackageReq with the rules defined in +// Validate checks the field values on GetModuleReq with the rules defined in // the proto definition for this message. If any rules are violated, the first // error encountered is returned, or nil if there are no violations. -func (m *AddPackageReq) Validate() error { +func (m *GetModuleReq) Validate() error { return m.validate(false) } -// ValidateAll checks the field values on AddPackageReq with the rules defined +// ValidateAll checks the field values on GetModuleReq with the rules defined // in the proto definition for this message. If any rules are violated, the -// result is a list of violation errors wrapped in AddPackageReqMultiError, or +// result is a list of violation errors wrapped in GetModuleReqMultiError, or // nil if none found. -func (m *AddPackageReq) ValidateAll() error { +func (m *GetModuleReq) ValidateAll() error { return m.validate(true) } -func (m *AddPackageReq) validate(all bool) error { +func (m *GetModuleReq) validate(all bool) error { if m == nil { return nil } @@ -1849,19 +1949,18 @@ func (m *AddPackageReq) validate(all bool) error { var errors []error if len(errors) > 0 { - return AddPackageReqMultiError(errors) + return GetModuleReqMultiError(errors) } return nil } -// AddPackageReqMultiError is an error wrapping multiple validation errors -// returned by AddPackageReq.ValidateAll() if the designated constraints -// aren't met. -type AddPackageReqMultiError []error +// GetModuleReqMultiError is an error wrapping multiple validation errors +// returned by GetModuleReq.ValidateAll() if the designated constraints aren't met. +type GetModuleReqMultiError []error // Error returns a concatenation of all the error messages it wraps. -func (m AddPackageReqMultiError) Error() string { +func (m GetModuleReqMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) @@ -1870,11 +1969,11 @@ func (m AddPackageReqMultiError) Error() string { } // AllErrors returns a list of validation violation errors. -func (m AddPackageReqMultiError) AllErrors() []error { return m } +func (m GetModuleReqMultiError) AllErrors() []error { return m } -// AddPackageReqValidationError is the validation error returned by -// AddPackageReq.Validate if the designated constraints aren't met. -type AddPackageReqValidationError struct { +// GetModuleReqValidationError is the validation error returned by +// GetModuleReq.Validate if the designated constraints aren't met. +type GetModuleReqValidationError struct { field string reason string cause error @@ -1882,22 +1981,22 @@ type AddPackageReqValidationError struct { } // Field function returns field value. -func (e AddPackageReqValidationError) Field() string { return e.field } +func (e GetModuleReqValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e AddPackageReqValidationError) Reason() string { return e.reason } +func (e GetModuleReqValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e AddPackageReqValidationError) Cause() error { return e.cause } +func (e GetModuleReqValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e AddPackageReqValidationError) Key() bool { return e.key } +func (e GetModuleReqValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e AddPackageReqValidationError) ErrorName() string { return "AddPackageReqValidationError" } +func (e GetModuleReqValidationError) ErrorName() string { return "GetModuleReqValidationError" } // Error satisfies the builtin error interface -func (e AddPackageReqValidationError) Error() string { +func (e GetModuleReqValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -1909,14 +2008,14 @@ func (e AddPackageReqValidationError) Error() string { } return fmt.Sprintf( - "invalid %sAddPackageReq.%s: %s%s", + "invalid %sGetModuleReq.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = AddPackageReqValidationError{} +var _ error = GetModuleReqValidationError{} var _ interface { Field() string @@ -1924,4 +2023,137 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = AddPackageReqValidationError{} +} = GetModuleReqValidationError{} + +// Validate checks the field values on GetModuleRsp with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *GetModuleRsp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetModuleRsp with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in GetModuleRspMultiError, or +// nil if none found. +func (m *GetModuleRsp) ValidateAll() error { + return m.validate(true) +} + +func (m *GetModuleRsp) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + for idx, item := range m.GetModules() { + _, _ = idx, item + + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetModuleRspValidationError{ + field: fmt.Sprintf("Modules[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetModuleRspValidationError{ + field: fmt.Sprintf("Modules[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return GetModuleRspValidationError{ + field: fmt.Sprintf("Modules[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } + } + } + + } + + if len(errors) > 0 { + return GetModuleRspMultiError(errors) + } + + return nil +} + +// GetModuleRspMultiError is an error wrapping multiple validation errors +// returned by GetModuleRsp.ValidateAll() if the designated constraints aren't met. +type GetModuleRspMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetModuleRspMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetModuleRspMultiError) AllErrors() []error { return m } + +// GetModuleRspValidationError is the validation error returned by +// GetModuleRsp.Validate if the designated constraints aren't met. +type GetModuleRspValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e GetModuleRspValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e GetModuleRspValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e GetModuleRspValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e GetModuleRspValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e GetModuleRspValidationError) ErrorName() string { return "GetModuleRspValidationError" } + +// Error satisfies the builtin error interface +func (e GetModuleRspValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sGetModuleRsp.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = GetModuleRspValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = GetModuleRspValidationError{} diff --git a/proto/micro/dashboard_micro.pb.go b/proto/micro/dashboard_micro.pb.go index 2120f79..2d09b9d 100644 --- a/proto/micro/dashboard_micro.pb.go +++ b/proto/micro/dashboard_micro.pb.go @@ -22,14 +22,16 @@ var ( type DashboardServiceClient interface { ListPackage(ctx context.Context, req *go_generate.ListPackageReq, opts ...client.CallOption) (*go_generate.ListPackageRsp, error) - UpdatePackage(ctx context.Context, req *go_generate.UpdatePackageRsp, opts ...client.CallOption) (*go_generate.UpdatePackageReq, error) - AddComment(ctx context.Context, req *go_generate.AddCommentRsp, opts ...client.CallOption) (*go_generate.AddCommentReq, error) - AddPackage(ctx context.Context, req *go_generate.AddPackageRsp, opts ...client.CallOption) (*go_generate.AddPackageReq, error) + UpdatePackage(ctx context.Context, req *go_generate.UpdatePackageReq, opts ...client.CallOption) (*go_generate.UpdatePackageRsp, error) + AddComment(ctx context.Context, req *go_generate.AddCommentReq, opts ...client.CallOption) (*go_generate.AddCommentRsp, error) + AddPackage(ctx context.Context, req *go_generate.AddPackageReq, opts ...client.CallOption) (*go_generate.AddPackageRsp, error) + GetModule(ctx context.Context, req *go_generate.GetModuleReq, opts ...client.CallOption) (*go_generate.GetModuleRsp, error) } type DashboardServiceServer interface { ListPackage(ctx context.Context, req *go_generate.ListPackageReq, rsp *go_generate.ListPackageRsp) error - UpdatePackage(ctx context.Context, req *go_generate.UpdatePackageRsp, rsp *go_generate.UpdatePackageReq) error - AddComment(ctx context.Context, req *go_generate.AddCommentRsp, rsp *go_generate.AddCommentReq) error - AddPackage(ctx context.Context, req *go_generate.AddPackageRsp, rsp *go_generate.AddPackageReq) error + UpdatePackage(ctx context.Context, req *go_generate.UpdatePackageReq, rsp *go_generate.UpdatePackageRsp) error + AddComment(ctx context.Context, req *go_generate.AddCommentReq, rsp *go_generate.AddCommentRsp) error + AddPackage(ctx context.Context, req *go_generate.AddPackageReq, rsp *go_generate.AddPackageRsp) error + GetModule(ctx context.Context, req *go_generate.GetModuleReq, rsp *go_generate.GetModuleRsp) error } diff --git a/proto/micro/dashboard_micro_http.pb.go b/proto/micro/dashboard_micro_http.pb.go index 0db14fe..769cc56 100644 --- a/proto/micro/dashboard_micro_http.pb.go +++ b/proto/micro/dashboard_micro_http.pb.go @@ -31,8 +31,8 @@ func (c *dashboardServiceClient) ListPackage(ctx context.Context, req *go_genera return rsp, nil } -func (c *dashboardServiceClient) UpdatePackage(ctx context.Context, req *go_generate.UpdatePackageRsp, opts ...client.CallOption) (*go_generate.UpdatePackageReq, error) { - rsp := &go_generate.UpdatePackageReq{} +func (c *dashboardServiceClient) UpdatePackage(ctx context.Context, req *go_generate.UpdatePackageReq, opts ...client.CallOption) (*go_generate.UpdatePackageRsp, error) { + rsp := &go_generate.UpdatePackageRsp{} err := c.c.Call(ctx, c.c.NewRequest(c.name, "DashboardService.UpdatePackage", req), rsp, opts...) if err != nil { return nil, err @@ -40,8 +40,8 @@ func (c *dashboardServiceClient) UpdatePackage(ctx context.Context, req *go_gene return rsp, nil } -func (c *dashboardServiceClient) AddComment(ctx context.Context, req *go_generate.AddCommentRsp, opts ...client.CallOption) (*go_generate.AddCommentReq, error) { - rsp := &go_generate.AddCommentReq{} +func (c *dashboardServiceClient) AddComment(ctx context.Context, req *go_generate.AddCommentReq, opts ...client.CallOption) (*go_generate.AddCommentRsp, error) { + rsp := &go_generate.AddCommentRsp{} err := c.c.Call(ctx, c.c.NewRequest(c.name, "DashboardService.AddComment", req), rsp, opts...) if err != nil { return nil, err @@ -49,8 +49,8 @@ func (c *dashboardServiceClient) AddComment(ctx context.Context, req *go_generat return rsp, nil } -func (c *dashboardServiceClient) AddPackage(ctx context.Context, req *go_generate.AddPackageRsp, opts ...client.CallOption) (*go_generate.AddPackageReq, error) { - rsp := &go_generate.AddPackageReq{} +func (c *dashboardServiceClient) AddPackage(ctx context.Context, req *go_generate.AddPackageReq, opts ...client.CallOption) (*go_generate.AddPackageRsp, error) { + rsp := &go_generate.AddPackageRsp{} err := c.c.Call(ctx, c.c.NewRequest(c.name, "DashboardService.AddPackage", req), rsp, opts...) if err != nil { return nil, err @@ -58,6 +58,15 @@ func (c *dashboardServiceClient) AddPackage(ctx context.Context, req *go_generat return rsp, nil } +func (c *dashboardServiceClient) GetModule(ctx context.Context, req *go_generate.GetModuleReq, opts ...client.CallOption) (*go_generate.GetModuleRsp, error) { + rsp := &go_generate.GetModuleRsp{} + err := c.c.Call(ctx, c.c.NewRequest(c.name, "DashboardService.GetModule", req), rsp, opts...) + if err != nil { + return nil, err + } + return rsp, nil +} + type dashboardServiceServer struct { DashboardServiceServer } @@ -66,24 +75,29 @@ func (h *dashboardServiceServer) ListPackage(ctx context.Context, req *go_genera return h.DashboardServiceServer.ListPackage(ctx, req, rsp) } -func (h *dashboardServiceServer) UpdatePackage(ctx context.Context, req *go_generate.UpdatePackageRsp, rsp *go_generate.UpdatePackageReq) error { +func (h *dashboardServiceServer) UpdatePackage(ctx context.Context, req *go_generate.UpdatePackageReq, rsp *go_generate.UpdatePackageRsp) error { return h.DashboardServiceServer.UpdatePackage(ctx, req, rsp) } -func (h *dashboardServiceServer) AddComment(ctx context.Context, req *go_generate.AddCommentRsp, rsp *go_generate.AddCommentReq) error { +func (h *dashboardServiceServer) AddComment(ctx context.Context, req *go_generate.AddCommentReq, rsp *go_generate.AddCommentRsp) error { return h.DashboardServiceServer.AddComment(ctx, req, rsp) } -func (h *dashboardServiceServer) AddPackage(ctx context.Context, req *go_generate.AddPackageRsp, rsp *go_generate.AddPackageReq) error { +func (h *dashboardServiceServer) AddPackage(ctx context.Context, req *go_generate.AddPackageReq, rsp *go_generate.AddPackageRsp) error { return h.DashboardServiceServer.AddPackage(ctx, req, rsp) } +func (h *dashboardServiceServer) GetModule(ctx context.Context, req *go_generate.GetModuleReq, rsp *go_generate.GetModuleRsp) error { + return h.DashboardServiceServer.GetModule(ctx, req, rsp) +} + func RegisterDashboardServiceServer(s server.Server, sh DashboardServiceServer, opts ...server.HandlerOption) error { type dashboardService interface { ListPackage(ctx context.Context, req *go_generate.ListPackageReq, rsp *go_generate.ListPackageRsp) error - UpdatePackage(ctx context.Context, req *go_generate.UpdatePackageRsp, rsp *go_generate.UpdatePackageReq) error - AddComment(ctx context.Context, req *go_generate.AddCommentRsp, rsp *go_generate.AddCommentReq) error - AddPackage(ctx context.Context, req *go_generate.AddPackageRsp, rsp *go_generate.AddPackageReq) error + UpdatePackage(ctx context.Context, req *go_generate.UpdatePackageReq, rsp *go_generate.UpdatePackageRsp) error + AddComment(ctx context.Context, req *go_generate.AddCommentReq, rsp *go_generate.AddCommentRsp) error + AddPackage(ctx context.Context, req *go_generate.AddPackageReq, rsp *go_generate.AddPackageRsp) error + GetModule(ctx context.Context, req *go_generate.GetModuleReq, rsp *go_generate.GetModuleRsp) error } type DashboardService struct { dashboardService diff --git a/service/client_git/client.go b/service/client_git/client.go index 664d221..de49bdc 100644 --- a/service/client_git/client.go +++ b/service/client_git/client.go @@ -24,26 +24,26 @@ import ( ) type Client interface { - Run(ctx context.Context, st storage.Storage) chan *pb.AddPackageRsp + Run(ctx context.Context, st storage.Storage) chan *pb.AddPackageReq IsClose() bool Done() <-chan struct{} } type client struct { - worker chan *pb.AddPackageRsp + worker chan *pb.AddPackageReq closed bool lock chan struct{} } func NewClient(cap uint) Client { return &client{ - make(chan *pb.AddPackageRsp, cap), + make(chan *pb.AddPackageReq, cap), false, make(chan struct{}), } } -func (c *client) Run(ctx context.Context, st storage.Storage) chan *pb.AddPackageRsp { +func (c *client) Run(ctx context.Context, st storage.Storage) chan *pb.AddPackageReq { go func() { defer close(c.worker) for { @@ -71,8 +71,8 @@ func (c *client) Done() <-chan struct{} { return c.lock } -func runner(ctx context.Context, st storage.Storage, rsp *pb.AddPackageRsp) { - modules, err := getGoModule(ctx, rsp.Url.Value) +func runner(ctx context.Context, st storage.Storage, req *pb.AddPackageReq) { + modules, err := getGoModule(ctx, req.Url.Value) if err != nil { logger.Error(ctx, err) return @@ -80,12 +80,12 @@ func runner(ctx context.Context, st storage.Storage, rsp *pb.AddPackageRsp) { logger.Infof(ctx, "success get list mod", modules) - if rsp.Modules, err = st.InsertButchModules(ctx, modules); err != nil { + if req.Modules, err = st.InsertButchModules(ctx, modules); err != nil { logger.Error(ctx, err) return } - if err = st.AddPackage(ctx, rsp); err != nil { + if err = st.AddPackage(ctx, req); err != nil { logger.Error(ctx, err) } } diff --git a/service/client_git/client_test.go b/service/client_git/client_test.go index 784685f..a779ad5 100644 --- a/service/client_git/client_test.go +++ b/service/client_git/client_test.go @@ -39,7 +39,7 @@ func TestClientPG(t *testing.T) { ch := cli.Run(ctx, s) - data := &pb.AddPackageRsp{ + data := &pb.AddPackageReq{ Name: wrapperspb.String("test"), Url: wrapperspb.String("https://github.com/dantedenis/service_history.git"), } @@ -75,7 +75,7 @@ func TestClientLite(t *testing.T) { ch := cli.Run(ctx, s) - data := &pb.AddPackageRsp{ + data := &pb.AddPackageReq{ Name: wrapperspb.String("test"), Url: wrapperspb.String("https://github.com/dantedenis/service_history.git"), } diff --git a/service/service.go b/service/service.go index c43ed6b..8b8fb75 100644 --- a/service/service.go +++ b/service/service.go @@ -132,6 +132,7 @@ func NewService(ctx context.Context) (micro.Service, error) { mux.HandleFunc("/updatePackage", handler.Methods(http.MethodPost, h.UpdatePackage)) mux.HandleFunc("/addComment", handler.Methods(http.MethodPut, h.AddComment)) mux.HandleFunc("/addPackage", handler.Methods(http.MethodPost, h.AddPackage)) + mux.HandleFunc("/getModule", handler.Methods(http.MethodGet, h.GetModule)) if err = svc.Server().Handle(svc.Server().NewHandler(mux)); err != nil { logger.Fatalf(ctx, "failed to register handler: %v", err) diff --git a/storage/postgres/storage.go b/storage/postgres/storage.go index 81e62ff..ad50e56 100644 --- a/storage/postgres/storage.go +++ b/storage/postgres/storage.go @@ -89,7 +89,7 @@ func (s *Postgres) MigrateDown() error { return nil } -func (s *Postgres) UpdatePackage(ctx context.Context, rsp *pb.UpdatePackageRsp) error { +func (s *Postgres) UpdatePackage(ctx context.Context, req *pb.UpdatePackageReq) error { panic("need implement") } @@ -122,7 +122,7 @@ func (s *Postgres) ListPackage(ctx context.Context) (models.ListPackage, error) return result, err } -func (s *Postgres) AddComment(ctx context.Context, rsp *pb.AddCommentRsp) error { +func (s *Postgres) AddComment(ctx context.Context, req *pb.AddCommentReq) error { tx, err := s.db.BeginTx(ctx, nil) if err != nil { return err @@ -138,7 +138,7 @@ func (s *Postgres) AddComment(ctx context.Context, rsp *pb.AddCommentRsp) error } }() - res, err := tx.ExecContext(ctx, queryAddComment, rsp.Text, rsp.IdPackage.Value) + res, err := tx.ExecContext(ctx, queryAddComment, req.Text, req.IdPackage.Value) if err != nil { return err } @@ -152,7 +152,7 @@ func (s *Postgres) AddComment(ctx context.Context, rsp *pb.AddCommentRsp) error return err } -func (s *Postgres) AddPackage(ctx context.Context, rsp *pb.AddPackageRsp) error { +func (s *Postgres) AddPackage(ctx context.Context, req *pb.AddPackageReq) error { tx, err := s.db.BeginTx(ctx, nil) if err != nil { return err @@ -168,7 +168,7 @@ func (s *Postgres) AddPackage(ctx context.Context, rsp *pb.AddPackageRsp) error } }() - res, err := tx.ExecContext(ctx, queryAddPackage, rsp.Name.Value, rsp.Url.Value, pq.Array(rsp.Modules)) + res, err := tx.ExecContext(ctx, queryAddPackage, req.Name.Value, req.Url.Value, pq.Array(req.Modules)) if err != nil { return err } @@ -182,7 +182,7 @@ func (s *Postgres) AddPackage(ctx context.Context, rsp *pb.AddPackageRsp) error return err } -func (s *Postgres) InsertButchModules(ctx context.Context, rsp []models.Module) ([]uint64, error) { +func (s *Postgres) InsertButchModules(ctx context.Context, req []models.Module) ([]uint64, error) { tx, err := s.db.BeginTx(ctx, nil) if err != nil { return nil, err @@ -197,7 +197,7 @@ func (s *Postgres) InsertButchModules(ctx context.Context, rsp []models.Module) } }() - query := generateQuery(rsp) + query := generateQuery(req) rows, err := tx.QueryContext(ctx, query) if err != nil { diff --git a/storage/postgres/storage_test.go b/storage/postgres/storage_test.go index 9f228b1..2fcbd67 100644 --- a/storage/postgres/storage_test.go +++ b/storage/postgres/storage_test.go @@ -9,16 +9,28 @@ import ( func TestGenerate(t *testing.T) { m := []models.Module{ { - 1, "test", "1.2.3", 2, "23.31", + ID: 1, + Name: "test", + Version: "1.2.3", + Package: 2, + LastVersion: "23.31", }, { - 1, "321test", "1.3", 4, "2111.31", + ID: 1, + Name: "321test", + Version: "1.3", + Package: 4, + LastVersion: "2111.31", }, { - 1, "testabcd", "1.2.3", 2, "153453.31", + ID: 1, + Name: "testabcd", + Version: "1.2.3", + Package: 2, + LastVersion: "153453.31", }, } - + str := generateQuery(m) fmt.Println(str) diff --git a/storage/sqlite/storage.go b/storage/sqlite/storage.go index 5e21b5b..1b2f140 100644 --- a/storage/sqlite/storage.go +++ b/storage/sqlite/storage.go @@ -91,7 +91,7 @@ func (s *Sqlite) MigrateDown() error { return nil } -func (s *Sqlite) UpdatePackage(ctx context.Context, rsp *pb.UpdatePackageRsp) error { +func (s *Sqlite) UpdatePackage(ctx context.Context, req *pb.UpdatePackageReq) error { panic("need implement") } @@ -124,7 +124,7 @@ func (s *Sqlite) ListPackage(ctx context.Context) (models.ListPackage, error) { return result, err } -func (s *Sqlite) AddComment(ctx context.Context, rsp *pb.AddCommentRsp) error { +func (s *Sqlite) AddComment(ctx context.Context, req *pb.AddCommentReq) error { tx, err := s.db.BeginTx(ctx, nil) if err != nil { return err @@ -140,7 +140,7 @@ func (s *Sqlite) AddComment(ctx context.Context, rsp *pb.AddCommentRsp) error { } }() - res, err := tx.ExecContext(ctx, queryAddComment, rsp.Text, rsp.IdPackage.Value) + res, err := tx.ExecContext(ctx, queryAddComment, req.Text, req.IdPackage.Value) if err != nil { return err } @@ -154,7 +154,7 @@ func (s *Sqlite) AddComment(ctx context.Context, rsp *pb.AddCommentRsp) error { return err } -func (s *Sqlite) AddPackage(ctx context.Context, rsp *pb.AddPackageRsp) error { +func (s *Sqlite) AddPackage(ctx context.Context, req *pb.AddPackageReq) error { tx, err := s.db.BeginTx(ctx, nil) if err != nil { return err @@ -170,7 +170,7 @@ func (s *Sqlite) AddPackage(ctx context.Context, rsp *pb.AddPackageRsp) error { } }() - res, err := tx.ExecContext(ctx, queryAddPackage, rsp.Name.Value, rsp.Url.Value, pq.Array(rsp.Modules)) + res, err := tx.ExecContext(ctx, queryAddPackage, req.Name.Value, req.Url.Value, pq.Array(req.Modules)) if err != nil { return err } @@ -184,7 +184,7 @@ func (s *Sqlite) AddPackage(ctx context.Context, rsp *pb.AddPackageRsp) error { return err } -func (s *Sqlite) InsertButchModules(ctx context.Context, rsp []models.Module) ([]uint64, error) { +func (s *Sqlite) InsertButchModules(ctx context.Context, req []models.Module) ([]uint64, error) { tx, err := s.db.BeginTx(ctx, nil) if err != nil { return nil, err @@ -199,7 +199,7 @@ func (s *Sqlite) InsertButchModules(ctx context.Context, rsp []models.Module) ([ } }() - query := generateQuery(rsp) + query := generateQuery(req) rows, err := tx.QueryContext(ctx, query) if err != nil { diff --git a/storage/storage.go b/storage/storage.go index 64df6c5..7d93511 100644 --- a/storage/storage.go +++ b/storage/storage.go @@ -28,10 +28,10 @@ type Storage interface { cmsstorage.Migrator ListPackage(ctx context.Context) (models.ListPackage, error) - UpdatePackage(ctx context.Context, rsp *pb.UpdatePackageRsp) error - AddComment(ctx context.Context, rsp *pb.AddCommentRsp) error - AddPackage(ctx context.Context, rsp *pb.AddPackageRsp) error - InsertButchModules(ctx context.Context, rsp []models.Module) ([]uint64, error) + UpdatePackage(ctx context.Context, req *pb.UpdatePackageReq) error + AddComment(ctx context.Context, req *pb.AddCommentReq) error + AddPackage(ctx context.Context, req *pb.AddPackageReq) error + InsertButchModules(ctx context.Context, req []models.Module) ([]uint64, error) } func NewStorage(name string, db *sql.DB) (interface{}, error) { -- 2.45.2 From 7de883b8c0f34f7b3e94bb40d964ec87aa9f1713 Mon Sep 17 00:00:00 2001 From: Evstigneev Denis Date: Fri, 11 Aug 2023 16:24:16 +0300 Subject: [PATCH 10/16] add storage sqlite GetModule with save ineq --- handler/handlers.go | 40 ++++++++++++++++++++++++++++---- storage/sqlite/quries.go | 4 ++++ storage/sqlite/storage.go | 48 +++++++++++++++++++++++++++++++++++++++ storage/storage.go | 1 + storage/storage_test.go | 42 ++++++++++++++++++++++++++++++++++ 5 files changed, 131 insertions(+), 4 deletions(-) create mode 100644 storage/storage_test.go diff --git a/handler/handlers.go b/handler/handlers.go index a9cbfc4..c39bf0b 100644 --- a/handler/handlers.go +++ b/handler/handlers.go @@ -2,9 +2,7 @@ package handler import ( "context" - "io" - "net/http" - + "encoding/json" cmsstorage "go.unistack.org/cms-service/storage" "go.unistack.org/micro/v3" "go.unistack.org/micro/v3/errors" @@ -13,6 +11,10 @@ import ( cligit "go.unistack.org/unistack-org/pkgdash/service/client_git" "go.unistack.org/unistack-org/pkgdash/storage" "google.golang.org/protobuf/encoding/protojson" + "google.golang.org/protobuf/proto" + "io" + "net/http" + "net/url" ) type Handler struct { @@ -156,7 +158,37 @@ func (h *Handler) GetModule(w http.ResponseWriter, r *http.Request) { logger := h.svc.Logger() logger.Debug(ctx, "Start GetModule") - //rsp := new(pb.GetModuleRsp) + req := new(pb.GetModuleReq) + if err := h.URLValuesToProto(r.URL.Query(), req); err != nil { + logger.Errorf(ctx, "Required parameter missing: %v", err) + h.writer.Response(ctx, w, err) + return + } + +} + +func (h *Handler) URLValuesToProto(vals url.Values, msg proto.Message) error { + params := make(map[string]interface{}) + var err error + for k, v := range vals { + if len(v) == 0 { + continue + } + switch k { + case "id": + params[k] = v + default: + params[k] = v[0] + } + } + b, err := json.Marshal(params) + if err != nil { + return NewUnmarshalError(err) + } + if err = h.Unmarshal(b, msg); err != nil { + return NewUnmarshalError(err) + } + return nil } func NewHandler(svc micro.Service, w writer, client cligit.Client) *Handler { diff --git a/storage/sqlite/quries.go b/storage/sqlite/quries.go index df92c68..2b6922b 100644 --- a/storage/sqlite/quries.go +++ b/storage/sqlite/quries.go @@ -24,5 +24,9 @@ insert into package(name, url, modules) values ($1, $2, $3); insert into module(name, version, last_version) values %s returning id; +` + queryGetModule = ` +select id, name, version, last_version from module +where id in %s ; ` ) diff --git a/storage/sqlite/storage.go b/storage/sqlite/storage.go index 1b2f140..db09ca0 100644 --- a/storage/sqlite/storage.go +++ b/storage/sqlite/storage.go @@ -225,6 +225,50 @@ func (s *Sqlite) InsertButchModules(ctx context.Context, req []models.Module) ([ return result, err } +func (s *Sqlite) GetModule(ctx context.Context, req *pb.GetModuleReq) (result []models.Module, err error) { + query := "" + if len(req.ModulesId) < 1 { + query = fmt.Sprintf(queryGetModule, "() or 1=1") + } else { + query = fmt.Sprintf(queryGetModule, generateArrayIneq(len(req.GetModulesId()))) + } + + rows, err := s.db.QueryContext(ctx, query, convertSliceUInt(req.ModulesId...)...) + if err != nil { + return nil, err + } + defer func() { + if err = rows.Close(); err != nil { + return + } + err = rows.Err() + }() + + for rows.Next() { + tmp := models.Module{} + if err = rows.Scan( + &tmp.ID, + &tmp.Name, + &tmp.Version, + &tmp.LastVersion, + ); err != nil { + return nil, err + } + + result = append(result, tmp) + } + + return result, err +} + +func convertSliceUInt(arg ...uint64) []interface{} { + result := make([]interface{}, 0, len(arg)) + for i := range arg { + result = append(result, arg[i]) + } + return result +} + func generateQuery(rsp []models.Module) string { const pattern = `%c('%s', '%s', '%s')` build := strings.Builder{} @@ -237,3 +281,7 @@ func generateQuery(rsp []models.Module) string { return fmt.Sprintf(queryInsMsgGetIDs, build.String()) } + +func generateArrayIneq(count int) string { + return "(?" + strings.Repeat(",?", count-1) + ")" +} diff --git a/storage/storage.go b/storage/storage.go index 7d93511..255e60f 100644 --- a/storage/storage.go +++ b/storage/storage.go @@ -32,6 +32,7 @@ type Storage interface { AddComment(ctx context.Context, req *pb.AddCommentReq) error AddPackage(ctx context.Context, req *pb.AddPackageReq) error InsertButchModules(ctx context.Context, req []models.Module) ([]uint64, error) + GetModule(ctx context.Context, req *pb.GetModuleReq) ([]models.Module, error) } func NewStorage(name string, db *sql.DB) (interface{}, error) { diff --git a/storage/storage_test.go b/storage/storage_test.go new file mode 100644 index 0000000..6ae3572 --- /dev/null +++ b/storage/storage_test.go @@ -0,0 +1,42 @@ +package storage + +import ( + "context" + "database/sql" + "fmt" + pb "go.unistack.org/unistack-org/pkgdash/proto/go_generate" + "go.unistack.org/unistack-org/pkgdash/storage/sqlite" + "testing" +) + +func TestGetModule(t *testing.T) { + conn, err := sql.Open("sqlite3", "/Users/devstigneev_local/GolandProjects/unistack/pkgdash/identifier.sqlite") + if err != nil { + t.Fatal(err) + } + defer conn.Close() + if err = conn.Ping(); err != nil { + t.Fatal(err) + } + + st, err := sqlite.NewStorage(conn) + if err != nil { + t.Fatal(err) + } + + s, ok := st.(Storage) + if !ok { + t.Fatal("typecast error") + } + + req := &pb.GetModuleReq{ + ModulesId: []uint64{1, 2, 5, 40}, + } + + module, err := s.GetModule(context.Background(), req) + if err != nil { + t.Fatal(err) + } + + fmt.Println(module) +} -- 2.45.2 From 71f438e108f7306359991a69b7ac47dbf5d2d5c2 Mon Sep 17 00:00:00 2001 From: Evstigneev Denis Date: Fri, 11 Aug 2023 17:07:37 +0300 Subject: [PATCH 11/16] add logic to GetModule handler --- handler/handlers.go | 19 +- models/entities.go | 14 +- models/mapping.go | 20 +- proto/dashboard.proto | 3 +- proto/go_generate/dashboard.pb.go | 208 +++++++++++---------- proto/go_generate/dashboard.pb.validate.go | 11 ++ storage/sqlite/storage.go | 10 +- storage/storage.go | 2 +- 8 files changed, 169 insertions(+), 118 deletions(-) diff --git a/handler/handlers.go b/handler/handlers.go index c39bf0b..b772d93 100644 --- a/handler/handlers.go +++ b/handler/handlers.go @@ -42,7 +42,7 @@ func (h *Handler) ListPackage(w http.ResponseWriter, r *http.Request) { } rsp := new(pb.ListPackageRsp) - rsp.Packages = dbRsp.Mapping() + rsp.Packages = dbRsp.Decode() logger.Debug(ctx, "Success finish getListPackage") h.writer.Response(ctx, w, rsp) @@ -159,15 +159,26 @@ func (h *Handler) GetModule(w http.ResponseWriter, r *http.Request) { logger.Debug(ctx, "Start GetModule") req := new(pb.GetModuleReq) - if err := h.URLValuesToProto(r.URL.Query(), req); err != nil { + if err := URLValuesToProto(r.URL.Query(), req); err != nil { logger.Errorf(ctx, "Required parameter missing: %v", err) h.writer.Response(ctx, w, err) return } + modules, err := h.store.GetModule(ctx, req) + if err != nil { + logger.Error(ctx, err) + h.writer.Response(ctx, w, NewInternalError(err)) + return + } + + rsp := &pb.GetModuleRsp{Modules: modules.Decode()} + h.writer.Response(ctx, w, rsp) + + logger.Debug(ctx, "Success finish getModule") } -func (h *Handler) URLValuesToProto(vals url.Values, msg proto.Message) error { +func URLValuesToProto(vals url.Values, msg proto.Message) error { params := make(map[string]interface{}) var err error for k, v := range vals { @@ -185,7 +196,7 @@ func (h *Handler) URLValuesToProto(vals url.Values, msg proto.Message) error { if err != nil { return NewUnmarshalError(err) } - if err = h.Unmarshal(b, msg); err != nil { + if err = protojson.Unmarshal(b, msg); err != nil { return NewUnmarshalError(err) } return nil diff --git a/models/entities.go b/models/entities.go index e40e007..e9e2d52 100644 --- a/models/entities.go +++ b/models/entities.go @@ -16,30 +16,30 @@ type Package struct { } type Module struct { - ID int64 `db:"id"` + ID uint64 `db:"id"` Name string `db:"name"` // module name Version string `db:"version"` // module - Package int64 `db:"package"` + Package uint64 `db:"package"` LastVersion string `db:"last_version"` } type Issue struct { - ID int64 `db:"id"` - Status int64 `db:"status"` + ID uint64 `db:"id"` + Status uint64 `db:"status"` Desc string `db:"desc"` Package int64 `db:"package"` Modules []int64 `db:"modules"` } type Comment struct { - ID int64 `db:"id" json:"id"` + ID uint64 `db:"id" json:"id"` Text string `db:"value" json:"text"` Created pgtype.Date `db:"created" json:"created"` Updated pgtype.Date `db:"updated" json:"updated,omitempty"` } type Dashboard struct { - ID int64 `db:"id"` + ID uint64 `db:"id"` Uuid uuid.UUID `db:"uuid"` - Packages []int64 `db:"package"` + Packages []uint64 `db:"package"` } diff --git a/models/mapping.go b/models/mapping.go index 04413f1..95b1437 100644 --- a/models/mapping.go +++ b/models/mapping.go @@ -6,7 +6,7 @@ import ( type ListPackage []*Package -func (l ListPackage) Mapping() []*pb.Package { +func (l ListPackage) Decode() []*pb.Package { result := make([]*pb.Package, 0, len(l)) for i := range l { @@ -24,3 +24,21 @@ func (l ListPackage) Mapping() []*pb.Package { return result } + +type ListModule []*Module + +func (l ListModule) Decode() []*pb.Module { + result := make([]*pb.Module, 0, len(l)) + for i := range l { + temp := &pb.Module{ + Id: l[i].ID, + Name: l[i].Name, + Version: l[i].Version, + LastVersion: l[i].LastVersion, + } + + result = append(result, temp) + } + + return result +} diff --git a/proto/dashboard.proto b/proto/dashboard.proto index 5dc2a57..55072d2 100644 --- a/proto/dashboard.proto +++ b/proto/dashboard.proto @@ -40,6 +40,7 @@ message Module { string name = 2 [(validate.rules).string.min_len = 1]; string version = 3 [(validate.rules).string.min_len = 1]; uint64 package = 4 [(validate.rules).uint64.gt = 0]; + string last_version = 5 [(validate.rules).string.min_len = 1]; } message Issue { @@ -91,7 +92,7 @@ message AddPackageReq { message AddPackageRsp{} message GetModuleReq { - repeated uint64 modules_id = 1 ; + repeated uint64 id = 1 ; } message GetModuleRsp { repeated Module modules = 1 ; diff --git a/proto/go_generate/dashboard.pb.go b/proto/go_generate/dashboard.pb.go index c893678..9c9c65d 100644 --- a/proto/go_generate/dashboard.pb.go +++ b/proto/go_generate/dashboard.pb.go @@ -232,10 +232,11 @@ type Module struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` - Package uint64 `protobuf:"varint,4,opt,name=package,proto3" json:"package,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` + Package uint64 `protobuf:"varint,4,opt,name=package,proto3" json:"package,omitempty"` + LastVersion string `protobuf:"bytes,5,opt,name=last_version,json=lastVersion,proto3" json:"last_version,omitempty"` } func (x *Module) Reset() { @@ -298,6 +299,13 @@ func (x *Module) GetPackage() uint64 { return 0 } +func (x *Module) GetLastVersion() string { + if x != nil { + return x.LastVersion + } + return "" +} + type Issue struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -875,7 +883,7 @@ type GetModuleReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ModulesId []uint64 `protobuf:"varint,1,rep,packed,name=modules_id,json=modulesId,proto3" json:"modules_id,omitempty"` + Id []uint64 `protobuf:"varint,1,rep,packed,name=id,proto3" json:"id,omitempty"` } func (x *GetModuleReq) Reset() { @@ -910,9 +918,9 @@ func (*GetModuleReq) Descriptor() ([]byte, []int) { return file_dashboard_proto_rawDescGZIP(), []int{14} } -func (x *GetModuleReq) GetModulesId() []uint64 { +func (x *GetModuleReq) GetId() []uint64 { if x != nil { - return x.ModulesId + return x.Id } return nil } @@ -991,7 +999,7 @@ var file_dashboard_proto_rawDesc = []byte{ 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, - 0x03, 0x28, 0x04, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x84, 0x01, + 0x03, 0x28, 0x04, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xb0, 0x01, 0x0a, 0x06, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, @@ -1000,102 +1008,104 @@ var file_dashboard_proto_rawDesc = []byte{ 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x07, 0x70, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x22, 0x9b, 0x01, 0x0a, 0x05, 0x49, 0x73, 0x73, 0x75, 0x65, 0x12, 0x17, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, - 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, - 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, - 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x21, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, - 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x75, - 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, - 0x65, 0x73, 0x22, 0x9f, 0x01, 0x0a, 0x07, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x17, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, - 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, - 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, - 0x00, 0x52, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, - 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x21, - 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, - 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x12, 0x21, 0x0a, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x07, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x64, 0x22, 0x10, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, - 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x22, 0x3c, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, - 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x12, 0x2a, 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, - 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, - 0x61, 0x67, 0x65, 0x73, 0x22, 0xf2, 0x01, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, - 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x36, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x3a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x08, 0xfa, - 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, - 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, - 0x10, 0x01, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, - 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, - 0x73, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, - 0x04, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x22, 0x2b, 0x0a, 0x10, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x12, 0x17, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, - 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x22, 0x69, 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6d, - 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, 0x44, 0x0a, 0x09, 0x69, 0x64, 0x50, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, - 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, - 0x10, 0x01, 0x52, 0x09, 0x69, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, - 0x74, 0x22, 0x28, 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, - 0x73, 0x70, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, - 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x22, 0x9f, 0x01, 0x0a, 0x0d, - 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x3a, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, + 0x6b, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, + 0x02, 0x10, 0x01, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x22, 0x9b, 0x01, 0x0a, 0x05, 0x49, 0x73, 0x73, 0x75, 0x65, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x64, 0x65, 0x73, + 0x63, 0x12, 0x21, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x07, 0x70, 0x61, 0x63, + 0x6b, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x22, 0x9f, + 0x01, 0x0a, 0x07, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x07, 0x70, + 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x21, 0x0a, 0x07, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, + 0x32, 0x02, 0x20, 0x00, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x21, 0x0a, + 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, + 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x22, 0x10, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, + 0x65, 0x71, 0x22, 0x3c, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, + 0x65, 0x52, 0x73, 0x70, 0x12, 0x2a, 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, + 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, + 0x22, 0xf2, 0x01, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x61, + 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x36, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x03, 0x75, 0x72, 0x6c, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x03, - 0x75, 0x72, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x22, 0x0f, 0x0a, - 0x0d, 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x22, 0x2d, - 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1d, - 0x0a, 0x0a, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x04, 0x52, 0x09, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x49, 0x64, 0x22, 0x37, 0x0a, - 0x0c, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x73, 0x70, 0x12, 0x27, 0x0a, - 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x6d, - 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x32, 0xc7, 0x02, 0x0a, 0x10, 0x44, 0x61, 0x73, 0x68, 0x62, - 0x6f, 0x61, 0x72, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x4c, - 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x15, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, - 0x71, 0x1a, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, - 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x0d, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x17, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, - 0x65, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x22, 0x00, 0x12, - 0x3a, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, - 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x64, 0x64, 0x43, - 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x0a, 0x41, - 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, - 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, - 0x67, 0x65, 0x52, 0x73, 0x70, 0x22, 0x00, 0x12, 0x37, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x4d, 0x6f, - 0x64, 0x75, 0x6c, 0x65, 0x12, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x65, 0x74, - 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x73, 0x70, 0x22, 0x00, - 0x42, 0x44, 0x5a, 0x42, 0x67, 0x6f, 0x2e, 0x75, 0x6e, 0x69, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, - 0x6f, 0x72, 0x67, 0x2f, 0x75, 0x6e, 0x69, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2d, 0x6f, 0x72, 0x67, - 0x2f, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, - 0x6f, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x3b, 0x67, 0x6f, 0x5f, 0x67, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x75, 0x72, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x04, + 0x20, 0x03, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x16, 0x0a, + 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x69, + 0x73, 0x73, 0x75, 0x65, 0x73, 0x22, 0x2b, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, + 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x02, + 0x69, 0x64, 0x22, 0x69, 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x71, 0x12, 0x44, 0x0a, 0x09, 0x69, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, + 0x69, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x22, 0x28, 0x0a, + 0x0d, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x73, 0x70, 0x12, 0x17, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, + 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x22, 0x9f, 0x01, 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x50, + 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x3a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, + 0x18, 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x04, + 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x22, 0x0f, 0x0a, 0x0d, 0x41, 0x64, 0x64, + 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x22, 0x1e, 0x0a, 0x0c, 0x47, 0x65, + 0x74, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x22, 0x37, 0x0a, 0x0c, 0x47, 0x65, + 0x74, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x73, 0x70, 0x12, 0x27, 0x0a, 0x07, 0x6d, 0x6f, + 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, + 0x6c, 0x65, 0x73, 0x32, 0xc7, 0x02, 0x0a, 0x10, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, + 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, + 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x15, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, + 0x67, 0x65, 0x52, 0x73, 0x70, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, + 0x71, 0x1a, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x0a, + 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, + 0x1a, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6d, 0x6d, + 0x65, 0x6e, 0x74, 0x52, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x50, + 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, + 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, + 0x73, 0x70, 0x22, 0x00, 0x12, 0x37, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x75, 0x6c, + 0x65, 0x12, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x64, + 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, + 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x73, 0x70, 0x22, 0x00, 0x42, 0x44, 0x5a, + 0x42, 0x67, 0x6f, 0x2e, 0x75, 0x6e, 0x69, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x6f, 0x72, 0x67, + 0x2f, 0x75, 0x6e, 0x69, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2d, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x6b, + 0x67, 0x64, 0x61, 0x73, 0x68, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x5f, 0x67, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x3b, 0x67, 0x6f, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/proto/go_generate/dashboard.pb.validate.go b/proto/go_generate/dashboard.pb.validate.go index 92131ab..102ee08 100644 --- a/proto/go_generate/dashboard.pb.validate.go +++ b/proto/go_generate/dashboard.pb.validate.go @@ -465,6 +465,17 @@ func (m *Module) validate(all bool) error { errors = append(errors, err) } + if utf8.RuneCountInString(m.GetLastVersion()) < 1 { + err := ModuleValidationError{ + field: "LastVersion", + reason: "value length must be at least 1 runes", + } + if !all { + return err + } + errors = append(errors, err) + } + if len(errors) > 0 { return ModuleMultiError(errors) } diff --git a/storage/sqlite/storage.go b/storage/sqlite/storage.go index db09ca0..21bb39d 100644 --- a/storage/sqlite/storage.go +++ b/storage/sqlite/storage.go @@ -225,15 +225,15 @@ func (s *Sqlite) InsertButchModules(ctx context.Context, req []models.Module) ([ return result, err } -func (s *Sqlite) GetModule(ctx context.Context, req *pb.GetModuleReq) (result []models.Module, err error) { +func (s *Sqlite) GetModule(ctx context.Context, req *pb.GetModuleReq) (result models.ListModule, err error) { query := "" - if len(req.ModulesId) < 1 { + if len(req.Id) < 1 { query = fmt.Sprintf(queryGetModule, "() or 1=1") } else { - query = fmt.Sprintf(queryGetModule, generateArrayIneq(len(req.GetModulesId()))) + query = fmt.Sprintf(queryGetModule, generateArrayIneq(len(req.Id))) } - rows, err := s.db.QueryContext(ctx, query, convertSliceUInt(req.ModulesId...)...) + rows, err := s.db.QueryContext(ctx, query, convertSliceUInt(req.Id...)...) if err != nil { return nil, err } @@ -245,7 +245,7 @@ func (s *Sqlite) GetModule(ctx context.Context, req *pb.GetModuleReq) (result [] }() for rows.Next() { - tmp := models.Module{} + tmp := &models.Module{} if err = rows.Scan( &tmp.ID, &tmp.Name, diff --git a/storage/storage.go b/storage/storage.go index 255e60f..188562d 100644 --- a/storage/storage.go +++ b/storage/storage.go @@ -32,7 +32,7 @@ type Storage interface { AddComment(ctx context.Context, req *pb.AddCommentReq) error AddPackage(ctx context.Context, req *pb.AddPackageReq) error InsertButchModules(ctx context.Context, req []models.Module) ([]uint64, error) - GetModule(ctx context.Context, req *pb.GetModuleReq) ([]models.Module, error) + GetModule(ctx context.Context, req *pb.GetModuleReq) (models.ListModule, error) } func NewStorage(name string, db *sql.DB) (interface{}, error) { -- 2.45.2 From 02aa7d25f1ba7fc85b406bb7d283a12220d14eff Mon Sep 17 00:00:00 2001 From: Evstigneev Denis Date: Fri, 11 Aug 2023 17:18:45 +0300 Subject: [PATCH 12/16] remark for array query --- handler/handlers.go | 2 +- storage/storage_test.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/handler/handlers.go b/handler/handlers.go index b772d93..ffa934b 100644 --- a/handler/handlers.go +++ b/handler/handlers.go @@ -186,7 +186,7 @@ func URLValuesToProto(vals url.Values, msg proto.Message) error { continue } switch k { - case "id": + case "id[]": params[k] = v default: params[k] = v[0] diff --git a/storage/storage_test.go b/storage/storage_test.go index 6ae3572..8e5f91f 100644 --- a/storage/storage_test.go +++ b/storage/storage_test.go @@ -30,7 +30,7 @@ func TestGetModule(t *testing.T) { } req := &pb.GetModuleReq{ - ModulesId: []uint64{1, 2, 5, 40}, + Id: []uint64{1, 2, 5, 40}, } module, err := s.GetModule(context.Background(), req) -- 2.45.2 From 2ef12956ac2330c12d628535964b0ba52738af31 Mon Sep 17 00:00:00 2001 From: Vasiliy Tolstov Date: Fri, 11 Aug 2023 21:27:38 +0300 Subject: [PATCH 13/16] initial rewrite, use micro v4 and not cms-xxx stuff Signed-off-by: Vasiliy Tolstov --- cmd/{rest/server.go => pkgdash/main.go} | 1 - generate.go | 12 + generate.sh | 12 + go.mod | 11 +- go.sum | 505 +----------------- handler/encoders/json.go | 3 +- handler/encoders/jsonpb.go | 2 +- handler/handlers.go | 9 +- handler/mapping.go | 4 +- handler/writer.go | 5 +- models/mapping.go | 2 +- proto/generate.go | 9 - proto/generate.sh | 14 - proto/micro/dashboard_micro.pb.go | 33 -- proto/micro/dashboard_micro_http.pb.go | 81 --- .../dashboard.pb.go => pkgdash.pb.go} | 500 +++++++++-------- ....pb.validate.go => pkgdash.pb.validate.go} | 242 ++++----- proto/{dashboard.proto => pkgdash.proto} | 61 ++- proto/pkgdash_micro.pb.go | 28 + proto/pkgdash_micro_http.pb.go | 136 +++++ service/service.go | 32 +- storage/postgres/{quries.go => queries.go} | 0 22 files changed, 666 insertions(+), 1036 deletions(-) rename cmd/{rest/server.go => pkgdash/main.go} (99%) create mode 100644 generate.go create mode 100755 generate.sh delete mode 100644 proto/generate.go delete mode 100755 proto/generate.sh delete mode 100644 proto/micro/dashboard_micro.pb.go delete mode 100644 proto/micro/dashboard_micro_http.pb.go rename proto/{go_generate/dashboard.pb.go => pkgdash.pb.go} (54%) rename proto/{go_generate/dashboard.pb.validate.go => pkgdash.pb.validate.go} (99%) rename proto/{dashboard.proto => pkgdash.proto} (54%) create mode 100644 proto/pkgdash_micro.pb.go create mode 100644 proto/pkgdash_micro_http.pb.go rename storage/postgres/{quries.go => queries.go} (100%) diff --git a/cmd/rest/server.go b/cmd/pkgdash/main.go similarity index 99% rename from cmd/rest/server.go rename to cmd/pkgdash/main.go index d939905..416cca5 100644 --- a/cmd/rest/server.go +++ b/cmd/pkgdash/main.go @@ -19,5 +19,4 @@ func main() { if err = svc.Run(); err != nil { logger.Fatal(ctx, err) } - } diff --git a/generate.go b/generate.go new file mode 100644 index 0000000..e490b50 --- /dev/null +++ b/generate.go @@ -0,0 +1,12 @@ +//go:build tools +// +build tools + +package main + +//go:generate ./generate.sh + +import ( + _ "github.com/envoyproxy/protoc-gen-validate" + _ "go.unistack.org/micro-proto/v4" + _ "go.unistack.org/protoc-gen-go-micro/v4" +) diff --git a/generate.sh b/generate.sh new file mode 100755 index 0000000..ec4e77e --- /dev/null +++ b/generate.sh @@ -0,0 +1,12 @@ +#!/bin/sh -ex + +PROTO_ARGS=" \ +--proto_path=$(go list -f '{{ .Dir }}' -m github.com/envoyproxy/protoc-gen-validate) \ +--proto_path=$(go list -f '{{ .Dir }}' -m go.unistack.org/micro-proto/v4) \ +--go_out=paths=source_relative:./proto \ +--go-micro_out=paths=source_relative,components=micro|http,standalone=false:./proto \ +--validate_out=paths=source_relative,lang=go:./proto +" + +find ./proto -type f -name "*.pb.go" -delete +protoc -I./proto $PROTO_ARGS ./proto/*.proto || find ./proto -type f -name "*.pb.go" -delete \ No newline at end of file diff --git a/go.mod b/go.mod index 9d2e3b3..21ffeb8 100644 --- a/go.mod +++ b/go.mod @@ -13,10 +13,11 @@ require ( go.unistack.org/micro-client-http/v3 v3.9.3 go.unistack.org/micro-config-flag/v4 v4.0.1 go.unistack.org/micro-proto/v3 v3.3.1 - go.unistack.org/micro-server-grpc/v3 v3.10.6 + go.unistack.org/micro-proto/v4 v4.0.1 go.unistack.org/micro-server-http/v3 v3.11.6 - go.unistack.org/micro/v3 v3.10.24 - go.unistack.org/micro/v4 v4.0.1 + go.unistack.org/micro-server-http/v4 v4.0.8 + go.unistack.org/micro/v4 v4.0.6 + go.unistack.org/protoc-gen-go-micro/v4 v4.0.5 golang.org/x/mod v0.12.0 golang.org/x/net v0.12.0 golang.org/x/sync v0.3.0 @@ -31,10 +32,12 @@ require ( github.com/cloudflare/circl v1.3.3 // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/emirpasic/gods v1.18.1 // indirect + github.com/fatih/structtag v1.2.0 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.4.1 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.3 // indirect + github.com/google/gnostic v0.6.9 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/iancoleman/strcase v0.2.0 // indirect @@ -69,6 +72,7 @@ require ( go.unistack.org/micro-config-file/v3 v3.8.3 // indirect go.unistack.org/micro-config-flag/v3 v3.8.9 // indirect go.unistack.org/micro-config-service/v3 v3.8.1 // indirect + go.unistack.org/micro/v3 v3.10.24 // indirect golang.org/x/crypto v0.11.0 // indirect golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect golang.org/x/sys v0.10.0 // indirect @@ -78,6 +82,7 @@ require ( google.golang.org/grpc v1.57.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect lukechampine.com/uint128 v1.3.0 // indirect modernc.org/cc/v3 v3.40.0 // indirect modernc.org/ccgo/v3 v3.16.13 // indirect diff --git a/go.sum b/go.sum index de61f51..76df0aa 100644 --- a/go.sum +++ b/go.sum @@ -23,345 +23,24 @@ cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAV cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= cloud.google.com/go v0.88.0/go.mod h1:dnKwfYbP9hQhefiUvpbcAyoGSHUrOxR20JVElLiUvEY= -cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= -cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= -cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= -cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= -cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= -cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= -cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= -cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= -cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= -cloud.google.com/go v0.105.0/go.mod h1:PrLgOJNe5nfE9UMxKxgXj4mD3voiP+YQ6gdt6KMFOKM= -cloud.google.com/go/accessapproval v1.4.0/go.mod h1:zybIuC3KpDOvotz59lFe5qxRZx6C75OtwbisN56xYB4= -cloud.google.com/go/accessapproval v1.5.0/go.mod h1:HFy3tuiGvMdcd/u+Cu5b9NkO1pEICJ46IR82PoUdplw= -cloud.google.com/go/accesscontextmanager v1.3.0/go.mod h1:TgCBehyr5gNMz7ZaH9xubp+CE8dkrszb4oK9CWyvD4o= -cloud.google.com/go/accesscontextmanager v1.4.0/go.mod h1:/Kjh7BBu/Gh83sv+K60vN9QE5NJcd80sU33vIe2IFPE= -cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= -cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= -cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= -cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= -cloud.google.com/go/apigateway v1.3.0/go.mod h1:89Z8Bhpmxu6AmUxuVRg/ECRGReEdiP3vQtk4Z1J9rJk= -cloud.google.com/go/apigateway v1.4.0/go.mod h1:pHVY9MKGaH9PQ3pJ4YLzoj6U5FUDeDFBllIz7WmzJoc= -cloud.google.com/go/apigeeconnect v1.3.0/go.mod h1:G/AwXFAKo0gIXkPTVfZDd2qA1TxBXJ3MgMRBQkIi9jc= -cloud.google.com/go/apigeeconnect v1.4.0/go.mod h1:kV4NwOKqjvt2JYR0AoIWo2QGfoRtn/pkS3QlHp0Ni04= -cloud.google.com/go/appengine v1.4.0/go.mod h1:CS2NhuBuDXM9f+qscZ6V86m1MIIqPj3WC/UoEuR1Sno= -cloud.google.com/go/appengine v1.5.0/go.mod h1:TfasSozdkFI0zeoxW3PTBLiNqRmzraodCWatWI9Dmak= -cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= -cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= -cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= -cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= -cloud.google.com/go/artifactregistry v1.8.0/go.mod h1:w3GQXkJX8hiKN0v+at4b0qotwijQbYUqF2GWkZzAhC0= -cloud.google.com/go/artifactregistry v1.9.0/go.mod h1:2K2RqvA2CYvAeARHRkLDhMDJ3OXy26h3XW+3/Jh2uYc= -cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= -cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= -cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= -cloud.google.com/go/asset v1.9.0/go.mod h1:83MOE6jEJBMqFKadM9NLRcs80Gdw76qGuHn8m3h8oHQ= -cloud.google.com/go/asset v1.10.0/go.mod h1:pLz7uokL80qKhzKr4xXGvBQXnzHn5evJAEAtZiIb0wY= -cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= -cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= -cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= -cloud.google.com/go/assuredworkloads v1.8.0/go.mod h1:AsX2cqyNCOvEQC8RMPnoc0yEarXQk6WEKkxYfL6kGIo= -cloud.google.com/go/assuredworkloads v1.9.0/go.mod h1:kFuI1P78bplYtT77Tb1hi0FMxM0vVpRC7VVoJC3ZoT0= -cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= -cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= -cloud.google.com/go/automl v1.7.0/go.mod h1:RL9MYCCsJEOmt0Wf3z9uzG0a7adTT1fe+aObgSpkCt8= -cloud.google.com/go/automl v1.8.0/go.mod h1:xWx7G/aPEe/NP+qzYXktoBSDfjO+vnKMGgsApGJJquM= -cloud.google.com/go/baremetalsolution v0.3.0/go.mod h1:XOrocE+pvK1xFfleEnShBlNAXf+j5blPPxrhjKgnIFc= -cloud.google.com/go/baremetalsolution v0.4.0/go.mod h1:BymplhAadOO/eBa7KewQ0Ppg4A4Wplbn+PsFKRLo0uI= -cloud.google.com/go/batch v0.3.0/go.mod h1:TR18ZoAekj1GuirsUsR1ZTKN3FC/4UDnScjT8NXImFE= -cloud.google.com/go/batch v0.4.0/go.mod h1:WZkHnP43R/QCGQsZ+0JyG4i79ranE2u8xvjq/9+STPE= -cloud.google.com/go/beyondcorp v0.2.0/go.mod h1:TB7Bd+EEtcw9PCPQhCJtJGjk/7TC6ckmnSFS+xwTfm4= -cloud.google.com/go/beyondcorp v0.3.0/go.mod h1:E5U5lcrcXMsCuoDNyGrpyTm/hn7ne941Jz2vmksAxW8= 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/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= -cloud.google.com/go/bigquery v1.43.0/go.mod h1:ZMQcXHsl+xmU1z36G2jNGZmKp9zNY5BUua5wDgmNCfw= -cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= -cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= -cloud.google.com/go/billing v1.6.0/go.mod h1:WoXzguj+BeHXPbKfNWkqVtDdzORazmCjraY+vrxcyvI= -cloud.google.com/go/billing v1.7.0/go.mod h1:q457N3Hbj9lYwwRbnlD7vUpyjq6u5U1RAOArInEiD5Y= -cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= -cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= -cloud.google.com/go/binaryauthorization v1.3.0/go.mod h1:lRZbKgjDIIQvzYQS1p99A7/U1JqvqeZg0wiI5tp6tg0= -cloud.google.com/go/binaryauthorization v1.4.0/go.mod h1:tsSPQrBd77VLplV70GUhBf/Zm3FsKmgSqgm4UmiDItk= -cloud.google.com/go/certificatemanager v1.3.0/go.mod h1:n6twGDvcUBFu9uBgt4eYvvf3sQ6My8jADcOVwHmzadg= -cloud.google.com/go/certificatemanager v1.4.0/go.mod h1:vowpercVFyqs8ABSmrdV+GiFf2H/ch3KyudYQEMM590= -cloud.google.com/go/channel v1.8.0/go.mod h1:W5SwCXDJsq/rg3tn3oG0LOxpAo6IMxNa09ngphpSlnk= -cloud.google.com/go/channel v1.9.0/go.mod h1:jcu05W0my9Vx4mt3/rEHpfxc9eKi9XwsdDL8yBMbKUk= -cloud.google.com/go/cloudbuild v1.3.0/go.mod h1:WequR4ULxlqvMsjDEEEFnOG5ZSRSgWOywXYDb1vPE6U= -cloud.google.com/go/cloudbuild v1.4.0/go.mod h1:5Qwa40LHiOXmz3386FrjrYM93rM/hdRr7b53sySrTqA= -cloud.google.com/go/clouddms v1.3.0/go.mod h1:oK6XsCDdW4Ib3jCCBugx+gVjevp2TMXFtgxvPSee3OM= -cloud.google.com/go/clouddms v1.4.0/go.mod h1:Eh7sUGCC+aKry14O1NRljhjyrr0NFC0G2cjwX0cByRk= -cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= -cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= -cloud.google.com/go/cloudtasks v1.7.0/go.mod h1:ImsfdYWwlWNJbdgPIIGJWC+gemEGTBK/SunNQQNCAb4= -cloud.google.com/go/cloudtasks v1.8.0/go.mod h1:gQXUIwCSOI4yPVK7DgTVFiiP0ZW/eQkydWzwVMdHxrI= -cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= -cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= -cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= -cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= -cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= -cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= -cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= -cloud.google.com/go/compute v1.12.0/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= -cloud.google.com/go/compute v1.12.1/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= -cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZEXYonfTBHHFPO/4UU= -cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= -cloud.google.com/go/contactcenterinsights v1.3.0/go.mod h1:Eu2oemoePuEFc/xKFPjbTuPSj0fYJcPls9TFlPNnHHY= -cloud.google.com/go/contactcenterinsights v1.4.0/go.mod h1:L2YzkGbPsv+vMQMCADxJoT9YiTTnSEd6fEvCeHTYVck= -cloud.google.com/go/container v1.6.0/go.mod h1:Xazp7GjJSeUYo688S+6J5V+n/t+G5sKBTFkKNudGRxg= -cloud.google.com/go/container v1.7.0/go.mod h1:Dp5AHtmothHGX3DwwIHPgq45Y8KmNsgN3amoYfxVkLo= -cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= -cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= -cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= -cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= -cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= -cloud.google.com/go/datacatalog v1.7.0/go.mod h1:9mEl4AuDYWw81UGc41HonIHH7/sn52H0/tc8f8ZbZIE= -cloud.google.com/go/datacatalog v1.8.0/go.mod h1:KYuoVOv9BM8EYz/4eMFxrr4DUKhGIOXxZoKYF5wdISM= -cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= -cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= -cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= -cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= -cloud.google.com/go/dataform v0.5.0/go.mod h1:GFUYRe8IBa2hcomWplodVmUx/iTL0FrsauObOM3Ipr0= -cloud.google.com/go/datafusion v1.4.0/go.mod h1:1Zb6VN+W6ALo85cXnM1IKiPw+yQMKMhB9TsTSRDo/38= -cloud.google.com/go/datafusion v1.5.0/go.mod h1:Kz+l1FGHB0J+4XF2fud96WMmRiq/wj8N9u007vyXZ2w= -cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= -cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= -cloud.google.com/go/dataplex v1.3.0/go.mod h1:hQuRtDg+fCiFgC8j0zV222HvzFQdRd+SVX8gdmFcZzA= -cloud.google.com/go/dataplex v1.4.0/go.mod h1:X51GfLXEMVJ6UN47ESVqvlsRplbLhcsAt0kZCCKsU0A= -cloud.google.com/go/dataproc v1.7.0/go.mod h1:CKAlMjII9H90RXaMpSxQ8EU6dQx6iAYNPcYPOkSbi8s= -cloud.google.com/go/dataproc v1.8.0/go.mod h1:5OW+zNAH0pMpw14JVrPONsxMQYMBqJuzORhIBfBn9uI= -cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= -cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= 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/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= -cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= -cloud.google.com/go/datastream v1.4.0/go.mod h1:h9dpzScPhDTs5noEMQVWP8Wx8AFBRyS0s8KWPx/9r0g= -cloud.google.com/go/datastream v1.5.0/go.mod h1:6TZMMNPwjUqZHBKPQ1wwXpb0d5VDVPl2/XoS5yi88q4= -cloud.google.com/go/deploy v1.4.0/go.mod h1:5Xghikd4VrmMLNaF6FiRFDlHb59VM59YoDQnOUdsH/c= -cloud.google.com/go/deploy v1.5.0/go.mod h1:ffgdD0B89tToyW/U/D2eL0jN2+IEV/3EMuXHA0l4r+s= -cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= -cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= -cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= -cloud.google.com/go/dialogflow v1.18.0/go.mod h1:trO7Zu5YdyEuR+BhSNOqJezyFQ3aUzz0njv7sMx/iek= -cloud.google.com/go/dialogflow v1.19.0/go.mod h1:JVmlG1TwykZDtxtTXujec4tQ+D8SBFMoosgy+6Gn0s0= -cloud.google.com/go/dlp v1.6.0/go.mod h1:9eyB2xIhpU0sVwUixfBubDoRwP+GjeUoxxeueZmqvmM= -cloud.google.com/go/dlp v1.7.0/go.mod h1:68ak9vCiMBjbasxeVD17hVPxDEck+ExiHavX8kiHG+Q= -cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= -cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= -cloud.google.com/go/documentai v1.9.0/go.mod h1:FS5485S8R00U10GhgBC0aNGrJxBP8ZVpEeJ7PQDZd6k= -cloud.google.com/go/documentai v1.10.0/go.mod h1:vod47hKQIPeCfN2QS/jULIvQTugbmdc0ZvxxfQY1bg4= -cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= -cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= -cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= -cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= -cloud.google.com/go/essentialcontacts v1.3.0/go.mod h1:r+OnHa5jfj90qIfZDO/VztSFqbQan7HV75p8sA+mdGI= -cloud.google.com/go/essentialcontacts v1.4.0/go.mod h1:8tRldvHYsmnBCHdFpvU+GL75oWiBKl80BiqlFh9tp+8= -cloud.google.com/go/eventarc v1.7.0/go.mod h1:6ctpF3zTnaQCxUjHUdcfgcA1A2T309+omHZth7gDfmc= -cloud.google.com/go/eventarc v1.8.0/go.mod h1:imbzxkyAU4ubfsaKYdQg04WS1NvncblHEup4kvF+4gw= -cloud.google.com/go/filestore v1.3.0/go.mod h1:+qbvHGvXU1HaKX2nD0WEPo92TP/8AQuCVEBXNY9z0+w= -cloud.google.com/go/filestore v1.4.0/go.mod h1:PaG5oDfo9r224f8OYXURtAsY+Fbyq/bLYoINEK8XQAI= -cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= -cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= -cloud.google.com/go/functions v1.8.0/go.mod h1:RTZ4/HsQjIqIYP9a9YPbU+QFoQsAlYgrwOXJWHn1POY= -cloud.google.com/go/functions v1.9.0/go.mod h1:Y+Dz8yGguzO3PpIjhLTbnqV1CWmgQ5UwtlpzoyquQ08= -cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= -cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= -cloud.google.com/go/gaming v1.7.0/go.mod h1:LrB8U7MHdGgFG851iHAfqUdLcKBdQ55hzXy9xBJz0+w= -cloud.google.com/go/gaming v1.8.0/go.mod h1:xAqjS8b7jAVW0KFYeRUxngo9My3f33kFmua++Pi+ggM= -cloud.google.com/go/gkebackup v0.2.0/go.mod h1:XKvv/4LfG829/B8B7xRkk8zRrOEbKtEam6yNfuQNH60= -cloud.google.com/go/gkebackup v0.3.0/go.mod h1:n/E671i1aOQvUxT541aTkCwExO/bTer2HDlj4TsBRAo= -cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= -cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= -cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= -cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= -cloud.google.com/go/gkemulticloud v0.3.0/go.mod h1:7orzy7O0S+5kq95e4Hpn7RysVA7dPs8W/GgfUtsPbrA= -cloud.google.com/go/gkemulticloud v0.4.0/go.mod h1:E9gxVBnseLWCk24ch+P9+B2CoDFJZTyIgLKSalC7tuI= -cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= -cloud.google.com/go/gsuiteaddons v1.3.0/go.mod h1:EUNK/J1lZEZO8yPtykKxLXI6JSVN2rg9bN8SXOa0bgM= -cloud.google.com/go/gsuiteaddons v1.4.0/go.mod h1:rZK5I8hht7u7HxFQcFei0+AtfS9uSushomRlg+3ua1o= -cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= -cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= -cloud.google.com/go/iam v0.6.0/go.mod h1:+1AH33ueBne5MzYccyMHtEKqLE4/kJOibtffMHDMFMc= -cloud.google.com/go/iam v0.7.0/go.mod h1:H5Br8wRaDGNc8XP3keLc4unfUUZeyH3Sfl9XpQEYOeg= -cloud.google.com/go/iap v1.4.0/go.mod h1:RGFwRJdihTINIe4wZ2iCP0zF/qu18ZwyKxrhMhygBEc= -cloud.google.com/go/iap v1.5.0/go.mod h1:UH/CGgKd4KyohZL5Pt0jSKE4m3FR51qg6FKQ/z/Ix9A= -cloud.google.com/go/ids v1.1.0/go.mod h1:WIuwCaYVOzHIj2OhN9HAwvW+DBdmUAdcWlFxRl+KubM= -cloud.google.com/go/ids v1.2.0/go.mod h1:5WXvp4n25S0rA/mQWAg1YEEBBq6/s+7ml1RDCW1IrcY= -cloud.google.com/go/iot v1.3.0/go.mod h1:r7RGh2B61+B8oz0AGE+J72AhA0G7tdXItODWsaA2oLs= -cloud.google.com/go/iot v1.4.0/go.mod h1:dIDxPOn0UvNDUMD8Ger7FIaTuvMkj+aGk94RPP0iV+g= -cloud.google.com/go/kms v1.5.0/go.mod h1:QJS2YY0eJGBg3mnDfuaCyLauWwBJiHRboYxJ++1xJNg= -cloud.google.com/go/kms v1.6.0/go.mod h1:Jjy850yySiasBUDi6KFUwUv2n1+o7QZFyuUJg6OgjA0= -cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= -cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= -cloud.google.com/go/language v1.7.0/go.mod h1:DJ6dYN/W+SQOjF8e1hLQXMF21AkH2w9wiPzPCJa2MIE= -cloud.google.com/go/language v1.8.0/go.mod h1:qYPVHf7SPoNNiCL2Dr0FfEFNil1qi3pQEyygwpgVKB8= -cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= -cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= -cloud.google.com/go/longrunning v0.1.1/go.mod h1:UUFxuDWkv22EuY93jjmDMFT5GPQKeFVJBIF6QlTqdsE= -cloud.google.com/go/longrunning v0.3.0/go.mod h1:qth9Y41RRSUE69rDcOn6DdK3HfQfsUI0YSmW3iIlLJc= -cloud.google.com/go/managedidentities v1.3.0/go.mod h1:UzlW3cBOiPrzucO5qWkNkh0w33KFtBJU281hacNvsdE= -cloud.google.com/go/managedidentities v1.4.0/go.mod h1:NWSBYbEMgqmbZsLIyKvxrYbtqOsxY1ZrGM+9RgDqInM= -cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= -cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= -cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= -cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= -cloud.google.com/go/memcache v1.6.0/go.mod h1:XS5xB0eQZdHtTuTF9Hf8eJkKtR3pVRCcvJwtm68T3rA= -cloud.google.com/go/memcache v1.7.0/go.mod h1:ywMKfjWhNtkQTxrWxCkCFkoPjLHPW6A7WOTVI8xy3LY= -cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= -cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= -cloud.google.com/go/metastore v1.7.0/go.mod h1:s45D0B4IlsINu87/AsWiEVYbLaIMeUSoxlKKDqBGFS8= -cloud.google.com/go/metastore v1.8.0/go.mod h1:zHiMc4ZUpBiM7twCIFQmJ9JMEkDSyZS9U12uf7wHqSI= -cloud.google.com/go/monitoring v1.7.0/go.mod h1:HpYse6kkGo//7p6sT0wsIC6IBDET0RhIsnmlA53dvEk= -cloud.google.com/go/monitoring v1.8.0/go.mod h1:E7PtoMJ1kQXWxPjB6mv2fhC5/15jInuulFdYYtlcvT4= -cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= -cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= -cloud.google.com/go/networkconnectivity v1.6.0/go.mod h1:OJOoEXW+0LAxHh89nXd64uGG+FbQoeH8DtxCHVOMlaM= -cloud.google.com/go/networkconnectivity v1.7.0/go.mod h1:RMuSbkdbPwNMQjB5HBWD5MpTBnNm39iAVpC3TmsExt8= -cloud.google.com/go/networkmanagement v1.4.0/go.mod h1:Q9mdLLRn60AsOrPc8rs8iNV6OHXaGcDdsIQe1ohekq8= -cloud.google.com/go/networkmanagement v1.5.0/go.mod h1:ZnOeZ/evzUdUsnvRt792H0uYEnHQEMaz+REhhzJRcf4= -cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= -cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= -cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= -cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= -cloud.google.com/go/notebooks v1.4.0/go.mod h1:4QPMngcwmgb6uw7Po99B2xv5ufVoIQ7nOGDyL4P8AgA= -cloud.google.com/go/notebooks v1.5.0/go.mod h1:q8mwhnP9aR8Hpfnrc5iN5IBhrXUy8S2vuYs+kBJ/gu0= -cloud.google.com/go/optimization v1.1.0/go.mod h1:5po+wfvX5AQlPznyVEZjGJTMr4+CAkJf2XSTQOOl9l4= -cloud.google.com/go/optimization v1.2.0/go.mod h1:Lr7SOHdRDENsh+WXVmQhQTrzdu9ybg0NecjHidBq6xs= -cloud.google.com/go/orchestration v1.3.0/go.mod h1:Sj5tq/JpWiB//X/q3Ngwdl5K7B7Y0KZ7bfv0wL6fqVA= -cloud.google.com/go/orchestration v1.4.0/go.mod h1:6W5NLFWs2TlniBphAViZEVhrXRSMgUGDfW7vrWKvsBk= -cloud.google.com/go/orgpolicy v1.4.0/go.mod h1:xrSLIV4RePWmP9P3tBl8S93lTmlAxjm06NSm2UTmKvE= -cloud.google.com/go/orgpolicy v1.5.0/go.mod h1:hZEc5q3wzwXJaKrsx5+Ewg0u1LxJ51nNFlext7Tanwc= -cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= -cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= -cloud.google.com/go/osconfig v1.9.0/go.mod h1:Yx+IeIZJ3bdWmzbQU4fxNl8xsZ4amB+dygAwFPlvnNo= -cloud.google.com/go/osconfig v1.10.0/go.mod h1:uMhCzqC5I8zfD9zDEAfvgVhDS8oIjySWh+l4WK6GnWw= -cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= -cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= -cloud.google.com/go/oslogin v1.6.0/go.mod h1:zOJ1O3+dTU8WPlGEkFSh7qeHPPSoxrcMbbK1Nm2iX70= -cloud.google.com/go/oslogin v1.7.0/go.mod h1:e04SN0xO1UNJ1M5GP0vzVBFicIe4O53FOfcixIqTyXo= -cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= -cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= -cloud.google.com/go/policytroubleshooter v1.3.0/go.mod h1:qy0+VwANja+kKrjlQuOzmlvscn4RNsAc0e15GGqfMxg= -cloud.google.com/go/policytroubleshooter v1.4.0/go.mod h1:DZT4BcRw3QoO8ota9xw/LKtPa8lKeCByYeKTIf/vxdE= -cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= -cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= 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/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= -cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= -cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= -cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo= -cloud.google.com/go/recaptchaenterprise/v2 v2.4.0/go.mod h1:Am3LHfOuBstrLrNCBrlI5sbwx9LBg3te2N6hGvHn2mE= -cloud.google.com/go/recaptchaenterprise/v2 v2.5.0/go.mod h1:O8LzcHXN3rz0j+LBC91jrwI3R+1ZSZEWrfL7XHgNo9U= -cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= -cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= -cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= -cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= -cloud.google.com/go/recommender v1.7.0/go.mod h1:XLHs/W+T8olwlGOgfQenXBTbIseGclClff6lhFVe9Bs= -cloud.google.com/go/recommender v1.8.0/go.mod h1:PkjXrTT05BFKwxaUxQmtIlrtj0kph108r02ZZQ5FE70= -cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= -cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= -cloud.google.com/go/redis v1.9.0/go.mod h1:HMYQuajvb2D0LvMgZmLDZW8V5aOC/WxstZHiy4g8OiA= -cloud.google.com/go/redis v1.10.0/go.mod h1:ThJf3mMBQtW18JzGgh41/Wld6vnDDc/F/F35UolRZPM= -cloud.google.com/go/resourcemanager v1.3.0/go.mod h1:bAtrTjZQFJkiWTPDb1WBjzvc6/kifjj4QBYuKCCoqKA= -cloud.google.com/go/resourcemanager v1.4.0/go.mod h1:MwxuzkumyTX7/a3n37gmsT3py7LIXwrShilPh3P1tR0= -cloud.google.com/go/resourcesettings v1.3.0/go.mod h1:lzew8VfESA5DQ8gdlHwMrqZs1S9V87v3oCnKCWoOuQU= -cloud.google.com/go/resourcesettings v1.4.0/go.mod h1:ldiH9IJpcrlC3VSuCGvjR5of/ezRrOxFtpJoJo5SmXg= -cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= -cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= -cloud.google.com/go/retail v1.10.0/go.mod h1:2gDk9HsL4HMS4oZwz6daui2/jmKvqShXKQuB2RZ+cCc= -cloud.google.com/go/retail v1.11.0/go.mod h1:MBLk1NaWPmh6iVFSz9MeKG/Psyd7TAgm6y/9L2B4x9Y= -cloud.google.com/go/run v0.2.0/go.mod h1:CNtKsTA1sDcnqqIFR3Pb5Tq0usWxJJvsWOCPldRU3Do= -cloud.google.com/go/run v0.3.0/go.mod h1:TuyY1+taHxTjrD0ZFk2iAR+xyOXEA0ztb7U3UNA0zBo= -cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= -cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= -cloud.google.com/go/scheduler v1.6.0/go.mod h1:SgeKVM7MIwPn3BqtcBntpLyrIJftQISRrYB5ZtT+KOk= -cloud.google.com/go/scheduler v1.7.0/go.mod h1:jyCiBqWW956uBjjPMMuX09n3x37mtyPJegEWKxRsn44= -cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= -cloud.google.com/go/secretmanager v1.8.0/go.mod h1:hnVgi/bN5MYHd3Gt0SPuTPPp5ENina1/LxM+2W9U9J4= -cloud.google.com/go/secretmanager v1.9.0/go.mod h1:b71qH2l1yHmWQHt9LC80akm86mX8AL6X1MA01dW8ht4= -cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= -cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= -cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= -cloud.google.com/go/security v1.9.0/go.mod h1:6Ta1bO8LXI89nZnmnsZGp9lVoVWXqsVbIq/t9dzI+2Q= -cloud.google.com/go/security v1.10.0/go.mod h1:QtOMZByJVlibUT2h9afNDWRZ1G96gVywH8T5GUSb9IA= -cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= -cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= -cloud.google.com/go/securitycenter v1.15.0/go.mod h1:PeKJ0t8MoFmmXLXWm41JidyzI3PJjd8sXWaVqg43WWk= -cloud.google.com/go/securitycenter v1.16.0/go.mod h1:Q9GMaLQFUD+5ZTabrbujNWLtSLZIZF7SAR0wWECrjdk= -cloud.google.com/go/servicecontrol v1.4.0/go.mod h1:o0hUSJ1TXJAmi/7fLJAedOovnujSEvjKCAFNXPQ1RaU= -cloud.google.com/go/servicecontrol v1.5.0/go.mod h1:qM0CnXHhyqKVuiZnGKrIurvVImCs8gmqWsDoqe9sU1s= -cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= -cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= -cloud.google.com/go/servicedirectory v1.6.0/go.mod h1:pUlbnWsLH9c13yGkxCmfumWEPjsRs1RlmJ4pqiNjVL4= -cloud.google.com/go/servicedirectory v1.7.0/go.mod h1:5p/U5oyvgYGYejufvxhgwjL8UVXjkuw7q5XcG10wx1U= -cloud.google.com/go/servicemanagement v1.4.0/go.mod h1:d8t8MDbezI7Z2R1O/wu8oTggo3BI2GKYbdG4y/SJTco= -cloud.google.com/go/servicemanagement v1.5.0/go.mod h1:XGaCRe57kfqu4+lRxaFEAuqmjzF0r+gWHjWqKqBvKFo= -cloud.google.com/go/serviceusage v1.3.0/go.mod h1:Hya1cozXM4SeSKTAgGXgj97GlqUvF5JaoXacR1JTP/E= -cloud.google.com/go/serviceusage v1.4.0/go.mod h1:SB4yxXSaYVuUBYUml6qklyONXNLt83U0Rb+CXyhjEeU= -cloud.google.com/go/shell v1.3.0/go.mod h1:VZ9HmRjZBsjLGXusm7K5Q5lzzByZmJHf1d0IWHEN5X4= -cloud.google.com/go/shell v1.4.0/go.mod h1:HDxPzZf3GkDdhExzD/gs8Grqk+dmYcEjGShZgYa9URw= cloud.google.com/go/spanner v1.24.0/go.mod h1:EZI0yH1D/PrXK0XH9Ba5LGXTXWeqZv0ClOD/19a0Z58= -cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= -cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= -cloud.google.com/go/speech v1.8.0/go.mod h1:9bYIl1/tjsAnMgKGHKmBZzXKEkGgtU+MpdDPTE9f7y0= -cloud.google.com/go/speech v1.9.0/go.mod h1:xQ0jTcmnRFFM2RfX/U+rk6FQNUF6DQlydUSyoooSpco= 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.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= -cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= -cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= -cloud.google.com/go/storagetransfer v1.5.0/go.mod h1:dxNzUopWy7RQevYFHewchb29POFv3/AaBgnhqzqiK0w= -cloud.google.com/go/storagetransfer v1.6.0/go.mod h1:y77xm4CQV/ZhFZH75PLEXY0ROiS7Gh6pSKrM8dJyg6I= -cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= -cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= -cloud.google.com/go/talent v1.3.0/go.mod h1:CmcxwJ/PKfRgd1pBjQgU6W3YBwiewmUzQYH5HHmSCmM= -cloud.google.com/go/talent v1.4.0/go.mod h1:ezFtAgVuRf8jRsvyE6EwmbTK5LKciD4KVnHuDEFmOOA= -cloud.google.com/go/texttospeech v1.4.0/go.mod h1:FX8HQHA6sEpJ7rCMSfXuzBcysDAuWusNNNvN9FELDd8= -cloud.google.com/go/texttospeech v1.5.0/go.mod h1:oKPLhR4n4ZdQqWKURdwxMy0uiTS1xU161C8W57Wkea4= -cloud.google.com/go/tpu v1.3.0/go.mod h1:aJIManG0o20tfDQlRIej44FcwGGl/cD0oiRyMKG19IQ= -cloud.google.com/go/tpu v1.4.0/go.mod h1:mjZaX8p0VBgllCzF6wcU2ovUXN9TONFLd7iz227X2Xg= -cloud.google.com/go/trace v1.3.0/go.mod h1:FFUE83d9Ca57C+K8rDl/Ih8LwOzWIV1krKgxg6N0G28= -cloud.google.com/go/trace v1.4.0/go.mod h1:UG0v8UBqzusp+z63o7FK74SdFE+AXpCLdFb1rshXG+Y= -cloud.google.com/go/translate v1.3.0/go.mod h1:gzMUwRjvOqj5i69y/LYLd8RrNQk+hOmIXTi9+nb3Djs= -cloud.google.com/go/translate v1.4.0/go.mod h1:06Dn/ppvLD6WvA5Rhdp029IX2Mi3Mn7fpMRLPvXT5Wg= -cloud.google.com/go/video v1.8.0/go.mod h1:sTzKFc0bUSByE8Yoh8X0mn8bMymItVGPfTuUBUyRgxk= -cloud.google.com/go/video v1.9.0/go.mod h1:0RhNKFRF5v92f8dQt0yhaHrEuH95m068JYOvLZYnJSw= -cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= -cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= -cloud.google.com/go/videointelligence v1.8.0/go.mod h1:dIcCn4gVDdS7yte/w+koiXn5dWVplOZkE+xwG9FgK+M= -cloud.google.com/go/videointelligence v1.9.0/go.mod h1:29lVRMPDYHikk3v8EdPSaL8Ku+eMzDljjuvRs105XoU= -cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= -cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= -cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= -cloud.google.com/go/vision/v2 v2.4.0/go.mod h1:VtI579ll9RpVTrdKdkMzckdnwMyX2JILb+MhPqRbPsY= -cloud.google.com/go/vision/v2 v2.5.0/go.mod h1:MmaezXOOE+IWa+cS7OhRRLK2cNv1ZL98zhqFFZaaH2E= -cloud.google.com/go/vmmigration v1.2.0/go.mod h1:IRf0o7myyWFSmVR1ItrBSFLFD/rJkfDCUTO4vLlJvsE= -cloud.google.com/go/vmmigration v1.3.0/go.mod h1:oGJ6ZgGPQOFdjHuocGcLqX4lc98YQ7Ygq8YQwHh9A7g= -cloud.google.com/go/vpcaccess v1.4.0/go.mod h1:aQHVbTWDYUR1EbTApSVvMq1EnT57ppDmQzZ3imqIk4w= -cloud.google.com/go/vpcaccess v1.5.0/go.mod h1:drmg4HLk9NkZpGfCmZ3Tz0Bwnm2+DKqViEpeEpOq0m8= -cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= -cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= -cloud.google.com/go/webrisk v1.6.0/go.mod h1:65sW9V9rOosnc9ZY7A7jsy1zoHS5W9IAXv6dGqhMQMc= -cloud.google.com/go/webrisk v1.7.0/go.mod h1:mVMHgEYH0r337nmt1JyLthzMr6YxwN1aAIEc2fTcq7A= -cloud.google.com/go/websecurityscanner v1.3.0/go.mod h1:uImdKm2wyeXQevQJXeh8Uun/Ym1VqworNDlBXQevGMo= -cloud.google.com/go/websecurityscanner v1.4.0/go.mod h1:ebit/Fp0a+FWu5j4JOmJEV8S8CzdTkAS77oDsiSqYWQ= -cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= -cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= -cloud.google.com/go/workflows v1.8.0/go.mod h1:ysGhmEajwZxGn1OhGOGKsTXc5PyxOc0vfKf5Af+to4M= -cloud.google.com/go/workflows v1.9.0/go.mod h1:ZGkj1aFIOd9c8Gerkjjq7OW7I5+l6cSvT3ujaO/WwSA= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= @@ -503,12 +182,8 @@ github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58/go.mod h1:EOBUe0h 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/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cockroachdb/apd v1.1.0 h1:3LFP3629v+1aKXU5Q37mxmRxX/pIu1nijXydLShEq5I= github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= github.com/cockroachdb/cockroach-go/v2 v2.1.1/go.mod h1:7NtUnP6eK+l6k483WSYNrq3Kb23bWV10IRV1TyeSpwM= @@ -670,12 +345,13 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.m github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= -github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v1.0.2 h1:QkIBuU5k+x7/QXPvPPnWXWlCdaBFApVqftFV6k087DA= github.com/envoyproxy/protoc-gen-validate v1.0.2/go.mod h1:GpiZQP3dDbg4JouG/NNS7QWXpgx6x8QiMKdmN72jogE= github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4= +github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= github.com/flowstack/go-jsonschema v0.1.1/go.mod h1:yL7fNggx1o8rm9RlgXv7hTBWxdBM0rVwpMwimd3F3N0= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= @@ -817,6 +493,7 @@ github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEW 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/flatbuffers v2.0.0+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/gnostic v0.6.9 h1:ZK/5VhkoX835RikCHpSUJV9a+S3e1zLh59YnyWeBW+0= github.com/google/gnostic v0.6.9/go.mod h1:Nm8234We1lq6iB9OmlgNv3nH91XLLVZHCDayfA3xq+E= 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= @@ -830,10 +507,7 @@ github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ 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.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= -github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-github/v35 v35.2.0/go.mod h1:s0515YVTI+IMrDoy9Y4pHt9ShGpzHvHO8rZ7L7acgvs= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -856,7 +530,6 @@ github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210715191844-86eeefc3e471/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26 h1:Xim43kblpZXfIBQsbuBVKCudVG457BR2GZFIz3uw3hQ= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -865,20 +538,9 @@ github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= -github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= -github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= 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/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= -github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= -github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= -github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= -github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= -github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= -github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= -github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/handlers v0.0.0-20150720190736-60c7bfde3e33/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= github.com/gorilla/handlers v1.4.2/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= @@ -1386,15 +1048,19 @@ go.unistack.org/micro-config-service/v3 v3.8.1 h1:Q+RPWCb88VGz5+EQUx45Xeysf+Mon9 go.unistack.org/micro-config-service/v3 v3.8.1/go.mod h1:KdZJEuYwninyT04ysFkgEQa3OaMRa0kSQVPQHlumQoA= go.unistack.org/micro-proto/v3 v3.3.1 h1:nQ0MtWvP2G3QrpOgawVOPhpZZYkq6umTGDqs8FxJYIo= go.unistack.org/micro-proto/v3 v3.3.1/go.mod h1:cwRyv8uInM2I7EbU7O8Fx2Ls3N90Uw9UCCcq4olOdfE= -go.unistack.org/micro-server-grpc/v3 v3.10.6 h1:1MZ530LARgr0OS2E+ALfPpMJkUexEwcaVhUOgBoXDjs= -go.unistack.org/micro-server-grpc/v3 v3.10.6/go.mod h1:n0mNurVocRBOt7iydDgORGWQ4M/wFaJFmdKHNX57IiQ= +go.unistack.org/micro-proto/v4 v4.0.1 h1:2RKHgtCOOcAFgKsnngGK5bqM/6MWXOjVCdw03dbuoF8= +go.unistack.org/micro-proto/v4 v4.0.1/go.mod h1:ArmK7o+uFvxSY3dbJhKBBX4Pm1rhWdLEFf3LxBrMtec= go.unistack.org/micro-server-http/v3 v3.11.6 h1:BSjPyXrJ6OTyuCDE14XOGjLDJEICz2CEo2WfmSR3hqM= go.unistack.org/micro-server-http/v3 v3.11.6/go.mod h1:phNG9aosjbneXvZxEVaVQI+NHLLZ3eA82mOH6gGSShY= +go.unistack.org/micro-server-http/v4 v4.0.8 h1:49ZoZTAcRCZpoVH9D6CKzp7It6AEuvffJJaurgFIrms= +go.unistack.org/micro-server-http/v4 v4.0.8/go.mod h1:p55E0T8dthtOQC4bwzYpRSlky2Pd9xrUbJxPOu3opTI= go.unistack.org/micro/v3 v3.10.14/go.mod h1:uMAc0U/x7dmtICCrblGf0ZLgYegu3VwQAquu+OFCw1Q= go.unistack.org/micro/v3 v3.10.24 h1:gIi4r0vUSpNLs+uRb4KKEXBLkE8iNp6ZnJsI5FV42j0= go.unistack.org/micro/v3 v3.10.24/go.mod h1:aywPekJP0n07xvmDgj+Si3VPmQzGMfj6tkHk/6kjXhU= -go.unistack.org/micro/v4 v4.0.1 h1:xo1IxbVfgh8i0eY0VeYa3cbb13u5n/Mxnp3FOgWD4Jo= -go.unistack.org/micro/v4 v4.0.1/go.mod h1:p/J5UcSJjfHsWGT31uKoghQ5rUQZzQJBAFy+Z4+ZVMs= +go.unistack.org/micro/v4 v4.0.6 h1:YFWvTh3VwyOd6NHYTQcf47n2TF5+p/EhpnbuBQX3qhk= +go.unistack.org/micro/v4 v4.0.6/go.mod h1:bVEYTlPi0EsdgZZt311bIroDg9ict7ky3C87dSCCAGk= +go.unistack.org/protoc-gen-go-micro/v4 v4.0.5 h1:1QTAN51nkQ3uAX0yxH1Ypti1ErghGN1goPA0D6Vnq9c= +go.unistack.org/protoc-gen-go-micro/v4 v4.0.5/go.mod h1:9bsKAlESlPXPBSmY/NDLL//smZbhnEMrnWyG+M8zVFA= golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181009213950-7c1a557ab941/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -1534,21 +1200,8 @@ golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211013171255-e13a2654a71e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.0.0-20221012135044-0b7e1fb9d458/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= -golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= -golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.12.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50= @@ -1568,18 +1221,6 @@ golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= -golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= -golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20221006150949-b44042a4b9c1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= 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= @@ -1592,9 +1233,7 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ 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/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= @@ -1691,31 +1330,13 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210818153620-00dd8d7831e7/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211013075003-97ac67df715c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/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-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/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-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA= @@ -1724,8 +1345,6 @@ golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXR golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= -golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= -golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.10.0 h1:3R7pNqamzBraeqj/Tj8qt1aQ2HpmlC+Cx/qL/7hn4/c= @@ -1738,10 +1357,7 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4= @@ -1832,10 +1448,6 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T 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= -golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= gonum.org/v1/gonum v0.9.3/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0= @@ -1868,31 +1480,6 @@ google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59t google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= -google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= -google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= -google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= -google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= -google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= -google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= -google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= -google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= -google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= -google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= -google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= -google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= -google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= -google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= -google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= -google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= -google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI= -google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.99.0/go.mod h1:1YOf74vkVndF7pG6hIHuINsM7eWwpVTAfNMNiL91A08= -google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= -google.golang.org/api v0.102.0/go.mod h1:3VFl6/fzoA+qNuS1N1/VfXY4LjoXN/wzeIp7TweWwGo= google.golang.org/appengine v1.0.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1946,7 +1533,6 @@ google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= @@ -1958,64 +1544,8 @@ google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= google.golang.org/genproto v0.0.0-20210721163202-f1cecdd8b78a/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= google.golang.org/genproto v0.0.0-20210726143408-b02e89920bf0/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= -google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211013025323-ce878158c4d4/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= -google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE= -google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= -google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw= -google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= -google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= -google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= -google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= -google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= -google.golang.org/genproto v0.0.0-20221024153911-1573dae28c9c/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20221024183307-1bc688fe9f3e/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20221027153422-115e99e71e1c/go.mod h1:CGI5F/G+E5bKwmfYo09AXuVN4dD894kIKUFmVbP2/Fo= -google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19 h1:0nDDozoAU19Qb2HwhXadU8OcsiO/09cnTqhUtq2MEOM= google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= @@ -2045,20 +1575,8 @@ google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQ google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.41.0/go.mod h1:U3l9uK9J0sini8mHphKoXyaqDA/8VyGnDee1zzIUK6k= -google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= -google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= google.golang.org/grpc v1.57.0 h1:kfzNeI/klCGD2YPMUlaGNT3pxvYfga7smW3Vth8Zsiw= google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= @@ -2075,7 +1593,6 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba 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.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= diff --git a/handler/encoders/json.go b/handler/encoders/json.go index e35857e..9fb3ed3 100644 --- a/handler/encoders/json.go +++ b/handler/encoders/json.go @@ -2,9 +2,10 @@ package encoders import ( "encoding/json" - pb "go.unistack.org/unistack-org/pkgdash/proto/go_generate" "net/http" + pb "go.unistack.org/unistack-org/pkgdash/proto" + "github.com/pkg/errors" ) diff --git a/handler/encoders/jsonpb.go b/handler/encoders/jsonpb.go index c891ac0..d0a023a 100644 --- a/handler/encoders/jsonpb.go +++ b/handler/encoders/jsonpb.go @@ -2,7 +2,7 @@ package encoders import ( "github.com/pkg/errors" - pb "go.unistack.org/unistack-org/pkgdash/proto/go_generate" + pb "go.unistack.org/unistack-org/pkgdash/proto" "google.golang.org/protobuf/encoding/protojson" "google.golang.org/protobuf/proto" "io" diff --git a/handler/handlers.go b/handler/handlers.go index 1537791..5573dca 100644 --- a/handler/handlers.go +++ b/handler/handlers.go @@ -2,14 +2,15 @@ package handler import ( "context" + "net/http" + cmsstorage "go.unistack.org/cms-service/storage" - "go.unistack.org/micro/v3" - "go.unistack.org/micro/v3/errors" + "go.unistack.org/micro/v4" + "go.unistack.org/micro/v4/errors" "go.unistack.org/unistack-org/pkgdash/config" "go.unistack.org/unistack-org/pkgdash/models" - pb "go.unistack.org/unistack-org/pkgdash/proto/go_generate" + pb "go.unistack.org/unistack-org/pkgdash/proto" "go.unistack.org/unistack-org/pkgdash/storage" - "net/http" ) type Handler struct { diff --git a/handler/mapping.go b/handler/mapping.go index 2672469..f24f2d0 100644 --- a/handler/mapping.go +++ b/handler/mapping.go @@ -1,11 +1,11 @@ package handler import ( + "context" "errors" - pb "go.unistack.org/unistack-org/pkgdash/proto/go_generate" "net/http" - "golang.org/x/net/context" + pb "go.unistack.org/unistack-org/pkgdash/proto" ) const ( diff --git a/handler/writer.go b/handler/writer.go index 0929118..42684b4 100644 --- a/handler/writer.go +++ b/handler/writer.go @@ -2,10 +2,11 @@ package handler import ( "context" - "go.unistack.org/micro/v4/logger" - pb "go.unistack.org/unistack-org/pkgdash/proto/go_generate" "net/http" + "go.unistack.org/micro/v4/logger" + pb "go.unistack.org/unistack-org/pkgdash/proto" + "github.com/pkg/errors" ) diff --git a/models/mapping.go b/models/mapping.go index 44a39fe..2745cab 100644 --- a/models/mapping.go +++ b/models/mapping.go @@ -1,7 +1,7 @@ package models import ( - pb "go.unistack.org/unistack-org/pkgdash/proto/go_generate" + pb "go.unistack.org/unistack-org/pkgdash/proto" ) type ListPackage []*Package diff --git a/proto/generate.go b/proto/generate.go deleted file mode 100644 index a5986e3..0000000 --- a/proto/generate.go +++ /dev/null @@ -1,9 +0,0 @@ -//go:build tools -// +build tools - -package proto - -import ( - _ "github.com/envoyproxy/protoc-gen-validate" - _ "go.unistack.org/micro-proto/v3" -) diff --git a/proto/generate.sh b/proto/generate.sh deleted file mode 100755 index bc9a3c2..0000000 --- a/proto/generate.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh -ex - - PROTO_ARGS=" \ ---proto_path=$(go list -f '{{ .Dir }}' -m github.com/envoyproxy/protoc-gen-validate) \ ---proto_path=$(go list -f '{{ .Dir }}' -m go.unistack.org/micro-proto/v3) \ ---go_out=paths=source_relative:go_generate \ ---go-micro_out=module=go.unistack.org/unistack-org/pkgdash/proto/go_generate,components=micro|http,standalone=true:./micro \ ---validate_out=paths=source_relative,lang=go:go_generate -" - -find . -not \( -name "*.sh" -or -name "*.proto" -or -name "generate.go" \) -delete -mkdir -p micro go_generate && \ -protoc -I. $PROTO_ARGS ./*.proto || \ -find . -not \( -name "*.sh" -or -name "*.proto" -or -name "generate.go" \) -delete \ No newline at end of file diff --git a/proto/micro/dashboard_micro.pb.go b/proto/micro/dashboard_micro.pb.go deleted file mode 100644 index 5d3c19c..0000000 --- a/proto/micro/dashboard_micro.pb.go +++ /dev/null @@ -1,33 +0,0 @@ -// Code generated by protoc-gen-go-micro. DO NOT EDIT. -// versions: -// - protoc-gen-go-micro v3.10.3 -// - protoc v4.23.4 -// source: dashboard.proto - -package go_generate - -import ( - context "context" - v3 "go.unistack.org/micro-server-http/v3" - client "go.unistack.org/micro/v3/client" - go_generate "go.unistack.org/unistack-org/pkgdash/proto/go_generate" -) - -var ( - DashboardServiceName = "DashboardService" -) -var ( - DashboardServiceServerEndpoints = []v3.EndpointMetadata{} -) - -type DashboardServiceClient interface { - ListPackage(ctx context.Context, req *go_generate.ListPackageReq, opts ...client.CallOption) (*go_generate.ListPackageRsp, error) - UpdateInfo(ctx context.Context, req *go_generate.UpdateInfoPackageRsp, opts ...client.CallOption) (*go_generate.UpdateInfoPackageReq, error) - AddComment(ctx context.Context, req *go_generate.CommentRsp, opts ...client.CallOption) (*go_generate.CommentReq, error) -} - -type DashboardServiceServer interface { - ListPackage(ctx context.Context, req *go_generate.ListPackageReq, rsp *go_generate.ListPackageRsp) error - UpdateInfo(ctx context.Context, req *go_generate.UpdateInfoPackageRsp, rsp *go_generate.UpdateInfoPackageReq) error - AddComment(ctx context.Context, req *go_generate.CommentRsp, rsp *go_generate.CommentReq) error -} diff --git a/proto/micro/dashboard_micro_http.pb.go b/proto/micro/dashboard_micro_http.pb.go deleted file mode 100644 index 91d7e05..0000000 --- a/proto/micro/dashboard_micro_http.pb.go +++ /dev/null @@ -1,81 +0,0 @@ -// Code generated by protoc-gen-go-micro. DO NOT EDIT. -// protoc-gen-go-micro version: v3.10.3 -// source: dashboard.proto - -package go_generate - -import ( - context "context" - _ "go.unistack.org/micro-client-http/v3" - v3 "go.unistack.org/micro-server-http/v3" - client "go.unistack.org/micro/v3/client" - server "go.unistack.org/micro/v3/server" - go_generate "go.unistack.org/unistack-org/pkgdash/proto/go_generate" -) - -type dashboardServiceClient struct { - c client.Client - name string -} - -func NewDashboardServiceClient(name string, c client.Client) DashboardServiceClient { - return &dashboardServiceClient{c: c, name: name} -} - -func (c *dashboardServiceClient) ListPackage(ctx context.Context, req *go_generate.ListPackageReq, opts ...client.CallOption) (*go_generate.ListPackageRsp, error) { - rsp := &go_generate.ListPackageRsp{} - err := c.c.Call(ctx, c.c.NewRequest(c.name, "DashboardService.ListPackage", req), rsp, opts...) - if err != nil { - return nil, err - } - return rsp, nil -} - -func (c *dashboardServiceClient) UpdateInfo(ctx context.Context, req *go_generate.UpdateInfoPackageRsp, opts ...client.CallOption) (*go_generate.UpdateInfoPackageReq, error) { - rsp := &go_generate.UpdateInfoPackageReq{} - err := c.c.Call(ctx, c.c.NewRequest(c.name, "DashboardService.UpdateInfo", req), rsp, opts...) - if err != nil { - return nil, err - } - return rsp, nil -} - -func (c *dashboardServiceClient) AddComment(ctx context.Context, req *go_generate.CommentRsp, opts ...client.CallOption) (*go_generate.CommentReq, error) { - rsp := &go_generate.CommentReq{} - err := c.c.Call(ctx, c.c.NewRequest(c.name, "DashboardService.AddComment", req), rsp, opts...) - if err != nil { - return nil, err - } - return rsp, nil -} - -type dashboardServiceServer struct { - DashboardServiceServer -} - -func (h *dashboardServiceServer) ListPackage(ctx context.Context, req *go_generate.ListPackageReq, rsp *go_generate.ListPackageRsp) error { - return h.DashboardServiceServer.ListPackage(ctx, req, rsp) -} - -func (h *dashboardServiceServer) UpdateInfo(ctx context.Context, req *go_generate.UpdateInfoPackageRsp, rsp *go_generate.UpdateInfoPackageReq) error { - return h.DashboardServiceServer.UpdateInfo(ctx, req, rsp) -} - -func (h *dashboardServiceServer) AddComment(ctx context.Context, req *go_generate.CommentRsp, rsp *go_generate.CommentReq) error { - return h.DashboardServiceServer.AddComment(ctx, req, rsp) -} - -func RegisterDashboardServiceServer(s server.Server, sh DashboardServiceServer, opts ...server.HandlerOption) error { - type dashboardService interface { - ListPackage(ctx context.Context, req *go_generate.ListPackageReq, rsp *go_generate.ListPackageRsp) error - UpdateInfo(ctx context.Context, req *go_generate.UpdateInfoPackageRsp, rsp *go_generate.UpdateInfoPackageReq) error - AddComment(ctx context.Context, req *go_generate.CommentRsp, rsp *go_generate.CommentReq) error - } - type DashboardService struct { - dashboardService - } - h := &dashboardServiceServer{sh} - var nopts []server.HandlerOption - nopts = append(nopts, v3.HandlerEndpoints(DashboardServiceServerEndpoints)) - return s.Handle(s.NewHandler(&DashboardService{h}, append(nopts, opts...)...)) -} diff --git a/proto/go_generate/dashboard.pb.go b/proto/pkgdash.pb.go similarity index 54% rename from proto/go_generate/dashboard.pb.go rename to proto/pkgdash.pb.go index 46671b2..0de4fd3 100644 --- a/proto/go_generate/dashboard.pb.go +++ b/proto/pkgdash.pb.go @@ -1,15 +1,20 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.31.0 +// protoc-gen-go v1.26.0 // protoc v4.23.4 -// source: dashboard.proto +// source: pkgdash.proto -package go_generate +package pkgdashpb import ( _ "github.com/envoyproxy/protoc-gen-validate/validate" + _ "go.unistack.org/micro-proto/v4/api" + _ "go.unistack.org/micro-proto/v4/openapiv2" + _ "go.unistack.org/micro-proto/v4/openapiv3" + _ "go.unistack.org/micro-proto/v4/tag" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + _ "google.golang.org/protobuf/types/known/wrapperspb" reflect "reflect" sync "sync" ) @@ -32,7 +37,7 @@ type ErrorRsp struct { func (x *ErrorRsp) Reset() { *x = ErrorRsp{} if protoimpl.UnsafeEnabled { - mi := &file_dashboard_proto_msgTypes[0] + mi := &file_pkgdash_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -45,7 +50,7 @@ func (x *ErrorRsp) String() string { func (*ErrorRsp) ProtoMessage() {} func (x *ErrorRsp) ProtoReflect() protoreflect.Message { - mi := &file_dashboard_proto_msgTypes[0] + mi := &file_pkgdash_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -58,7 +63,7 @@ func (x *ErrorRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use ErrorRsp.ProtoReflect.Descriptor instead. func (*ErrorRsp) Descriptor() ([]byte, []int) { - return file_dashboard_proto_rawDescGZIP(), []int{0} + return file_pkgdash_proto_rawDescGZIP(), []int{0} } func (x *ErrorRsp) GetError() *Error { @@ -82,7 +87,7 @@ type Error struct { func (x *Error) Reset() { *x = Error{} if protoimpl.UnsafeEnabled { - mi := &file_dashboard_proto_msgTypes[1] + mi := &file_pkgdash_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -95,7 +100,7 @@ func (x *Error) String() string { func (*Error) ProtoMessage() {} func (x *Error) ProtoReflect() protoreflect.Message { - mi := &file_dashboard_proto_msgTypes[1] + mi := &file_pkgdash_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -108,7 +113,7 @@ func (x *Error) ProtoReflect() protoreflect.Message { // Deprecated: Use Error.ProtoReflect.Descriptor instead. func (*Error) Descriptor() ([]byte, []int) { - return file_dashboard_proto_rawDescGZIP(), []int{1} + return file_pkgdash_proto_rawDescGZIP(), []int{1} } func (x *Error) GetCode() string { @@ -154,7 +159,7 @@ type Package struct { func (x *Package) Reset() { *x = Package{} if protoimpl.UnsafeEnabled { - mi := &file_dashboard_proto_msgTypes[2] + mi := &file_pkgdash_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -167,7 +172,7 @@ func (x *Package) String() string { func (*Package) ProtoMessage() {} func (x *Package) ProtoReflect() protoreflect.Message { - mi := &file_dashboard_proto_msgTypes[2] + mi := &file_pkgdash_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -180,7 +185,7 @@ func (x *Package) ProtoReflect() protoreflect.Message { // Deprecated: Use Package.ProtoReflect.Descriptor instead. func (*Package) Descriptor() ([]byte, []int) { - return file_dashboard_proto_rawDescGZIP(), []int{2} + return file_pkgdash_proto_rawDescGZIP(), []int{2} } func (x *Package) GetId() uint64 { @@ -232,7 +237,7 @@ type Module struct { func (x *Module) Reset() { *x = Module{} if protoimpl.UnsafeEnabled { - mi := &file_dashboard_proto_msgTypes[3] + mi := &file_pkgdash_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -245,7 +250,7 @@ func (x *Module) String() string { func (*Module) ProtoMessage() {} func (x *Module) ProtoReflect() protoreflect.Message { - mi := &file_dashboard_proto_msgTypes[3] + mi := &file_pkgdash_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -258,7 +263,7 @@ func (x *Module) ProtoReflect() protoreflect.Message { // Deprecated: Use Module.ProtoReflect.Descriptor instead. func (*Module) Descriptor() ([]byte, []int) { - return file_dashboard_proto_rawDescGZIP(), []int{3} + return file_pkgdash_proto_rawDescGZIP(), []int{3} } func (x *Module) GetId() uint64 { @@ -304,7 +309,7 @@ type Issue struct { func (x *Issue) Reset() { *x = Issue{} if protoimpl.UnsafeEnabled { - mi := &file_dashboard_proto_msgTypes[4] + mi := &file_pkgdash_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -317,7 +322,7 @@ func (x *Issue) String() string { func (*Issue) ProtoMessage() {} func (x *Issue) ProtoReflect() protoreflect.Message { - mi := &file_dashboard_proto_msgTypes[4] + mi := &file_pkgdash_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -330,7 +335,7 @@ func (x *Issue) ProtoReflect() protoreflect.Message { // Deprecated: Use Issue.ProtoReflect.Descriptor instead. func (*Issue) Descriptor() ([]byte, []int) { - return file_dashboard_proto_rawDescGZIP(), []int{4} + return file_pkgdash_proto_rawDescGZIP(), []int{4} } func (x *Issue) GetId() uint64 { @@ -383,7 +388,7 @@ type Comment struct { func (x *Comment) Reset() { *x = Comment{} if protoimpl.UnsafeEnabled { - mi := &file_dashboard_proto_msgTypes[5] + mi := &file_pkgdash_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -396,7 +401,7 @@ func (x *Comment) String() string { func (*Comment) ProtoMessage() {} func (x *Comment) ProtoReflect() protoreflect.Message { - mi := &file_dashboard_proto_msgTypes[5] + mi := &file_pkgdash_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -409,7 +414,7 @@ func (x *Comment) ProtoReflect() protoreflect.Message { // Deprecated: Use Comment.ProtoReflect.Descriptor instead. func (*Comment) Descriptor() ([]byte, []int) { - return file_dashboard_proto_rawDescGZIP(), []int{5} + return file_pkgdash_proto_rawDescGZIP(), []int{5} } func (x *Comment) GetId() uint64 { @@ -456,7 +461,7 @@ type ListPackageReq struct { func (x *ListPackageReq) Reset() { *x = ListPackageReq{} if protoimpl.UnsafeEnabled { - mi := &file_dashboard_proto_msgTypes[6] + mi := &file_pkgdash_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -469,7 +474,7 @@ func (x *ListPackageReq) String() string { func (*ListPackageReq) ProtoMessage() {} func (x *ListPackageReq) ProtoReflect() protoreflect.Message { - mi := &file_dashboard_proto_msgTypes[6] + mi := &file_pkgdash_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -482,7 +487,7 @@ func (x *ListPackageReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListPackageReq.ProtoReflect.Descriptor instead. func (*ListPackageReq) Descriptor() ([]byte, []int) { - return file_dashboard_proto_rawDescGZIP(), []int{6} + return file_pkgdash_proto_rawDescGZIP(), []int{6} } type ListPackageRsp struct { @@ -496,7 +501,7 @@ type ListPackageRsp struct { func (x *ListPackageRsp) Reset() { *x = ListPackageRsp{} if protoimpl.UnsafeEnabled { - mi := &file_dashboard_proto_msgTypes[7] + mi := &file_pkgdash_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -509,7 +514,7 @@ func (x *ListPackageRsp) String() string { func (*ListPackageRsp) ProtoMessage() {} func (x *ListPackageRsp) ProtoReflect() protoreflect.Message { - mi := &file_dashboard_proto_msgTypes[7] + mi := &file_pkgdash_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -522,7 +527,7 @@ func (x *ListPackageRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListPackageRsp.ProtoReflect.Descriptor instead. func (*ListPackageRsp) Descriptor() ([]byte, []int) { - return file_dashboard_proto_rawDescGZIP(), []int{7} + return file_pkgdash_proto_rawDescGZIP(), []int{7} } func (x *ListPackageRsp) GetPackages() []*Package { @@ -543,7 +548,7 @@ type UpdateInfoPackageRsp struct { func (x *UpdateInfoPackageRsp) Reset() { *x = UpdateInfoPackageRsp{} if protoimpl.UnsafeEnabled { - mi := &file_dashboard_proto_msgTypes[8] + mi := &file_pkgdash_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -556,7 +561,7 @@ func (x *UpdateInfoPackageRsp) String() string { func (*UpdateInfoPackageRsp) ProtoMessage() {} func (x *UpdateInfoPackageRsp) ProtoReflect() protoreflect.Message { - mi := &file_dashboard_proto_msgTypes[8] + mi := &file_pkgdash_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -569,7 +574,7 @@ func (x *UpdateInfoPackageRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateInfoPackageRsp.ProtoReflect.Descriptor instead. func (*UpdateInfoPackageRsp) Descriptor() ([]byte, []int) { - return file_dashboard_proto_rawDescGZIP(), []int{8} + return file_pkgdash_proto_rawDescGZIP(), []int{8} } func (x *UpdateInfoPackageRsp) GetId() uint64 { @@ -590,7 +595,7 @@ type UpdateInfoPackageReq struct { func (x *UpdateInfoPackageReq) Reset() { *x = UpdateInfoPackageReq{} if protoimpl.UnsafeEnabled { - mi := &file_dashboard_proto_msgTypes[9] + mi := &file_pkgdash_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -603,7 +608,7 @@ func (x *UpdateInfoPackageReq) String() string { func (*UpdateInfoPackageReq) ProtoMessage() {} func (x *UpdateInfoPackageReq) ProtoReflect() protoreflect.Message { - mi := &file_dashboard_proto_msgTypes[9] + mi := &file_pkgdash_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -616,7 +621,7 @@ func (x *UpdateInfoPackageReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateInfoPackageReq.ProtoReflect.Descriptor instead. func (*UpdateInfoPackageReq) Descriptor() ([]byte, []int) { - return file_dashboard_proto_rawDescGZIP(), []int{9} + return file_pkgdash_proto_rawDescGZIP(), []int{9} } func (x *UpdateInfoPackageReq) GetId() uint64 { @@ -626,73 +631,19 @@ func (x *UpdateInfoPackageReq) GetId() uint64 { return 0 } -type CommentRsp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - IdPackage uint64 `protobuf:"varint,1,opt,name=idPackage,proto3" json:"idPackage,omitempty"` - Text string `protobuf:"bytes,2,opt,name=text,proto3" json:"text,omitempty"` -} - -func (x *CommentRsp) Reset() { - *x = CommentRsp{} - if protoimpl.UnsafeEnabled { - mi := &file_dashboard_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CommentRsp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CommentRsp) ProtoMessage() {} - -func (x *CommentRsp) ProtoReflect() protoreflect.Message { - mi := &file_dashboard_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CommentRsp.ProtoReflect.Descriptor instead. -func (*CommentRsp) Descriptor() ([]byte, []int) { - return file_dashboard_proto_rawDescGZIP(), []int{10} -} - -func (x *CommentRsp) GetIdPackage() uint64 { - if x != nil { - return x.IdPackage - } - return 0 -} - -func (x *CommentRsp) GetText() string { - if x != nil { - return x.Text - } - return "" -} - type CommentReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Pkg uint64 `protobuf:"varint,1,opt,name=pkg,proto3" json:"pkg,omitempty"` + Text string `protobuf:"bytes,2,opt,name=text,proto3" json:"text,omitempty"` } func (x *CommentReq) Reset() { *x = CommentReq{} if protoimpl.UnsafeEnabled { - mi := &file_dashboard_proto_msgTypes[11] + mi := &file_pkgdash_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -705,7 +656,7 @@ func (x *CommentReq) String() string { func (*CommentReq) ProtoMessage() {} func (x *CommentReq) ProtoReflect() protoreflect.Message { - mi := &file_dashboard_proto_msgTypes[11] + mi := &file_pkgdash_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -718,147 +669,222 @@ func (x *CommentReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CommentReq.ProtoReflect.Descriptor instead. func (*CommentReq) Descriptor() ([]byte, []int) { - return file_dashboard_proto_rawDescGZIP(), []int{11} + return file_pkgdash_proto_rawDescGZIP(), []int{10} } -func (x *CommentReq) GetId() uint64 { +func (x *CommentReq) GetPkg() uint64 { + if x != nil { + return x.Pkg + } + return 0 +} + +func (x *CommentReq) GetText() string { + if x != nil { + return x.Text + } + return "" +} + +type CommentRsp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *CommentRsp) Reset() { + *x = CommentRsp{} + if protoimpl.UnsafeEnabled { + mi := &file_pkgdash_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommentRsp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommentRsp) ProtoMessage() {} + +func (x *CommentRsp) ProtoReflect() protoreflect.Message { + mi := &file_pkgdash_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommentRsp.ProtoReflect.Descriptor instead. +func (*CommentRsp) Descriptor() ([]byte, []int) { + return file_pkgdash_proto_rawDescGZIP(), []int{11} +} + +func (x *CommentRsp) GetId() uint64 { if x != nil { return x.Id } return 0 } -var File_dashboard_proto protoreflect.FileDescriptor +var File_pkgdash_proto protoreflect.FileDescriptor -var file_dashboard_proto_rawDesc = []byte{ - 0x0a, 0x0f, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x12, 0x05, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, +var file_pkgdash_proto_rawDesc = []byte{ + 0x0a, 0x0d, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, + 0x07, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x1a, 0x15, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, + 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1b, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x6f, 0x70, + 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x33, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0d, 0x74, 0x61, 0x67, 0x2f, 0x74, + 0x61, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x22, 0x2e, 0x0a, 0x08, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x73, 0x70, 0x12, 0x22, 0x0a, - 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x22, 0x5f, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, - 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, - 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x22, 0xa9, 0x01, 0x0a, 0x07, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x17, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, - 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, - 0x27, 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x0d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, - 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, - 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x22, 0x84, - 0x01, 0x0a, 0x06, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x07, 0x70, 0x61, - 0x63, 0x6b, 0x61, 0x67, 0x65, 0x22, 0x9b, 0x01, 0x0a, 0x05, 0x49, 0x73, 0x73, 0x75, 0x65, 0x12, + 0x6f, 0x22, 0x30, 0x0a, 0x08, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x73, 0x70, 0x12, 0x24, 0x0a, + 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, + 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x22, 0x5f, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, + 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x22, 0xad, 0x01, 0x0a, 0x07, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, + 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x03, 0x75, 0x72, + 0x6c, 0x12, 0x29, 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2e, 0x4d, 0x6f, 0x64, + 0x75, 0x6c, 0x65, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x06, + 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, + 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x06, 0x69, 0x73, + 0x73, 0x75, 0x65, 0x73, 0x22, 0x84, 0x01, 0x0a, 0x06, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, - 0x32, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, - 0x00, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x04, 0x64, 0x65, 0x73, - 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, - 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x21, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, - 0x52, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, 0x64, - 0x75, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, - 0x6c, 0x65, 0x73, 0x22, 0x9f, 0x01, 0x0a, 0x07, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, - 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, - 0x32, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, - 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, - 0x20, 0x00, 0x52, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, - 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, - 0x21, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, - 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x12, 0x21, 0x0a, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x07, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x64, 0x22, 0x10, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x22, 0x3c, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x50, - 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x12, 0x2a, 0x0a, 0x08, 0x70, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x08, 0x70, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x73, 0x22, 0x2f, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, - 0x6e, 0x66, 0x6f, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x12, 0x17, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, - 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x22, 0x2f, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x17, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, - 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x22, 0x47, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x65, - 0x6e, 0x74, 0x52, 0x73, 0x70, 0x12, 0x25, 0x0a, 0x09, 0x69, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, - 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, - 0x00, 0x52, 0x09, 0x69, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, - 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, - 0x22, 0x25, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, 0x17, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, - 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x32, 0xd1, 0x01, 0x0a, 0x10, 0x44, 0x61, 0x73, 0x68, - 0x62, 0x6f, 0x61, 0x72, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x0b, - 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x15, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, - 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, - 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x0a, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x50, 0x61, 0x63, 0x6b, - 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x1a, 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, - 0x52, 0x65, 0x71, 0x22, 0x00, 0x12, 0x34, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6d, 0x6d, - 0x65, 0x6e, 0x74, 0x12, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, - 0x65, 0x6e, 0x74, 0x52, 0x73, 0x70, 0x1a, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, - 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x22, 0x00, 0x42, 0x44, 0x5a, 0x42, 0x67, - 0x6f, 0x2e, 0x75, 0x6e, 0x69, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x75, - 0x6e, 0x69, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2d, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x6b, 0x67, 0x64, - 0x61, 0x73, 0x68, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x5f, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x3b, 0x67, 0x6f, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x32, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, + 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, + 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, + 0x20, 0x00, 0x52, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x22, 0x9b, 0x01, 0x0a, 0x05, + 0x49, 0x73, 0x73, 0x75, 0x65, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, + 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, + 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x1b, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, + 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x21, 0x0a, 0x07, + 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, + 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x04, + 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x22, 0x9f, 0x01, 0x0a, 0x07, 0x43, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, + 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x21, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, + 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x07, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, + 0x20, 0x00, 0x52, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x22, 0x10, 0x0a, 0x0e, 0x4c, + 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x22, 0x3e, 0x0a, + 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x12, + 0x2c, 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2e, 0x50, 0x61, 0x63, 0x6b, + 0x61, 0x67, 0x65, 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x22, 0x2f, 0x0a, + 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x50, 0x61, 0x63, 0x6b, 0x61, + 0x67, 0x65, 0x52, 0x73, 0x70, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x22, 0x2f, + 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x50, 0x61, 0x63, 0x6b, + 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x22, + 0x3b, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, 0x19, 0x0a, + 0x03, 0x70, 0x6b, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, + 0x02, 0x20, 0x00, 0x52, 0x03, 0x70, 0x6b, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x22, 0x25, 0x0a, 0x0a, + 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x73, 0x70, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, + 0x02, 0x69, 0x64, 0x32, 0xb0, 0x03, 0x0a, 0x0e, 0x50, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x50, + 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x17, 0x2e, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, + 0x17, 0x2e, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, + 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x22, 0x3f, 0xaa, 0x84, 0x9e, 0x03, 0x26, 0x2a, + 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x42, 0x17, 0x0a, 0x15, + 0x12, 0x13, 0x0a, 0x11, 0x2e, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2e, 0x45, 0x72, 0x72, + 0x6f, 0x72, 0x52, 0x73, 0x70, 0xb2, 0xea, 0xff, 0xf9, 0x01, 0x0e, 0x12, 0x0c, 0x2f, 0x76, 0x31, + 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x12, 0x91, 0x01, 0x0a, 0x0a, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x2e, 0x70, 0x6b, 0x67, 0x64, 0x61, + 0x73, 0x68, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x50, 0x61, 0x63, + 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, + 0x68, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x50, 0x61, 0x63, 0x6b, + 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x22, 0x45, 0xaa, 0x84, 0x9e, 0x03, 0x25, 0x2a, 0x0a, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x17, 0x0a, 0x15, 0x12, 0x13, 0x0a, + 0x11, 0x2e, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, + 0x73, 0x70, 0xb2, 0xea, 0xff, 0xf9, 0x01, 0x15, 0x22, 0x10, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x61, + 0x63, 0x6b, 0x61, 0x67, 0x65, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x86, 0x01, + 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x13, 0x2e, 0x70, + 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, + 0x71, 0x1a, 0x13, 0x2e, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, + 0x65, 0x6e, 0x74, 0x52, 0x73, 0x70, 0x22, 0x4e, 0xaa, 0x84, 0x9e, 0x03, 0x25, 0x2a, 0x0a, 0x41, + 0x64, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x17, 0x0a, 0x15, 0x12, 0x13, 0x0a, + 0x11, 0x2e, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, + 0x73, 0x70, 0xb2, 0xea, 0xff, 0xf9, 0x01, 0x1e, 0x22, 0x19, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x61, + 0x63, 0x6b, 0x61, 0x67, 0x65, 0x2f, 0x7b, 0x70, 0x6b, 0x67, 0x7d, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, + 0x65, 0x6e, 0x74, 0x3a, 0x01, 0x2a, 0x42, 0x36, 0x5a, 0x34, 0x67, 0x6f, 0x2e, 0x75, 0x6e, 0x69, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x75, 0x6e, 0x69, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x2d, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x3b, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x70, 0x62, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( - file_dashboard_proto_rawDescOnce sync.Once - file_dashboard_proto_rawDescData = file_dashboard_proto_rawDesc + file_pkgdash_proto_rawDescOnce sync.Once + file_pkgdash_proto_rawDescData = file_pkgdash_proto_rawDesc ) -func file_dashboard_proto_rawDescGZIP() []byte { - file_dashboard_proto_rawDescOnce.Do(func() { - file_dashboard_proto_rawDescData = protoimpl.X.CompressGZIP(file_dashboard_proto_rawDescData) +func file_pkgdash_proto_rawDescGZIP() []byte { + file_pkgdash_proto_rawDescOnce.Do(func() { + file_pkgdash_proto_rawDescData = protoimpl.X.CompressGZIP(file_pkgdash_proto_rawDescData) }) - return file_dashboard_proto_rawDescData + return file_pkgdash_proto_rawDescData } -var file_dashboard_proto_msgTypes = make([]protoimpl.MessageInfo, 12) -var file_dashboard_proto_goTypes = []interface{}{ - (*ErrorRsp)(nil), // 0: proto.ErrorRsp - (*Error)(nil), // 1: proto.Error - (*Package)(nil), // 2: proto.Package - (*Module)(nil), // 3: proto.Module - (*Issue)(nil), // 4: proto.Issue - (*Comment)(nil), // 5: proto.Comment - (*ListPackageReq)(nil), // 6: proto.ListPackageReq - (*ListPackageRsp)(nil), // 7: proto.ListPackageRsp - (*UpdateInfoPackageRsp)(nil), // 8: proto.UpdateInfoPackageRsp - (*UpdateInfoPackageReq)(nil), // 9: proto.UpdateInfoPackageReq - (*CommentRsp)(nil), // 10: proto.CommentRsp - (*CommentReq)(nil), // 11: proto.CommentReq +var file_pkgdash_proto_msgTypes = make([]protoimpl.MessageInfo, 12) +var file_pkgdash_proto_goTypes = []interface{}{ + (*ErrorRsp)(nil), // 0: pkgdash.ErrorRsp + (*Error)(nil), // 1: pkgdash.Error + (*Package)(nil), // 2: pkgdash.Package + (*Module)(nil), // 3: pkgdash.Module + (*Issue)(nil), // 4: pkgdash.Issue + (*Comment)(nil), // 5: pkgdash.Comment + (*ListPackageReq)(nil), // 6: pkgdash.ListPackageReq + (*ListPackageRsp)(nil), // 7: pkgdash.ListPackageRsp + (*UpdateInfoPackageRsp)(nil), // 8: pkgdash.UpdateInfoPackageRsp + (*UpdateInfoPackageReq)(nil), // 9: pkgdash.UpdateInfoPackageReq + (*CommentReq)(nil), // 10: pkgdash.CommentReq + (*CommentRsp)(nil), // 11: pkgdash.CommentRsp } -var file_dashboard_proto_depIdxs = []int32{ - 1, // 0: proto.ErrorRsp.error:type_name -> proto.Error - 3, // 1: proto.Package.modules:type_name -> proto.Module - 4, // 2: proto.Package.issues:type_name -> proto.Issue - 2, // 3: proto.ListPackageRsp.packages:type_name -> proto.Package - 6, // 4: proto.DashboardService.ListPackage:input_type -> proto.ListPackageReq - 8, // 5: proto.DashboardService.UpdateInfo:input_type -> proto.UpdateInfoPackageRsp - 10, // 6: proto.DashboardService.AddComment:input_type -> proto.CommentRsp - 7, // 7: proto.DashboardService.ListPackage:output_type -> proto.ListPackageRsp - 9, // 8: proto.DashboardService.UpdateInfo:output_type -> proto.UpdateInfoPackageReq - 11, // 9: proto.DashboardService.AddComment:output_type -> proto.CommentReq +var file_pkgdash_proto_depIdxs = []int32{ + 1, // 0: pkgdash.ErrorRsp.error:type_name -> pkgdash.Error + 3, // 1: pkgdash.Package.modules:type_name -> pkgdash.Module + 4, // 2: pkgdash.Package.issues:type_name -> pkgdash.Issue + 2, // 3: pkgdash.ListPackageRsp.packages:type_name -> pkgdash.Package + 6, // 4: pkgdash.PkgdashService.ListPackage:input_type -> pkgdash.ListPackageReq + 9, // 5: pkgdash.PkgdashService.UpdateInfo:input_type -> pkgdash.UpdateInfoPackageReq + 10, // 6: pkgdash.PkgdashService.AddComment:input_type -> pkgdash.CommentReq + 7, // 7: pkgdash.PkgdashService.ListPackage:output_type -> pkgdash.ListPackageRsp + 8, // 8: pkgdash.PkgdashService.UpdateInfo:output_type -> pkgdash.UpdateInfoPackageRsp + 11, // 9: pkgdash.PkgdashService.AddComment:output_type -> pkgdash.CommentRsp 7, // [7:10] is the sub-list for method output_type 4, // [4:7] is the sub-list for method input_type 4, // [4:4] is the sub-list for extension type_name @@ -866,13 +892,13 @@ var file_dashboard_proto_depIdxs = []int32{ 0, // [0:4] is the sub-list for field type_name } -func init() { file_dashboard_proto_init() } -func file_dashboard_proto_init() { - if File_dashboard_proto != nil { +func init() { file_pkgdash_proto_init() } +func file_pkgdash_proto_init() { + if File_pkgdash_proto != nil { return } if !protoimpl.UnsafeEnabled { - file_dashboard_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_pkgdash_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ErrorRsp); i { case 0: return &v.state @@ -884,7 +910,7 @@ func file_dashboard_proto_init() { return nil } } - file_dashboard_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_pkgdash_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Error); i { case 0: return &v.state @@ -896,7 +922,7 @@ func file_dashboard_proto_init() { return nil } } - file_dashboard_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_pkgdash_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Package); i { case 0: return &v.state @@ -908,7 +934,7 @@ func file_dashboard_proto_init() { return nil } } - file_dashboard_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_pkgdash_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Module); i { case 0: return &v.state @@ -920,7 +946,7 @@ func file_dashboard_proto_init() { return nil } } - file_dashboard_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_pkgdash_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Issue); i { case 0: return &v.state @@ -932,7 +958,7 @@ func file_dashboard_proto_init() { return nil } } - file_dashboard_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_pkgdash_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Comment); i { case 0: return &v.state @@ -944,7 +970,7 @@ func file_dashboard_proto_init() { return nil } } - file_dashboard_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_pkgdash_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPackageReq); i { case 0: return &v.state @@ -956,7 +982,7 @@ func file_dashboard_proto_init() { return nil } } - file_dashboard_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_pkgdash_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPackageRsp); i { case 0: return &v.state @@ -968,7 +994,7 @@ func file_dashboard_proto_init() { return nil } } - file_dashboard_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_pkgdash_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateInfoPackageRsp); i { case 0: return &v.state @@ -980,7 +1006,7 @@ func file_dashboard_proto_init() { return nil } } - file_dashboard_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_pkgdash_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateInfoPackageReq); i { case 0: return &v.state @@ -992,8 +1018,8 @@ func file_dashboard_proto_init() { return nil } } - file_dashboard_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CommentRsp); i { + file_pkgdash_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommentReq); i { case 0: return &v.state case 1: @@ -1004,8 +1030,8 @@ func file_dashboard_proto_init() { return nil } } - file_dashboard_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CommentReq); i { + file_pkgdash_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommentRsp); i { case 0: return &v.state case 1: @@ -1021,18 +1047,18 @@ func file_dashboard_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_dashboard_proto_rawDesc, + RawDescriptor: file_pkgdash_proto_rawDesc, NumEnums: 0, NumMessages: 12, NumExtensions: 0, NumServices: 1, }, - GoTypes: file_dashboard_proto_goTypes, - DependencyIndexes: file_dashboard_proto_depIdxs, - MessageInfos: file_dashboard_proto_msgTypes, + GoTypes: file_pkgdash_proto_goTypes, + DependencyIndexes: file_pkgdash_proto_depIdxs, + MessageInfos: file_pkgdash_proto_msgTypes, }.Build() - File_dashboard_proto = out.File - file_dashboard_proto_rawDesc = nil - file_dashboard_proto_goTypes = nil - file_dashboard_proto_depIdxs = nil + File_pkgdash_proto = out.File + file_pkgdash_proto_rawDesc = nil + file_pkgdash_proto_goTypes = nil + file_pkgdash_proto_depIdxs = nil } diff --git a/proto/go_generate/dashboard.pb.validate.go b/proto/pkgdash.pb.validate.go similarity index 99% rename from proto/go_generate/dashboard.pb.validate.go rename to proto/pkgdash.pb.validate.go index e82f9cd..2f3a080 100644 --- a/proto/go_generate/dashboard.pb.validate.go +++ b/proto/pkgdash.pb.validate.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-validate. DO NOT EDIT. -// source: dashboard.proto +// source: pkgdash.proto -package go_generate +package pkgdashpb import ( "bytes" @@ -89,7 +89,6 @@ func (m *ErrorRsp) validate(all bool) error { if len(errors) > 0 { return ErrorRspMultiError(errors) } - return nil } @@ -195,7 +194,6 @@ func (m *Error) validate(all bool) error { if len(errors) > 0 { return ErrorMultiError(errors) } - return nil } @@ -394,7 +392,6 @@ func (m *Package) validate(all bool) error { if len(errors) > 0 { return PackageMultiError(errors) } - return nil } @@ -536,7 +533,6 @@ func (m *Module) validate(all bool) error { if len(errors) > 0 { return ModuleMultiError(errors) } - return nil } @@ -678,7 +674,6 @@ func (m *Issue) validate(all bool) error { if len(errors) > 0 { return IssueMultiError(errors) } - return nil } @@ -822,7 +817,6 @@ func (m *Comment) validate(all bool) error { if len(errors) > 0 { return CommentMultiError(errors) } - return nil } @@ -921,7 +915,6 @@ func (m *ListPackageReq) validate(all bool) error { if len(errors) > 0 { return ListPackageReqMultiError(errors) } - return nil } @@ -1055,7 +1048,6 @@ func (m *ListPackageRsp) validate(all bool) error { if len(errors) > 0 { return ListPackageRspMultiError(errors) } - return nil } @@ -1166,7 +1158,6 @@ func (m *UpdateInfoPackageRsp) validate(all bool) error { if len(errors) > 0 { return UpdateInfoPackageRspMultiError(errors) } - return nil } @@ -1279,7 +1270,6 @@ func (m *UpdateInfoPackageReq) validate(all bool) error { if len(errors) > 0 { return UpdateInfoPackageReqMultiError(errors) } - return nil } @@ -1356,118 +1346,6 @@ var _ interface { ErrorName() string } = UpdateInfoPackageReqValidationError{} -// Validate checks the field values on CommentRsp with the rules defined in the -// proto definition for this message. If any rules are violated, the first -// error encountered is returned, or nil if there are no violations. -func (m *CommentRsp) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CommentRsp with the rules defined in -// the proto definition for this message. If any rules are violated, the -// result is a list of violation errors wrapped in CommentRspMultiError, or -// nil if none found. -func (m *CommentRsp) ValidateAll() error { - return m.validate(true) -} - -func (m *CommentRsp) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - if m.GetIdPackage() <= 0 { - err := CommentRspValidationError{ - field: "IdPackage", - reason: "value must be greater than 0", - } - if !all { - return err - } - errors = append(errors, err) - } - - // no validation rules for Text - - if len(errors) > 0 { - return CommentRspMultiError(errors) - } - - return nil -} - -// CommentRspMultiError is an error wrapping multiple validation errors -// returned by CommentRsp.ValidateAll() if the designated constraints aren't met. -type CommentRspMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CommentRspMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CommentRspMultiError) AllErrors() []error { return m } - -// CommentRspValidationError is the validation error returned by -// CommentRsp.Validate if the designated constraints aren't met. -type CommentRspValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e CommentRspValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e CommentRspValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e CommentRspValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e CommentRspValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e CommentRspValidationError) ErrorName() string { return "CommentRspValidationError" } - -// Error satisfies the builtin error interface -func (e CommentRspValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sCommentRsp.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = CommentRspValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = CommentRspValidationError{} - // Validate checks the field values on CommentReq with the rules defined in the // proto definition for this message. If any rules are violated, the first // error encountered is returned, or nil if there are no violations. @@ -1490,9 +1368,9 @@ func (m *CommentReq) validate(all bool) error { var errors []error - if m.GetId() <= 0 { + if m.GetPkg() <= 0 { err := CommentReqValidationError{ - field: "Id", + field: "Pkg", reason: "value must be greater than 0", } if !all { @@ -1501,10 +1379,11 @@ func (m *CommentReq) validate(all bool) error { errors = append(errors, err) } + // no validation rules for Text + if len(errors) > 0 { return CommentReqMultiError(errors) } - return nil } @@ -1577,3 +1456,112 @@ var _ interface { Cause() error ErrorName() string } = CommentReqValidationError{} + +// Validate checks the field values on CommentRsp with the rules defined in the +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *CommentRsp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CommentRsp with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in CommentRspMultiError, or +// nil if none found. +func (m *CommentRsp) ValidateAll() error { + return m.validate(true) +} + +func (m *CommentRsp) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if m.GetId() <= 0 { + err := CommentRspValidationError{ + field: "Id", + reason: "value must be greater than 0", + } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return CommentRspMultiError(errors) + } + return nil +} + +// CommentRspMultiError is an error wrapping multiple validation errors +// returned by CommentRsp.ValidateAll() if the designated constraints aren't met. +type CommentRspMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CommentRspMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CommentRspMultiError) AllErrors() []error { return m } + +// CommentRspValidationError is the validation error returned by +// CommentRsp.Validate if the designated constraints aren't met. +type CommentRspValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e CommentRspValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e CommentRspValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e CommentRspValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e CommentRspValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e CommentRspValidationError) ErrorName() string { return "CommentRspValidationError" } + +// Error satisfies the builtin error interface +func (e CommentRspValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sCommentRsp.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = CommentRspValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = CommentRspValidationError{} diff --git a/proto/dashboard.proto b/proto/pkgdash.proto similarity index 54% rename from proto/dashboard.proto rename to proto/pkgdash.proto index 54eb0d8..74e214c 100644 --- a/proto/dashboard.proto +++ b/proto/pkgdash.proto @@ -1,15 +1,58 @@ syntax = "proto3"; -package proto; +package pkgdash; -option go_package = "go.unistack.org/unistack-org/pkgdash/proto/go_generate;go_generate"; +option go_package = "go.unistack.org/unistack-org/pkgdash/proto;pkgdashpb"; +import "api/annotations.proto"; +import "google/protobuf/wrappers.proto"; +import "openapiv2/annotations.proto"; +import "openapiv3/annotations.proto"; +import "tag/tag.proto"; import "validate/validate.proto"; -service DashboardService { - rpc ListPackage(ListPackageReq) returns (ListPackageRsp) {}; - rpc UpdateInfo(UpdateInfoPackageRsp) returns (UpdateInfoPackageReq) {}; - rpc AddComment(CommentRsp) returns (CommentReq) {}; +service PkgdashService { + rpc ListPackage(ListPackageReq) returns (ListPackageRsp) { + option (micro.openapiv3.openapiv3_operation) = { + operation_id: "ListPackage"; + responses: { + default: { + reference: {_ref: ".pkgdash.ErrorRsp"}; + }; + }; + }; + option (micro.api.http) = { + get: "/v1/packages"; + }; + }; + rpc UpdateInfo(UpdateInfoPackageReq) returns (UpdateInfoPackageRsp) { + option (micro.openapiv3.openapiv3_operation) = { + operation_id: "UpdateInfo"; + responses: { + default: { + reference: {_ref: ".pkgdash.ErrorRsp"}; + }; + }; + }; + option (micro.api.http) = { + post: "/v1/package/{id}"; + body: "*"; + }; + }; + rpc AddComment(CommentReq) returns (CommentRsp) { + option (micro.openapiv3.openapiv3_operation) = { + operation_id: "AddComment"; + responses: { + default: { + reference: {_ref: ".pkgdash.ErrorRsp"}; + }; + }; + }; + option (micro.api.http) = { + post: "/v1/package/{pkg}/comment"; + body: "*"; + }; + }; }; message ErrorRsp { @@ -66,11 +109,11 @@ message UpdateInfoPackageReq { uint64 id = 1 [(validate.rules).uint64.gt = 0]; } -message CommentRsp { - uint64 idPackage = 1 [(validate.rules).uint64.gt = 0]; +message CommentReq { + uint64 pkg = 1 [(validate.rules).uint64.gt = 0]; string text = 2; } -message CommentReq { +message CommentRsp { uint64 id = 1 [(validate.rules).uint64.gt = 0]; } \ No newline at end of file diff --git a/proto/pkgdash_micro.pb.go b/proto/pkgdash_micro.pb.go new file mode 100644 index 0000000..60abb41 --- /dev/null +++ b/proto/pkgdash_micro.pb.go @@ -0,0 +1,28 @@ +// Code generated by protoc-gen-go-micro. DO NOT EDIT. +// versions: +// - protoc-gen-go-micro v3.10.4 +// - protoc v4.23.4 +// source: pkgdash.proto + +package pkgdashpb + +import ( + context "context" + client "go.unistack.org/micro/v3/client" +) + +var ( + PkgdashServiceName = "PkgdashService" +) + +type PkgdashServiceClient interface { + ListPackage(ctx context.Context, req *ListPackageReq, opts ...client.CallOption) (*ListPackageRsp, error) + UpdateInfo(ctx context.Context, req *UpdateInfoPackageReq, opts ...client.CallOption) (*UpdateInfoPackageRsp, error) + AddComment(ctx context.Context, req *CommentReq, opts ...client.CallOption) (*CommentRsp, error) +} + +type PkgdashServiceServer interface { + ListPackage(ctx context.Context, req *ListPackageReq, rsp *ListPackageRsp) error + UpdateInfo(ctx context.Context, req *UpdateInfoPackageReq, rsp *UpdateInfoPackageRsp) error + AddComment(ctx context.Context, req *CommentReq, rsp *CommentRsp) error +} diff --git a/proto/pkgdash_micro_http.pb.go b/proto/pkgdash_micro_http.pb.go new file mode 100644 index 0000000..3312c9a --- /dev/null +++ b/proto/pkgdash_micro_http.pb.go @@ -0,0 +1,136 @@ +// Code generated by protoc-gen-go-micro. DO NOT EDIT. +// protoc-gen-go-micro version: v3.10.4 +// source: pkgdash.proto + +package pkgdashpb + +import ( + context "context" + v31 "go.unistack.org/micro-client-http/v3" + v3 "go.unistack.org/micro-server-http/v3" + client "go.unistack.org/micro/v3/client" + server "go.unistack.org/micro/v3/server" + http "net/http" +) + +var ( + PkgdashServiceServerEndpoints = []v3.EndpointMetadata{ + { + Name: "PkgdashService.ListPackage", + Path: "/v1/packages", + Method: "GET", + Body: "", + Stream: false, + }, + { + Name: "PkgdashService.UpdateInfo", + Path: "/v1/package/{id}", + Method: "POST", + Body: "*", + Stream: false, + }, + { + Name: "PkgdashService.AddComment", + Path: "/v1/package/{pkg}/comment", + Method: "POST", + Body: "*", + Stream: false, + }, + } +) + +type pkgdashServiceClient struct { + c client.Client + name string +} + +func NewPkgdashServiceClient(name string, c client.Client) PkgdashServiceClient { + return &pkgdashServiceClient{c: c, name: name} +} + +func (c *pkgdashServiceClient) ListPackage(ctx context.Context, req *ListPackageReq, opts ...client.CallOption) (*ListPackageRsp, error) { + errmap := make(map[string]interface{}, 1) + errmap["default"] = &ErrorRsp{} + opts = append(opts, + v31.ErrorMap(errmap), + ) + opts = append(opts, + v31.Method(http.MethodGet), + v31.Path("/v1/packages"), + ) + rsp := &ListPackageRsp{} + err := c.c.Call(ctx, c.c.NewRequest(c.name, "PkgdashService.ListPackage", req), rsp, opts...) + if err != nil { + return nil, err + } + return rsp, nil +} + +func (c *pkgdashServiceClient) UpdateInfo(ctx context.Context, req *UpdateInfoPackageReq, opts ...client.CallOption) (*UpdateInfoPackageRsp, error) { + errmap := make(map[string]interface{}, 1) + errmap["default"] = &ErrorRsp{} + opts = append(opts, + v31.ErrorMap(errmap), + ) + opts = append(opts, + v31.Method(http.MethodPost), + v31.Path("/v1/package/{id}"), + v31.Body("*"), + ) + rsp := &UpdateInfoPackageRsp{} + err := c.c.Call(ctx, c.c.NewRequest(c.name, "PkgdashService.UpdateInfo", req), rsp, opts...) + if err != nil { + return nil, err + } + return rsp, nil +} + +func (c *pkgdashServiceClient) AddComment(ctx context.Context, req *CommentReq, opts ...client.CallOption) (*CommentRsp, error) { + errmap := make(map[string]interface{}, 1) + errmap["default"] = &ErrorRsp{} + opts = append(opts, + v31.ErrorMap(errmap), + ) + opts = append(opts, + v31.Method(http.MethodPost), + v31.Path("/v1/package/{pkg}/comment"), + v31.Body("*"), + ) + rsp := &CommentRsp{} + err := c.c.Call(ctx, c.c.NewRequest(c.name, "PkgdashService.AddComment", req), rsp, opts...) + if err != nil { + return nil, err + } + return rsp, nil +} + +type pkgdashServiceServer struct { + PkgdashServiceServer +} + +func (h *pkgdashServiceServer) ListPackage(ctx context.Context, req *ListPackageReq, rsp *ListPackageRsp) error { + return h.PkgdashServiceServer.ListPackage(ctx, req, rsp) +} + +func (h *pkgdashServiceServer) UpdateInfo(ctx context.Context, req *UpdateInfoPackageReq, rsp *UpdateInfoPackageRsp) error { + return h.PkgdashServiceServer.UpdateInfo(ctx, req, rsp) +} + +func (h *pkgdashServiceServer) AddComment(ctx context.Context, req *CommentReq, rsp *CommentRsp) error { + return h.PkgdashServiceServer.AddComment(ctx, req, rsp) +} + +func RegisterPkgdashServiceServer(s server.Server, sh PkgdashServiceServer, opts ...server.HandlerOption) error { + type pkgdashService interface { + ListPackage(ctx context.Context, req *ListPackageReq, rsp *ListPackageRsp) error + UpdateInfo(ctx context.Context, req *UpdateInfoPackageReq, rsp *UpdateInfoPackageRsp) error + AddComment(ctx context.Context, req *CommentReq, rsp *CommentRsp) error + } + type PkgdashService struct { + pkgdashService + } + h := &pkgdashServiceServer{sh} + var nopts []server.HandlerOption + nopts = append(nopts, v3.HandlerEndpoints(PkgdashServiceServerEndpoints)) + return s.Handle(s.NewHandler(&PkgdashService{h}, append(nopts, opts...)...)) +} diff --git a/service/service.go b/service/service.go index d3f527b..d7a57a7 100644 --- a/service/service.go +++ b/service/service.go @@ -2,23 +2,21 @@ package service import ( "context" + "net/http" + + cmsservice "go.unistack.org/cms-service" cmsstorage "go.unistack.org/cms-service/storage" + httpsrv "go.unistack.org/micro-server-http/v4" + "go.unistack.org/micro/v4" + "go.unistack.org/micro/v4/config" + "go.unistack.org/micro/v4/logger" + "go.unistack.org/micro/v4/options" + "go.unistack.org/micro/v4/register" + microuter "go.unistack.org/micro/v4/router" intcfg "go.unistack.org/unistack-org/pkgdash/config" "go.unistack.org/unistack-org/pkgdash/handler" "go.unistack.org/unistack-org/pkgdash/handler/encoders" - "net/http" - - //pbmicro "go.unistack.org/unistack-org/pkgdash/proto/micro" "go.unistack.org/unistack-org/pkgdash/storage" - - cmsservice "go.unistack.org/cms-service" - grpcsrv "go.unistack.org/micro-server-grpc/v3" - "go.unistack.org/micro/v3" - "go.unistack.org/micro/v3/config" - "go.unistack.org/micro/v3/logger" - "go.unistack.org/micro/v3/register" - microuter "go.unistack.org/micro/v3/router" - "go.unistack.org/micro/v3/server" ) func NewService(ctx context.Context) (micro.Service, error) { @@ -43,8 +41,8 @@ func NewService(ctx context.Context) (micro.Service, error) { router = microuter.NewRouter() } - mgsrv := grpcsrv.NewServer( - server.Register(reg), + mgsrv := httpsrv.NewServer( + options.Register(reg), ) svc := micro.NewService( @@ -81,9 +79,9 @@ func NewService(ctx context.Context) (micro.Service, error) { } if err := svc.Server("http").Init( - server.Address(cfg.App.Address), - server.Name(cfg.Service.Name), - server.Version(cfg.Service.Version), + options.Address(cfg.App.Address), + options.Name(cfg.Service.Name), + options.Version(cfg.Service.Version), ); err != nil { return err } diff --git a/storage/postgres/quries.go b/storage/postgres/queries.go similarity index 100% rename from storage/postgres/quries.go rename to storage/postgres/queries.go -- 2.45.2 From 8e4656196a9d44984c01641601d8cc46c9be9a74 Mon Sep 17 00:00:00 2001 From: Vasiliy Tolstov Date: Sat, 12 Aug 2023 13:19:51 +0300 Subject: [PATCH 14/16] update micro-client-http Signed-off-by: Vasiliy Tolstov --- go.mod | 2 +- go.sum | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index edfc01c..0475288 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/mattn/go-sqlite3 v1.14.16 github.com/pkg/errors v0.9.1 go.unistack.org/cms-service v0.0.1 - go.unistack.org/micro-client-http/v4 v4.0.1 + go.unistack.org/micro-client-http/v4 v4.0.2 go.unistack.org/micro-config-flag/v3 v3.8.9 go.unistack.org/micro-proto/v4 v4.0.1 go.unistack.org/micro-server-http/v4 v4.0.8 diff --git a/go.sum b/go.sum index b5b5053..43e6df5 100644 --- a/go.sum +++ b/go.sum @@ -1022,6 +1022,8 @@ go.unistack.org/micro-broker-service/v3 v3.8.2 h1:K30wBLsoLO0WbD9rhPi8S8asU9pfes go.unistack.org/micro-broker-service/v3 v3.8.2/go.mod h1:qTlBl4vdJSl66SFIjdjOWFWKO0BFQ2ImbwiPCti/H8M= go.unistack.org/micro-client-http/v4 v4.0.1 h1:XPE/BCLaVDrvAuAUHw3o8VelLut+OOIw3SSQ2R4L4Ig= go.unistack.org/micro-client-http/v4 v4.0.1/go.mod h1:ghKvUXvm+TY9C3ntAiIxQAS1nInLuKBLP4SG9U2jpB4= +go.unistack.org/micro-client-http/v4 v4.0.2 h1:0xsm2RCRWMfb1moeXQQ220uz52XE0R/PZvM9was/4lM= +go.unistack.org/micro-client-http/v4 v4.0.2/go.mod h1:Z9QT/upeqrp/rXVkL0lk6AzrkTdes0W3QlFlZ+ytkqM= go.unistack.org/micro-codec-yaml/v3 v3.10.0 h1:cnNiWQZ3F+jsCX9DhEHBdIw8CjBItxb+TrKGGdlQ8F8= go.unistack.org/micro-codec-yaml/v3 v3.10.0/go.mod h1:UzwC3QZZ6+PgKSudlGZNLkugXzOFkp3sxhs/CctEwBY= go.unistack.org/micro-config-env/v3 v3.8.5 h1:k0BKpQflJ9mutzK//VcYw4XAKlKHTvg2GtkHTrEjbko= -- 2.45.2 From 96c955b4123b1f78bcd9f5f65258d97dd48ad1a6 Mon Sep 17 00:00:00 2001 From: Vasiliy Tolstov Date: Sat, 12 Aug 2023 14:09:06 +0300 Subject: [PATCH 15/16] update deps with fixes Signed-off-by: Vasiliy Tolstov --- go.mod | 2 +- go.sum | 6 ++---- proto/pkgdash_micro_http.pb.go | 6 +++--- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/go.mod b/go.mod index 0475288..753d41b 100644 --- a/go.mod +++ b/go.mod @@ -15,7 +15,7 @@ require ( go.unistack.org/micro-client-http/v4 v4.0.2 go.unistack.org/micro-config-flag/v3 v3.8.9 go.unistack.org/micro-proto/v4 v4.0.1 - go.unistack.org/micro-server-http/v4 v4.0.8 + go.unistack.org/micro-server-http/v4 v4.0.9 go.unistack.org/micro/v4 v4.0.6 go.unistack.org/protoc-gen-go-micro/v4 v4.0.5 golang.org/x/mod v0.12.0 diff --git a/go.sum b/go.sum index 43e6df5..b14fb6b 100644 --- a/go.sum +++ b/go.sum @@ -1020,8 +1020,6 @@ go.unistack.org/cms-service v0.0.1 h1:XKKZqjQD3ViPGRzjadnVX94wQlKcWxompZac9YTeTj go.unistack.org/cms-service v0.0.1/go.mod h1:3apbDEEgmoPfnPRpzgN40fCqbn/BdfXDk/Hvly8+bGk= go.unistack.org/micro-broker-service/v3 v3.8.2 h1:K30wBLsoLO0WbD9rhPi8S8asU9pfes/M2X9tX9HLr24= go.unistack.org/micro-broker-service/v3 v3.8.2/go.mod h1:qTlBl4vdJSl66SFIjdjOWFWKO0BFQ2ImbwiPCti/H8M= -go.unistack.org/micro-client-http/v4 v4.0.1 h1:XPE/BCLaVDrvAuAUHw3o8VelLut+OOIw3SSQ2R4L4Ig= -go.unistack.org/micro-client-http/v4 v4.0.1/go.mod h1:ghKvUXvm+TY9C3ntAiIxQAS1nInLuKBLP4SG9U2jpB4= go.unistack.org/micro-client-http/v4 v4.0.2 h1:0xsm2RCRWMfb1moeXQQ220uz52XE0R/PZvM9was/4lM= go.unistack.org/micro-client-http/v4 v4.0.2/go.mod h1:Z9QT/upeqrp/rXVkL0lk6AzrkTdes0W3QlFlZ+ytkqM= go.unistack.org/micro-codec-yaml/v3 v3.10.0 h1:cnNiWQZ3F+jsCX9DhEHBdIw8CjBItxb+TrKGGdlQ8F8= @@ -1040,8 +1038,8 @@ go.unistack.org/micro-proto/v4 v4.0.1 h1:2RKHgtCOOcAFgKsnngGK5bqM/6MWXOjVCdw03db go.unistack.org/micro-proto/v4 v4.0.1/go.mod h1:ArmK7o+uFvxSY3dbJhKBBX4Pm1rhWdLEFf3LxBrMtec= go.unistack.org/micro-server-http/v3 v3.11.6 h1:BSjPyXrJ6OTyuCDE14XOGjLDJEICz2CEo2WfmSR3hqM= go.unistack.org/micro-server-http/v3 v3.11.6/go.mod h1:phNG9aosjbneXvZxEVaVQI+NHLLZ3eA82mOH6gGSShY= -go.unistack.org/micro-server-http/v4 v4.0.8 h1:49ZoZTAcRCZpoVH9D6CKzp7It6AEuvffJJaurgFIrms= -go.unistack.org/micro-server-http/v4 v4.0.8/go.mod h1:p55E0T8dthtOQC4bwzYpRSlky2Pd9xrUbJxPOu3opTI= +go.unistack.org/micro-server-http/v4 v4.0.9 h1:ye7LVVJSXlvE1TBvEuk4m3iZrAJk0rzs6vD2/qO/o2w= +go.unistack.org/micro-server-http/v4 v4.0.9/go.mod h1:Cu4utVz2u98fychmjA2Ls6clXrja0sqH6Xu/JTamf7Y= go.unistack.org/micro/v3 v3.10.14/go.mod h1:uMAc0U/x7dmtICCrblGf0ZLgYegu3VwQAquu+OFCw1Q= go.unistack.org/micro/v3 v3.10.18 h1:iz193N8eZKGrKPXuX6XMsGIRHMqdvUaZSfb9mzwlUYM= go.unistack.org/micro/v3 v3.10.18/go.mod h1:uMAc0U/x7dmtICCrblGf0ZLgYegu3VwQAquu+OFCw1Q= diff --git a/proto/pkgdash_micro_http.pb.go b/proto/pkgdash_micro_http.pb.go index 6f016ff..b1837ca 100644 --- a/proto/pkgdash_micro_http.pb.go +++ b/proto/pkgdash_micro_http.pb.go @@ -180,7 +180,7 @@ func (h *pkgdashServiceServer) GetModule(ctx context.Context, req *GetModuleReq, return h.PkgdashServiceServer.GetModule(ctx, req, rsp) } -func RegisterPkgdashServiceServer(s server.Server, sh PkgdashServiceServer, opts ...server.HandlerOption) error { +func RegisterPkgdashServiceServer(s server.Server, sh PkgdashServiceServer, opts ...options.Option) error { type pkgdashService interface { ListPackage(ctx context.Context, req *ListPackageReq, rsp *ListPackageRsp) error UpdatePackage(ctx context.Context, req *UpdatePackageReq, rsp *UpdatePackageRsp) error @@ -192,7 +192,7 @@ func RegisterPkgdashServiceServer(s server.Server, sh PkgdashServiceServer, opts pkgdashService } h := &pkgdashServiceServer{sh} - var nopts []server.HandlerOption + var nopts []options.Option nopts = append(nopts, v4.HandlerEndpoints(PkgdashServiceServerEndpoints)) - return s.Handle(s.NewHandler(&PkgdashService{h}, append(nopts, opts...)...)) + return s.Handle(&PkgdashService{h}, append(nopts, opts...)...) } -- 2.45.2 From 17a09f7fb327321b9956348ac0522fa5e001e792 Mon Sep 17 00:00:00 2001 From: Evstigneev Denis Date: Sat, 12 Aug 2023 19:26:50 +0300 Subject: [PATCH 16/16] chanched handlers --- cmd/pkgdash/main.go | 17 +- config/config.go | 16 +- go.mod | 14 +- go.sum | 10 +- handler/encoders/json.go | 26 -- handler/encoders/jsonpb.go | 51 --- handler/errors.go | 69 ++-- handler/handlers.go | 162 +++------ proto/docker_generate/Dockerfile | 43 --- proto/docker_generate/Makefile | 7 - proto/docker_generate/dashboard.proto | 71 ---- proto/docker_generate/restService.proto | 42 --- proto/generate.sh | 14 - proto/go_generate/dashboard.pb.go | 0 proto/micro/dashboard_micro.pb.go | 0 proto/micro/dashboard_micro_http.pb.go | 0 proto/pkgdash.pb.go | 412 +++++++++++------------ proto/pkgdash.pb.validate.go | 226 +++---------- proto/pkgdash.proto | 20 +- proto/pkgdash_micro.pb.go | 58 +++- proto/pkgdash_micro_http.pb.go | 110 ++---- service/service.go | 73 ++-- storage/postgres/queries.go | 4 + storage/postgres/quries.go | 28 -- storage/postgres/storage.go | 6 +- storage/sqlite/{quries.go => queries.go} | 2 +- storage/sqlite/storage.go | 21 +- storage/storage.go | 2 +- 28 files changed, 503 insertions(+), 1001 deletions(-) delete mode 100644 handler/encoders/json.go delete mode 100644 handler/encoders/jsonpb.go delete mode 100644 proto/docker_generate/Dockerfile delete mode 100644 proto/docker_generate/Makefile delete mode 100644 proto/docker_generate/dashboard.proto delete mode 100644 proto/docker_generate/restService.proto delete mode 100755 proto/generate.sh delete mode 100644 proto/go_generate/dashboard.pb.go delete mode 100644 proto/micro/dashboard_micro.pb.go delete mode 100644 proto/micro/dashboard_micro_http.pb.go delete mode 100644 storage/postgres/quries.go rename storage/sqlite/{quries.go => queries.go} (91%) diff --git a/cmd/pkgdash/main.go b/cmd/pkgdash/main.go index 5ee78d7..0d33c43 100644 --- a/cmd/pkgdash/main.go +++ b/cmd/pkgdash/main.go @@ -2,13 +2,26 @@ package main import ( "context" + "os" + "os/signal" + "syscall" - "go.unistack.org/micro/v3/logger" + "go.unistack.org/micro/v4/logger" "go.unistack.org/unistack-org/pkgdash/service" ) func main() { - ctx := context.Background() + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + ch := make(chan os.Signal, 1) + signal.Notify(ch, syscall.SIGINT, syscall.SIGTERM) + + go func() { + sig := <-ch + logger.Infof(ctx, "handle signal %v, exiting", sig) + cancel() + }() svc, err := service.NewService(ctx) if err != nil { diff --git a/config/config.go b/config/config.go index a5059fb..7e66cb1 100644 --- a/config/config.go +++ b/config/config.go @@ -1,22 +1,20 @@ package config -import service "go.unistack.org/cms-service" - type App struct { - Address string `flag:"name=pkgdash.address,desc='listen address',default='127.0.0.1:8080'"` + Name string + Version string } type Config struct { - App *App - Storage *service.ConfigStorage - Logger *service.ConfigLogger - Service *service.ConfigService - Core *service.ConfigCore + App *App + Address string `flag:"name=pkgdash.address,desc='listen address',default='127.0.0.1:8080'"` + StorageDSN map[string]string `flag:"name=storage.dsn,desc='components storage dsn',default='all=sqlite+file:database.db'"` + LogLevel string `flag:"name=logger.level,desc='logging level',default='info'"` } func NewConfig() *Config { return &Config{ - Service: &service.ConfigService{ + App: &App{ Name: ServiceName, Version: ServiceVersion, }, diff --git a/go.mod b/go.mod index 753d41b..99e1e29 100644 --- a/go.mod +++ b/go.mod @@ -12,9 +12,9 @@ require ( github.com/mattn/go-sqlite3 v1.14.16 github.com/pkg/errors v0.9.1 go.unistack.org/cms-service v0.0.1 - go.unistack.org/micro-client-http/v4 v4.0.2 - go.unistack.org/micro-config-flag/v3 v3.8.9 + go.unistack.org/micro-config-flag/v4 v4.0.2 go.unistack.org/micro-proto/v4 v4.0.1 + go.unistack.org/micro-server-http/v3 v3.11.6 go.unistack.org/micro-server-http/v4 v4.0.9 go.unistack.org/micro/v4 v4.0.6 go.unistack.org/protoc-gen-go-micro/v4 v4.0.5 @@ -23,6 +23,11 @@ require ( google.golang.org/protobuf v1.31.0 ) +require ( + go.unistack.org/micro-client-http/v3 v3.9.3 + go.unistack.org/micro/v3 v3.10.18 +) + require ( dario.cat/mergo v1.0.0 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect @@ -40,7 +45,7 @@ require ( github.com/hashicorp/errwrap v1.0.0 // indirect github.com/hashicorp/go-multierror v1.1.0 // indirect github.com/iancoleman/strcase v0.2.0 // indirect - github.com/imdario/mergo v0.3.15 // indirect + github.com/imdario/mergo v0.3.16 // indirect github.com/jackc/chunkreader/v2 v2.0.1 // indirect github.com/jackc/pgconn v1.9.1-0.20210724152538-d89c8390a530 // indirect github.com/jackc/pgerrcode v0.0.0-20201024163028-a0d42d470451 // indirect @@ -69,10 +74,9 @@ require ( go.unistack.org/micro-codec-yaml/v3 v3.10.0 // indirect go.unistack.org/micro-config-env/v3 v3.8.5 // indirect go.unistack.org/micro-config-file/v3 v3.8.3 // indirect + go.unistack.org/micro-config-flag/v3 v3.8.9 // indirect go.unistack.org/micro-config-service/v3 v3.8.1 // indirect go.unistack.org/micro-proto/v3 v3.3.1 // indirect - go.unistack.org/micro-server-http/v3 v3.11.6 // indirect - go.unistack.org/micro/v3 v3.10.18 // indirect golang.org/x/crypto v0.11.0 // indirect golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect golang.org/x/net v0.12.0 // indirect diff --git a/go.sum b/go.sum index b14fb6b..7e10774 100644 --- a/go.sum +++ b/go.sum @@ -579,8 +579,8 @@ github.com/imdario/mergo v0.3.10/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= -github.com/imdario/mergo v0.3.15 h1:M8XP7IuFNsqUx6VPK2P9OSmsYsI/YFaGil0uD21V3dM= -github.com/imdario/mergo v0.3.15/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= +github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= +github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56/go.mod h1:ymszkNOg6tORTn+6F6j+Jc8TOr5osrynvN6ivFWZ2GA= github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo= @@ -1020,8 +1020,8 @@ go.unistack.org/cms-service v0.0.1 h1:XKKZqjQD3ViPGRzjadnVX94wQlKcWxompZac9YTeTj go.unistack.org/cms-service v0.0.1/go.mod h1:3apbDEEgmoPfnPRpzgN40fCqbn/BdfXDk/Hvly8+bGk= go.unistack.org/micro-broker-service/v3 v3.8.2 h1:K30wBLsoLO0WbD9rhPi8S8asU9pfes/M2X9tX9HLr24= go.unistack.org/micro-broker-service/v3 v3.8.2/go.mod h1:qTlBl4vdJSl66SFIjdjOWFWKO0BFQ2ImbwiPCti/H8M= -go.unistack.org/micro-client-http/v4 v4.0.2 h1:0xsm2RCRWMfb1moeXQQ220uz52XE0R/PZvM9was/4lM= -go.unistack.org/micro-client-http/v4 v4.0.2/go.mod h1:Z9QT/upeqrp/rXVkL0lk6AzrkTdes0W3QlFlZ+ytkqM= +go.unistack.org/micro-client-http/v3 v3.9.3 h1:5AicVsSwzAbIa1mpi99g5JhhDakUkgMV6e4F/Xyu3jI= +go.unistack.org/micro-client-http/v3 v3.9.3/go.mod h1:3zB0iVaYhG/xi0r/YvyTE422dOOOx1PAaiWlD2GSBlM= go.unistack.org/micro-codec-yaml/v3 v3.10.0 h1:cnNiWQZ3F+jsCX9DhEHBdIw8CjBItxb+TrKGGdlQ8F8= go.unistack.org/micro-codec-yaml/v3 v3.10.0/go.mod h1:UzwC3QZZ6+PgKSudlGZNLkugXzOFkp3sxhs/CctEwBY= go.unistack.org/micro-config-env/v3 v3.8.5 h1:k0BKpQflJ9mutzK//VcYw4XAKlKHTvg2GtkHTrEjbko= @@ -1030,6 +1030,8 @@ go.unistack.org/micro-config-file/v3 v3.8.3 h1:yoAyDtmWutlUkVgFUtc7JhwCX7H/2Jz0n go.unistack.org/micro-config-file/v3 v3.8.3/go.mod h1:dl+MQ27/P41+hINmSrZFltDSDYP1y2LItIDYb2jHFog= go.unistack.org/micro-config-flag/v3 v3.8.9 h1:I4eoJVV28CpxQvQ63TJ1fqK5JcV1gHmOZPveT2Vl5Iw= go.unistack.org/micro-config-flag/v3 v3.8.9/go.mod h1:eWI90dcZh5AOhkd83fF0KY17ea/DZPebkJ8K61yky+8= +go.unistack.org/micro-config-flag/v4 v4.0.2 h1:qoDpT/H8a8TYZS9ucoNC0bLhNdp+UFlhnRWOuqIKAyo= +go.unistack.org/micro-config-flag/v4 v4.0.2/go.mod h1:s0AYvz8rRtMHG2tkXoSmF8xFuHG12x3v1NERdMHDdiQ= go.unistack.org/micro-config-service/v3 v3.8.1 h1:Q+RPWCb88VGz5+EQUx45Xeysf+Mon9Q2IvqCF3e8LZM= go.unistack.org/micro-config-service/v3 v3.8.1/go.mod h1:KdZJEuYwninyT04ysFkgEQa3OaMRa0kSQVPQHlumQoA= go.unistack.org/micro-proto/v3 v3.3.1 h1:nQ0MtWvP2G3QrpOgawVOPhpZZYkq6umTGDqs8FxJYIo= diff --git a/handler/encoders/json.go b/handler/encoders/json.go deleted file mode 100644 index 9fb3ed3..0000000 --- a/handler/encoders/json.go +++ /dev/null @@ -1,26 +0,0 @@ -package encoders - -import ( - "encoding/json" - "net/http" - - pb "go.unistack.org/unistack-org/pkgdash/proto" - - "github.com/pkg/errors" -) - -type JSON struct{} - -func (*JSON) Success(rw http.ResponseWriter, response interface{}) error { - rw.Header().Set("Content-Type", "application/json; charset=utf-8") - rw.WriteHeader(http.StatusOK) - - return errors.WithStack(json.NewEncoder(rw).Encode(response)) -} - -func (*JSON) Error(rw http.ResponseWriter, err *pb.Error, status int) error { - rw.Header().Set("Content-Type", "application/problem+json; charset=utf-8") - rw.WriteHeader(status) - - return errors.WithStack(json.NewEncoder(rw).Encode(&pb.ErrorRsp{Error: err})) -} diff --git a/handler/encoders/jsonpb.go b/handler/encoders/jsonpb.go deleted file mode 100644 index d0a023a..0000000 --- a/handler/encoders/jsonpb.go +++ /dev/null @@ -1,51 +0,0 @@ -package encoders - -import ( - "github.com/pkg/errors" - pb "go.unistack.org/unistack-org/pkgdash/proto" - "google.golang.org/protobuf/encoding/protojson" - "google.golang.org/protobuf/proto" - "io" - "net/http" -) - -var ErrWrongResponseType = errors.New("JSONProto: wrong response message type") - -type JSONProto struct { - m protojson.MarshalOptions -} - -func NewJSONProto() *JSONProto { - return &JSONProto{m: protojson.MarshalOptions{ - EmitUnpopulated: true, - UseProtoNames: false, - }} -} - -func (e *JSONProto) Success(rw http.ResponseWriter, response interface{}) error { - rw.Header().Set("Content-Type", "application/json; charset=utf-8") - rw.WriteHeader(http.StatusOK) - - if v, ok := response.(proto.Message); ok { - return errors.WithStack(e.Fmarshal(rw, v)) - } - - return ErrWrongResponseType -} - -func (e *JSONProto) Error(rw http.ResponseWriter, err *pb.Error, status int) error { - rw.Header().Set("Content-Type", "application/problem+json; charset=utf-8") - rw.WriteHeader(status) - - return errors.WithStack(e.Fmarshal(rw, &pb.ErrorRsp{Error: err})) -} - -func (e *JSONProto) Fmarshal(w io.Writer, m proto.Message) error { - b, err := e.m.Marshal(m) - if len(b) > 0 { - if _, err = w.Write(b); err != nil { - return err - } - } - return err -} diff --git a/handler/errors.go b/handler/errors.go index f9c6581..5a43729 100644 --- a/handler/errors.go +++ b/handler/errors.go @@ -1,6 +1,16 @@ package handler -import "github.com/pkg/errors" +import ( + "github.com/google/uuid" + "github.com/pkg/errors" + pb "go.unistack.org/unistack-org/pkgdash/proto" +) + +const ( + badRequest = `Bad Requet` + internalError = `Internal Error` + notFound = `Source Not Found` +) type UnmarshalError struct { err error @@ -18,16 +28,15 @@ func NewUnmarshalError(err error) error { return errors.WithStack(&UnmarshalError{err: err}) } -type InternalError struct { - Err error -} - -func (e *InternalError) Error() string { - return e.Err.Error() -} - -func NewInternalError(err error) error { - return errors.WithStack(&InternalError{Err: err}) +func NewInternalError(err error) *pb.ErrorRsp { + return &pb.ErrorRsp{ + Error: &pb.Error{ + Code: internalErrorCode, + Title: internalError, + Uuid: uuid.New().String(), + Details: err.Error(), + }, + } } type ParametersMissingError struct { @@ -42,26 +51,24 @@ func NewParametersMissingError(err error) error { return errors.WithStack(&ParametersMissingError{Err: err}) } -type NotFoundError struct { - Err error +func NewNotFoundError(err error) *pb.ErrorRsp { + return &pb.ErrorRsp{ + Error: &pb.Error{ + Code: notFoundErrorCode, + Title: notFound, + Uuid: uuid.New().String(), + Details: err.Error(), + }, + } } -func (e *NotFoundError) Error() string { - return e.Err.Error() -} - -func NewNotFoundError(err error) error { - return errors.WithStack(&NotFoundError{Err: err}) -} - -type ValidationError struct { - Err error -} - -func (e *ValidationError) Error() string { - return e.Err.Error() -} - -func NewValidationError(err error) error { - return errors.WithStack(&ValidationError{Err: err}) +func NewValidationError(err error) *pb.ErrorRsp { + return &pb.ErrorRsp{ + Error: &pb.Error{ + Code: badRequestCode, + Title: badRequest, + Uuid: uuid.New().String(), + Details: err.Error(), + }, + } } diff --git a/handler/handlers.go b/handler/handlers.go index 85f3496..9d68daf 100644 --- a/handler/handlers.go +++ b/handler/handlers.go @@ -2,20 +2,18 @@ package handler import ( "context" - "encoding/json" - "io" - "net/http" - "net/url" - + "database/sql" + "errors" cmsstorage "go.unistack.org/cms-service/storage" + httpsrv "go.unistack.org/micro-server-http/v4" "go.unistack.org/micro/v4" - "go.unistack.org/micro/v4/errors" "go.unistack.org/unistack-org/pkgdash/config" pb "go.unistack.org/unistack-org/pkgdash/proto" cligit "go.unistack.org/unistack-org/pkgdash/service/client_git" "go.unistack.org/unistack-org/pkgdash/storage" "google.golang.org/protobuf/encoding/protojson" - "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/types/known/emptypb" + "net/http" ) type Handler struct { @@ -30,119 +28,80 @@ type Handler struct { chanUrl chan *pb.AddPackageReq } -func (h *Handler) ListPackage(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() +func (h *Handler) ListPackage(ctx context.Context, _ *emptypb.Empty, rsp *pb.ListPackageRsp) error { logger := h.svc.Logger() logger.Debug(ctx, "Start getListPackage") dbRsp, err := h.store.ListPackage(ctx) if err != nil { logger.Errorf(ctx, "error db response: %v", err) - h.writer.Response(ctx, w, err) - return + httpsrv.SetRspCode(ctx, http.StatusInternalServerError) + return httpsrv.SetError(NewInternalError(err)) } - rsp := new(pb.ListPackageRsp) + //rsp = new(pb.ListPackageRsp) rsp.Packages = dbRsp.Decode() logger.Debug(ctx, "Success finish getListPackage") - h.writer.Response(ctx, w, rsp) + return nil } -func (h *Handler) UpdatePackage(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() +func (h *Handler) UpdatePackage(ctx context.Context, req *pb.UpdatePackageReq, rsp *pb.UpdatePackageRsp) error { logger := h.svc.Logger() logger.Debug(ctx, "Start UpdatePackage") - defer r.Body.Close() - all, err := io.ReadAll(r.Body) - if err != nil { + if err := req.Validate(); err != nil { logger.Error(ctx, err) - h.writer.Response(ctx, w, NewInternalError(err)) - return + httpsrv.SetRspCode(ctx, http.StatusBadRequest) + return httpsrv.SetError(NewValidationError(err)) } - req := new(pb.UpdatePackageReq) - if err = h.Unmarshal(all, req); err != nil { + if err := h.store.UpdatePackage(ctx, req); err != nil { logger.Error(ctx, err) - h.writer.Response(ctx, w, NewUnmarshalError(err)) - return + httpsrv.SetRspCode(ctx, http.StatusInternalServerError) + return httpsrv.SetError(NewInternalError(err)) } - if err = req.Validate(); err != nil { - logger.Error(ctx, err) - h.writer.Response(ctx, w, NewValidationError(err)) - return - } - - if err = h.store.UpdatePackage(ctx, req); err != nil { - logger.Error(ctx, err) - h.writer.Response(ctx, w, NewInternalError(err)) - return - } + rsp.Id = req.Id logger.Debug(ctx, "Success finish UpdatePackage") + return nil } -func (h *Handler) AddComment(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() +func (h *Handler) AddComment(ctx context.Context, req *pb.AddCommentReq, rsp *pb.AddCommentRsp) error { logger := h.svc.Logger() logger.Debug(ctx, "Start AddComment") - defer r.Body.Close() - all, err := io.ReadAll(r.Body) + err := req.Validate() if err != nil { logger.Error(ctx, err) - h.writer.Response(ctx, w, NewInternalError(err)) - return + httpsrv.SetRspCode(ctx, http.StatusBadRequest) + return httpsrv.SetError(NewValidationError(err)) } - req := new(pb.AddCommentReq) - if err = h.Unmarshal(all, req); err != nil { + if rsp.Id, err = h.store.AddComment(ctx, req); err != nil { logger.Error(ctx, err) - h.writer.Response(ctx, w, NewUnmarshalError(err)) - return - } - - if err = req.Validate(); err != nil { - logger.Error(ctx, err) - h.writer.Response(ctx, w, NewValidationError(err)) - return - } - - if err = h.store.AddComment(ctx, req); err != nil { - logger.Error(ctx, err) - h.writer.Response(ctx, w, NewInternalError(err)) - return + if errors.Is(err, sql.ErrNoRows) { + httpsrv.SetRspCode(ctx, http.StatusNotFound) + return httpsrv.SetError(NewNotFoundError(err)) + } + httpsrv.SetRspCode(ctx, http.StatusInternalServerError) + return httpsrv.SetError(NewInternalError(err)) } logger.Debug(ctx, "Success finish addComment") + return nil } -func (h *Handler) AddPackage(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() +func (h *Handler) AddPackage(ctx context.Context, req *pb.AddPackageReq, rsp *pb.AddPackageRsp) error { logger := h.svc.Logger() logger.Debug(ctx, "Start AddPackage") - defer r.Body.Close() - all, err := io.ReadAll(r.Body) + err := req.Validate() if err != nil { logger.Error(ctx, err) - h.writer.Response(ctx, w, NewInternalError(err)) - return - } - - req := new(pb.AddPackageReq) - if err = h.Unmarshal(all, req); err != nil { - logger.Error(ctx, err) - h.writer.Response(ctx, w, NewUnmarshalError(err)) - return - } - - if err = req.Validate(); err != nil { - logger.Error(ctx, err) - h.writer.Response(ctx, w, NewValidationError(err)) - return + httpsrv.SetRspCode(ctx, http.StatusBadRequest) + return httpsrv.SetError(NewValidationError(err)) } if h.git.IsClose() { @@ -151,69 +110,40 @@ func (h *Handler) AddPackage(w http.ResponseWriter, r *http.Request) { h.chanUrl <- req } + rsp.Status = "Sent" + logger.Debug(ctx, "Success finish addPackage") + return nil } -func (h *Handler) GetModule(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() +func (h *Handler) GetModule(ctx context.Context, req *pb.GetModuleReq, rsp *pb.GetModuleRsp) error { logger := h.svc.Logger() logger.Debug(ctx, "Start GetModule") - req := new(pb.GetModuleReq) - if err := URLValuesToProto(r.URL.Query(), req); err != nil { - logger.Errorf(ctx, "Required parameter missing: %v", err) - h.writer.Response(ctx, w, err) - return - } - modules, err := h.store.GetModule(ctx, req) if err != nil { logger.Error(ctx, err) - h.writer.Response(ctx, w, NewInternalError(err)) - return + httpsrv.SetRspCode(ctx, http.StatusInternalServerError) + return httpsrv.SetError(NewInternalError(err)) } - rsp := &pb.GetModuleRsp{Modules: modules.Decode()} - h.writer.Response(ctx, w, rsp) + rsp.Modules = modules.Decode() logger.Debug(ctx, "Success finish getModule") -} - -func URLValuesToProto(vals url.Values, msg proto.Message) error { - params := make(map[string]interface{}) - var err error - for k, v := range vals { - if len(v) == 0 { - continue - } - switch k { - case "id[]": - params[k] = v - default: - params[k] = v[0] - } - } - b, err := json.Marshal(params) - if err != nil { - return NewUnmarshalError(err) - } - if err = protojson.Unmarshal(b, msg); err != nil { - return NewUnmarshalError(err) - } return nil } -func NewHandler(svc micro.Service, w writer, client cligit.Client) *Handler { +func NewHandler(svc micro.Service, client cligit.Client) *Handler { h := &Handler{ - svc: svc, - writer: w, - git: client, + svc: svc, + git: client, } h.EmitUnpopulated = true h.UseProtoNames = false return h } +// TODO add conn db func (h *Handler) Init(ctx context.Context) error { store := cmsstorage.InterfaceFromContext(h.svc.Options().Context) if store == nil { diff --git a/proto/docker_generate/Dockerfile b/proto/docker_generate/Dockerfile deleted file mode 100644 index 24e0cd6..0000000 --- a/proto/docker_generate/Dockerfile +++ /dev/null @@ -1,43 +0,0 @@ -FROM golang:1.19-bullseye - -RUN mkdir /build -WORKDIR /build - -RUN apt-get update && apt-get -y install --no-install-recommends protobuf-compiler libprotobuf-dev - -ENV PATH=${PATH}:${GOBIN} - -ENV GEN_VALIDATE=github.com/envoyproxy/protoc-gen-validate@v1.0.2 -ENV GOOGLEAPIS=github.com/google/googleapis@v0.0.0-20200324113624-36c0febd0fa7 -ENV GRPC_GATEWAY=github.com/grpc-ecosystem/grpc-gateway@v1.16.0 - -RUN go install ${GEN_VALIDATE} - -RUN go install github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway@v1.16.0 && \ - go install github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger@v1.16.0 && \ - go install google.golang.org/protobuf/cmd/protoc-gen-go@latest - -RUN go install go.unistack.org/protoc-gen-go-micro/v3@latest - -RUN go mod init proto -RUN go get ${GOOGLEAPIS} && \ - go get ${GRPC_GATEWAY} && \ - go get google.golang.org/grpc@v1.57.0 && \ - go get -u github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway && \ - go get -u github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2 && \ - go get google.golang.org/protobuf/cmd/protoc-gen-go && \ - go get go.unistack.org/micro-proto/v3@v3.3.1 - -CMD rm -rf go_generate && \ - protoc \ - --validate_out=lang=go:. \ - --go-micro_out=debug=true,components="micro|http":. \ - --go_out=. \ - --grpc-gateway_out=. \ - --proto_path=/go/pkg/mod/go.unistack.org/micro-proto/v3@v3.3.1 \ - -I=./ \ - -I=/usr/include \ - -I=/go/pkg/mod/${GEN_VALIDATE} \ - -I=/go/pkg/mod/${GOOGLEAPIS} \ - -I=/go/pkg/mod/${GRPC_GATEWAY} \ - ./*.proto diff --git a/proto/docker_generate/Makefile b/proto/docker_generate/Makefile deleted file mode 100644 index cac80f5..0000000 --- a/proto/docker_generate/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -#New version of proto Makefile and Dockerfile can be found -#at https://qcm-git.mbrd.ru/service-platform/examples/makefile - -.PHONY: proto -proto: - docker build -t proto:latest . - docker run --rm --name=proto -v `pwd`:/build proto:latest \ No newline at end of file diff --git a/proto/docker_generate/dashboard.proto b/proto/docker_generate/dashboard.proto deleted file mode 100644 index e6a9588..0000000 --- a/proto/docker_generate/dashboard.proto +++ /dev/null @@ -1,71 +0,0 @@ -syntax = "proto3"; - -package proto; - -option go_package = "./go_generate;go_generate"; - -import "validate/validate.proto"; - - -message ErrorRsp { - Error error = 1 [json_name = "error"]; -} - -message Error { - string code = 1 [json_name = "code"]; - string title = 2 [json_name = "title"]; - string uuid = 3 [json_name = "uuid"]; - string details = 4 [json_name = "details"]; -} - -message Package { - uint64 id = 1 [(validate.rules).uint64.gt = 0]; - string name = 2 [(validate.rules).string.min_len = 1]; - string url = 3 [(validate.rules).string.min_len = 1]; - repeated Module modules = 4; - repeated Issue issues = 5; -}; - -message Module { - uint64 id = 1 [(validate.rules).uint64.gt = 0]; - string name = 2 [(validate.rules).string.min_len = 1]; - string version = 3 [(validate.rules).string.min_len = 1]; - uint64 package = 4 [(validate.rules).uint64.gt = 0]; -} - -message Issue { - uint64 id = 1 [(validate.rules).uint64.gt = 0]; - uint64 status = 2 [(validate.rules).uint64.gt = 0]; - string desc = 3 [(validate.rules).string.min_len = 1]; - uint64 package = 4 [(validate.rules).uint64.gt = 0]; - repeated uint64 modules = 5; -} - -message Comment { - uint64 id = 1 [(validate.rules).uint64.gt = 0]; - uint64 package = 2 [(validate.rules).uint64.gt = 0]; - string text = 3; - uint64 created = 4 [(validate.rules).uint64.gt = 0]; - uint64 updated = 5 [(validate.rules).uint64.gt = 0]; -} - -message ListPackageReq {} -message ListPackageRsp{ - repeated Package packages = 1; -} - -message UpdateInfoPackageRsp { - uint64 id = 1 [(validate.rules).uint64.gt = 0]; -} -message UpdateInfoPackageReq { - uint64 id = 1 [(validate.rules).uint64.gt = 0]; -} - -message CommentRsp { - uint64 idPackage = 1 [(validate.rules).uint64.gt = 0]; - string text = 2; -} - -message CommentReq { - uint64 id = 1 [(validate.rules).uint64.gt = 0]; -} \ No newline at end of file diff --git a/proto/docker_generate/restService.proto b/proto/docker_generate/restService.proto deleted file mode 100644 index d3205fa..0000000 --- a/proto/docker_generate/restService.proto +++ /dev/null @@ -1,42 +0,0 @@ -syntax = "proto3"; - -package proto; - -option go_package = "./go_generate;go_generate"; - -import "dashboard.proto"; -import "google/api/annotations.proto"; -import "protoc-gen-swagger/options/annotations.proto"; - -option (grpc.gateway.protoc_gen_swagger.options.openapiv2_swagger) = { - info: { - title: "service-platform/product-services/mts-money/gateway-proto", - version: "0"; - }; - consumes: "application/json"; - produces: "application/json"; -}; - -service DashboardService { - rpc ListPackage(ListPackageReq) returns (ListPackageRsp) { - option (grpc.gateway.protoc_gen_swagger.options.openapiv2_operation) = { - operation_id: "ListPackage"; - responses: { - key: "default"; - value: { - description: "Error response"; - schema: { - json_schema: { - ref: ".go_generate.ErrorRsp"; - } - } - } - } - }; - option (google.api.http) = { - get: "/listPackage"; - }; - }; - rpc UpdateInfo(UpdateInfoPackageRsp) returns (UpdateInfoPackageReq) {}; - rpc AddComment(CommentRsp) returns (CommentReq) {}; -}; \ No newline at end of file diff --git a/proto/generate.sh b/proto/generate.sh deleted file mode 100755 index d841b96..0000000 --- a/proto/generate.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh -ex - - PROTO_ARGS=" \ ---proto_path=$(go list -f '{{ .Dir }}' -m github.com/envoyproxy/protoc-gen-validate) \ ---proto_path=$(go list -f '{{ .Dir }}' -m go.unistack.org/micro-proto/v3) \ ---go_out=paths=source_relative:go_generate \ ---go-micro_out=module=go.unistack.org/unistack-org/pkgdash/proto/go_generate,components=micro|http,standalone=true:./micro \ ---validate_out=paths=source_relative,lang=go:go_generate -" - -find . -not \( -name "*.sh" -or -name "*.proto" -or -name "generate.go" -or -name "Dockerfile" -or -name "Makefile" \) -delete -mkdir -p micro go_generate && \ -protoc -I. $PROTO_ARGS ./*.proto || \ -find . -not \( -name "*.sh" -or -name "*.proto" -or -name "generate.go" -or -name "Dockerfile" -or -name "Makefile" \) -delete \ No newline at end of file diff --git a/proto/go_generate/dashboard.pb.go b/proto/go_generate/dashboard.pb.go deleted file mode 100644 index e69de29..0000000 diff --git a/proto/micro/dashboard_micro.pb.go b/proto/micro/dashboard_micro.pb.go deleted file mode 100644 index e69de29..0000000 diff --git a/proto/micro/dashboard_micro_http.pb.go b/proto/micro/dashboard_micro_http.pb.go deleted file mode 100644 index e69de29..0000000 diff --git a/proto/pkgdash.pb.go b/proto/pkgdash.pb.go index 49d7953..2531e73 100644 --- a/proto/pkgdash.pb.go +++ b/proto/pkgdash.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 +// protoc-gen-go v1.31.0 // protoc v4.23.4 // source: pkgdash.proto @@ -12,7 +12,7 @@ import ( _ "go.unistack.org/micro-proto/v4/openapiv3" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" - wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" + emptypb "google.golang.org/protobuf/types/known/emptypb" reflect "reflect" sync "sync" ) @@ -556,11 +556,11 @@ type UpdatePackageReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Url *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty"` - Modules []uint64 `protobuf:"varint,4,rep,packed,name=modules,proto3" json:"modules,omitempty"` - Issues []uint64 `protobuf:"varint,5,rep,packed,name=issues,proto3" json:"issues,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty"` + Modules []uint64 `protobuf:"varint,4,rep,packed,name=modules,proto3" json:"modules,omitempty"` + Issues []uint64 `protobuf:"varint,5,rep,packed,name=issues,proto3" json:"issues,omitempty"` } func (x *UpdatePackageReq) Reset() { @@ -595,25 +595,25 @@ func (*UpdatePackageReq) Descriptor() ([]byte, []int) { return file_pkgdash_proto_rawDescGZIP(), []int{8} } -func (x *UpdatePackageReq) GetId() *wrapperspb.UInt64Value { +func (x *UpdatePackageReq) GetId() uint64 { if x != nil { return x.Id } - return nil + return 0 } -func (x *UpdatePackageReq) GetName() *wrapperspb.StringValue { +func (x *UpdatePackageReq) GetName() string { if x != nil { return x.Name } - return nil + return "" } -func (x *UpdatePackageReq) GetUrl() *wrapperspb.StringValue { +func (x *UpdatePackageReq) GetUrl() string { if x != nil { return x.Url } - return nil + return "" } func (x *UpdatePackageReq) GetModules() []uint64 { @@ -737,8 +737,8 @@ type AddCommentReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - IdPackage *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=idPackage,proto3" json:"idPackage,omitempty"` - Text string `protobuf:"bytes,2,opt,name=text,proto3" json:"text,omitempty"` + IdPackage uint64 `protobuf:"varint,1,opt,name=idPackage,proto3" json:"idPackage,omitempty"` + Text string `protobuf:"bytes,2,opt,name=text,proto3" json:"text,omitempty"` } func (x *AddCommentReq) Reset() { @@ -773,11 +773,11 @@ func (*AddCommentReq) Descriptor() ([]byte, []int) { return file_pkgdash_proto_rawDescGZIP(), []int{11} } -func (x *AddCommentReq) GetIdPackage() *wrapperspb.UInt64Value { +func (x *AddCommentReq) GetIdPackage() uint64 { if x != nil { return x.IdPackage } - return nil + return 0 } func (x *AddCommentReq) GetText() string { @@ -839,9 +839,9 @@ type AddPackageReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Url *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` - Modules []uint64 `protobuf:"varint,3,rep,packed,name=modules,proto3" json:"modules,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` + Modules []uint64 `protobuf:"varint,3,rep,packed,name=modules,proto3" json:"modules,omitempty"` } func (x *AddPackageReq) Reset() { @@ -876,18 +876,18 @@ func (*AddPackageReq) Descriptor() ([]byte, []int) { return file_pkgdash_proto_rawDescGZIP(), []int{13} } -func (x *AddPackageReq) GetName() *wrapperspb.StringValue { +func (x *AddPackageReq) GetName() string { if x != nil { return x.Name } - return nil + return "" } -func (x *AddPackageReq) GetUrl() *wrapperspb.StringValue { +func (x *AddPackageReq) GetUrl() string { if x != nil { return x.Url } - return nil + return "" } func (x *AddPackageReq) GetModules() []uint64 { @@ -901,6 +901,8 @@ type AddPackageRsp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` } func (x *AddPackageRsp) Reset() { @@ -935,6 +937,13 @@ func (*AddPackageRsp) Descriptor() ([]byte, []int) { return file_pkgdash_proto_rawDescGZIP(), []int{14} } +func (x *AddPackageRsp) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + type GetModuleReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1038,77 +1047,71 @@ var file_pkgdash_proto_rawDesc = []byte{ 0x1b, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x33, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x30, 0x0a, 0x08, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x73, - 0x70, 0x12, 0x24, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0e, 0x2e, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, - 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x5f, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, - 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x63, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, - 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x18, - 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xa8, 0x01, 0x0a, 0x07, 0x50, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, - 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x03, 0x75, 0x72, - 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, - 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, - 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x04, 0x52, - 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x04, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0x22, 0xb0, 0x01, 0x0a, 0x06, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x17, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, - 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, - 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, - 0x00, 0x52, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x0c, 0x6c, 0x61, - 0x73, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x9b, 0x01, 0x0a, 0x05, 0x49, 0x73, 0x73, 0x75, 0x65, - 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, - 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, - 0x20, 0x00, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x04, 0x64, 0x65, - 0x73, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, - 0x01, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x21, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, - 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, - 0x00, 0x52, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, - 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x6f, 0x64, - 0x75, 0x6c, 0x65, 0x73, 0x22, 0x9f, 0x01, 0x0a, 0x07, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, - 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, - 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x07, 0x70, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, - 0x02, 0x20, 0x00, 0x52, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, - 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, - 0x12, 0x21, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x07, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x22, 0x10, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, - 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x22, 0x3e, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, - 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x12, 0x2c, 0x0a, 0x08, 0x70, 0x61, - 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, - 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x08, - 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x22, 0xf2, 0x01, 0x0a, 0x10, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x36, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, - 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, - 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x38, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x08, 0xfa, 0x42, - 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x6d, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0x30, 0x0a, 0x08, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x73, 0x70, 0x12, 0x24, + 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x22, 0x5f, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x12, 0x0a, + 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x64, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xa8, 0x01, 0x0a, 0x07, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, + 0x65, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, + 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, + 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x03, 0x75, + 0x72, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, + 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x69, 0x73, + 0x73, 0x75, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x18, 0x06, 0x20, 0x03, 0x28, 0x04, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x22, 0xb0, 0x01, 0x0a, 0x06, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x07, + 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, + 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x22, 0x9b, 0x01, 0x0a, 0x05, 0x49, 0x73, 0x73, 0x75, 0x65, 0x12, 0x17, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, + 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, + 0x64, 0x65, 0x73, 0x63, 0x12, 0x21, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x07, + 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, + 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, + 0x73, 0x22, 0x9f, 0x01, 0x0a, 0x07, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x17, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, + 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, + 0x52, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x21, 0x0a, + 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, + 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x12, 0x21, 0x0a, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x07, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x22, 0x10, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, + 0x67, 0x65, 0x52, 0x65, 0x71, 0x22, 0x3e, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, + 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x12, 0x2c, 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, + 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x6b, 0x67, 0x64, + 0x61, 0x73, 0x68, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x08, 0x70, 0x61, 0x63, + 0x6b, 0x61, 0x67, 0x65, 0x73, 0x22, 0x95, 0x01, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x19, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, + 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x22, 0x2b, 0x0a, @@ -1118,80 +1121,76 @@ var file_pkgdash_proto_rawDesc = []byte{ 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, 0x19, 0x0a, 0x03, 0x70, 0x6b, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x03, 0x70, 0x6b, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x22, 0x69, 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x43, 0x6f, - 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, 0x44, 0x0a, 0x09, 0x69, 0x64, 0x50, 0x61, - 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, - 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, - 0x02, 0x10, 0x01, 0x52, 0x09, 0x69, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, - 0x78, 0x74, 0x22, 0x28, 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, - 0x52, 0x73, 0x70, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, - 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x22, 0x9f, 0x01, 0x0a, - 0x0d, 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x3a, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, - 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x03, 0x75, 0x72, - 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, - 0x03, 0x75, 0x72, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x22, 0x0f, - 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x22, - 0x1e, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x22, - 0x39, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x73, 0x70, 0x12, - 0x29, 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x0f, 0x2e, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, - 0x65, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x32, 0xa9, 0x05, 0x0a, 0x0e, 0x50, - 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x80, 0x01, - 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x17, 0x2e, - 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, - 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x22, - 0x3f, 0xaa, 0x84, 0x9e, 0x03, 0x26, 0x2a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, - 0x61, 0x67, 0x65, 0x42, 0x17, 0x0a, 0x15, 0x12, 0x13, 0x0a, 0x11, 0x2e, 0x70, 0x6b, 0x67, 0x64, - 0x61, 0x73, 0x68, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x73, 0x70, 0xb2, 0xea, 0xff, 0xf9, - 0x01, 0x0e, 0x12, 0x0c, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, - 0x12, 0x8c, 0x01, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x61, - 0x67, 0x65, 0x12, 0x19, 0x2e, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, - 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, - 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x22, 0x45, 0xaa, 0x84, 0x9e, 0x03, 0x25, 0x2a, - 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x17, 0x0a, 0x15, 0x12, - 0x13, 0x0a, 0x11, 0x2e, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2e, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x52, 0x73, 0x70, 0xb2, 0xea, 0xff, 0xf9, 0x01, 0x15, 0x22, 0x10, 0x2f, 0x76, 0x31, 0x2f, - 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, - 0x8c, 0x01, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x16, - 0x2e, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2e, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6d, 0x6d, - 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, - 0x2e, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x73, 0x70, 0x22, 0x4e, - 0xaa, 0x84, 0x9e, 0x03, 0x25, 0x2a, 0x0a, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, - 0x74, 0x42, 0x17, 0x0a, 0x15, 0x12, 0x13, 0x0a, 0x11, 0x2e, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, - 0x68, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x73, 0x70, 0xb2, 0xea, 0xff, 0xf9, 0x01, 0x1e, - 0x22, 0x19, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x2f, 0x7b, 0x70, - 0x6b, 0x67, 0x7d, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x7e, - 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x16, 0x2e, 0x70, - 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, - 0x65, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2e, 0x41, - 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x22, 0x40, 0xaa, 0x84, - 0x9e, 0x03, 0x25, 0x2a, 0x0a, 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x42, - 0x17, 0x0a, 0x15, 0x12, 0x13, 0x0a, 0x11, 0x2e, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2e, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x73, 0x70, 0xb2, 0xea, 0xff, 0xf9, 0x01, 0x10, 0x22, 0x0b, - 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x76, - 0x0a, 0x09, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x15, 0x2e, 0x70, 0x6b, - 0x67, 0x64, 0x61, 0x73, 0x68, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, - 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2e, 0x47, 0x65, 0x74, - 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x73, 0x70, 0x22, 0x3b, 0xaa, 0x84, 0x9e, 0x03, 0x24, - 0x2a, 0x09, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x17, 0x0a, 0x15, 0x12, - 0x13, 0x0a, 0x11, 0x2e, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2e, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x52, 0x73, 0x70, 0xb2, 0xea, 0xff, 0xf9, 0x01, 0x0c, 0x12, 0x0a, 0x2f, 0x76, 0x31, 0x2f, - 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x36, 0x5a, 0x34, 0x67, 0x6f, 0x2e, 0x75, 0x6e, 0x69, - 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x75, 0x6e, 0x69, 0x73, 0x74, 0x61, - 0x63, 0x6b, 0x2d, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x3b, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x70, 0x62, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x22, 0x4a, 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x43, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, 0x25, 0x0a, 0x09, 0x69, 0x64, 0x50, 0x61, + 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, + 0x32, 0x02, 0x20, 0x00, 0x52, 0x09, 0x69, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, + 0x65, 0x78, 0x74, 0x22, 0x28, 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x52, 0x73, 0x70, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x22, 0x61, 0x0a, + 0x0d, 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1b, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, + 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x03, 0x75, + 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, + 0x01, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, + 0x22, 0x30, 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, + 0x70, 0x12, 0x1f, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x22, 0x1e, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, + 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x02, + 0x69, 0x64, 0x22, 0x39, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, + 0x73, 0x70, 0x12, 0x29, 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2e, 0x4d, 0x6f, + 0x64, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x32, 0xa7, 0x05, + 0x0a, 0x0e, 0x50, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x12, 0x7f, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x17, 0x2e, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, + 0x68, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, + 0x22, 0x3f, 0xaa, 0x84, 0x9e, 0x03, 0x26, 0x2a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, + 0x6b, 0x61, 0x67, 0x65, 0x42, 0x17, 0x0a, 0x15, 0x12, 0x13, 0x0a, 0x11, 0x2e, 0x70, 0x6b, 0x67, + 0x64, 0x61, 0x73, 0x68, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x73, 0x70, 0xb2, 0xea, 0xff, + 0xf9, 0x01, 0x0e, 0x12, 0x0c, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x73, 0x12, 0x8c, 0x01, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, + 0x61, 0x67, 0x65, 0x12, 0x19, 0x2e, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x19, + 0x2e, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, + 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x22, 0x45, 0xaa, 0x84, 0x9e, 0x03, 0x25, + 0x2a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x17, 0x0a, 0x15, + 0x12, 0x13, 0x0a, 0x11, 0x2e, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2e, 0x45, 0x72, 0x72, + 0x6f, 0x72, 0x52, 0x73, 0x70, 0xb2, 0xea, 0xff, 0xf9, 0x01, 0x15, 0x3a, 0x01, 0x2a, 0x22, 0x10, + 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x2f, 0x7b, 0x69, 0x64, 0x7d, + 0x12, 0x8c, 0x01, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0x16, 0x2e, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2e, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, + 0x68, 0x2e, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x73, 0x70, 0x22, + 0x4e, 0xaa, 0x84, 0x9e, 0x03, 0x25, 0x2a, 0x0a, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, + 0x6e, 0x74, 0x42, 0x17, 0x0a, 0x15, 0x12, 0x13, 0x0a, 0x11, 0x2e, 0x70, 0x6b, 0x67, 0x64, 0x61, + 0x73, 0x68, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x73, 0x70, 0xb2, 0xea, 0xff, 0xf9, 0x01, + 0x1e, 0x3a, 0x01, 0x2a, 0x22, 0x19, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, + 0x65, 0x2f, 0x7b, 0x70, 0x6b, 0x67, 0x7d, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0x7e, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x16, 0x2e, + 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, + 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2e, + 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x73, 0x70, 0x22, 0x40, 0xaa, + 0x84, 0x9e, 0x03, 0x25, 0x2a, 0x0a, 0x41, 0x64, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x42, 0x17, 0x0a, 0x15, 0x12, 0x13, 0x0a, 0x11, 0x2e, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, + 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x73, 0x70, 0xb2, 0xea, 0xff, 0xf9, 0x01, 0x10, 0x3a, + 0x01, 0x2a, 0x22, 0x0b, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, + 0x76, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x15, 0x2e, 0x70, + 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, + 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2e, 0x47, 0x65, + 0x74, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x73, 0x70, 0x22, 0x3b, 0xaa, 0x84, 0x9e, 0x03, + 0x24, 0x2a, 0x09, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x17, 0x0a, 0x15, + 0x12, 0x13, 0x0a, 0x11, 0x2e, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2e, 0x45, 0x72, 0x72, + 0x6f, 0x72, 0x52, 0x73, 0x70, 0xb2, 0xea, 0xff, 0xf9, 0x01, 0x0c, 0x12, 0x0a, 0x2f, 0x76, 0x31, + 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x36, 0x5a, 0x34, 0x67, 0x6f, 0x2e, 0x75, 0x6e, + 0x69, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x75, 0x6e, 0x69, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x2d, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x3b, 0x70, 0x6b, 0x67, 0x64, 0x61, 0x73, 0x68, 0x70, 0x62, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1208,51 +1207,44 @@ func file_pkgdash_proto_rawDescGZIP() []byte { var file_pkgdash_proto_msgTypes = make([]protoimpl.MessageInfo, 17) var file_pkgdash_proto_goTypes = []interface{}{ - (*ErrorRsp)(nil), // 0: pkgdash.ErrorRsp - (*Error)(nil), // 1: pkgdash.Error - (*Package)(nil), // 2: pkgdash.Package - (*Module)(nil), // 3: pkgdash.Module - (*Issue)(nil), // 4: pkgdash.Issue - (*Comment)(nil), // 5: pkgdash.Comment - (*ListPackageReq)(nil), // 6: pkgdash.ListPackageReq - (*ListPackageRsp)(nil), // 7: pkgdash.ListPackageRsp - (*UpdatePackageReq)(nil), // 8: pkgdash.UpdatePackageReq - (*UpdatePackageRsp)(nil), // 9: pkgdash.UpdatePackageRsp - (*CommentReq)(nil), // 10: pkgdash.CommentReq - (*AddCommentReq)(nil), // 11: pkgdash.AddCommentReq - (*AddCommentRsp)(nil), // 12: pkgdash.AddCommentRsp - (*AddPackageReq)(nil), // 13: pkgdash.AddPackageReq - (*AddPackageRsp)(nil), // 14: pkgdash.AddPackageRsp - (*GetModuleReq)(nil), // 15: pkgdash.GetModuleReq - (*GetModuleRsp)(nil), // 16: pkgdash.GetModuleRsp - (*wrapperspb.UInt64Value)(nil), // 17: google.protobuf.UInt64Value - (*wrapperspb.StringValue)(nil), // 18: google.protobuf.StringValue + (*ErrorRsp)(nil), // 0: pkgdash.ErrorRsp + (*Error)(nil), // 1: pkgdash.Error + (*Package)(nil), // 2: pkgdash.Package + (*Module)(nil), // 3: pkgdash.Module + (*Issue)(nil), // 4: pkgdash.Issue + (*Comment)(nil), // 5: pkgdash.Comment + (*ListPackageReq)(nil), // 6: pkgdash.ListPackageReq + (*ListPackageRsp)(nil), // 7: pkgdash.ListPackageRsp + (*UpdatePackageReq)(nil), // 8: pkgdash.UpdatePackageReq + (*UpdatePackageRsp)(nil), // 9: pkgdash.UpdatePackageRsp + (*CommentReq)(nil), // 10: pkgdash.CommentReq + (*AddCommentReq)(nil), // 11: pkgdash.AddCommentReq + (*AddCommentRsp)(nil), // 12: pkgdash.AddCommentRsp + (*AddPackageReq)(nil), // 13: pkgdash.AddPackageReq + (*AddPackageRsp)(nil), // 14: pkgdash.AddPackageRsp + (*GetModuleReq)(nil), // 15: pkgdash.GetModuleReq + (*GetModuleRsp)(nil), // 16: pkgdash.GetModuleRsp + (*emptypb.Empty)(nil), // 17: google.protobuf.Empty } var file_pkgdash_proto_depIdxs = []int32{ 1, // 0: pkgdash.ErrorRsp.error:type_name -> pkgdash.Error 2, // 1: pkgdash.ListPackageRsp.packages:type_name -> pkgdash.Package - 17, // 2: pkgdash.UpdatePackageReq.id:type_name -> google.protobuf.UInt64Value - 18, // 3: pkgdash.UpdatePackageReq.name:type_name -> google.protobuf.StringValue - 18, // 4: pkgdash.UpdatePackageReq.url:type_name -> google.protobuf.StringValue - 17, // 5: pkgdash.AddCommentReq.idPackage:type_name -> google.protobuf.UInt64Value - 18, // 6: pkgdash.AddPackageReq.name:type_name -> google.protobuf.StringValue - 18, // 7: pkgdash.AddPackageReq.url:type_name -> google.protobuf.StringValue - 3, // 8: pkgdash.GetModuleRsp.modules:type_name -> pkgdash.Module - 6, // 9: pkgdash.PkgdashService.ListPackage:input_type -> pkgdash.ListPackageReq - 8, // 10: pkgdash.PkgdashService.UpdatePackage:input_type -> pkgdash.UpdatePackageReq - 11, // 11: pkgdash.PkgdashService.AddComment:input_type -> pkgdash.AddCommentReq - 13, // 12: pkgdash.PkgdashService.AddPackage:input_type -> pkgdash.AddPackageReq - 15, // 13: pkgdash.PkgdashService.GetModule:input_type -> pkgdash.GetModuleReq - 7, // 14: pkgdash.PkgdashService.ListPackage:output_type -> pkgdash.ListPackageRsp - 9, // 15: pkgdash.PkgdashService.UpdatePackage:output_type -> pkgdash.UpdatePackageRsp - 12, // 16: pkgdash.PkgdashService.AddComment:output_type -> pkgdash.AddCommentRsp - 14, // 17: pkgdash.PkgdashService.AddPackage:output_type -> pkgdash.AddPackageRsp - 16, // 18: pkgdash.PkgdashService.GetModule:output_type -> pkgdash.GetModuleRsp - 14, // [14:19] is the sub-list for method output_type - 9, // [9:14] is the sub-list for method input_type - 9, // [9:9] is the sub-list for extension type_name - 9, // [9:9] is the sub-list for extension extendee - 0, // [0:9] is the sub-list for field type_name + 3, // 2: pkgdash.GetModuleRsp.modules:type_name -> pkgdash.Module + 17, // 3: pkgdash.PkgdashService.ListPackage:input_type -> google.protobuf.Empty + 8, // 4: pkgdash.PkgdashService.UpdatePackage:input_type -> pkgdash.UpdatePackageReq + 11, // 5: pkgdash.PkgdashService.AddComment:input_type -> pkgdash.AddCommentReq + 13, // 6: pkgdash.PkgdashService.AddPackage:input_type -> pkgdash.AddPackageReq + 15, // 7: pkgdash.PkgdashService.GetModule:input_type -> pkgdash.GetModuleReq + 7, // 8: pkgdash.PkgdashService.ListPackage:output_type -> pkgdash.ListPackageRsp + 9, // 9: pkgdash.PkgdashService.UpdatePackage:output_type -> pkgdash.UpdatePackageRsp + 12, // 10: pkgdash.PkgdashService.AddComment:output_type -> pkgdash.AddCommentRsp + 14, // 11: pkgdash.PkgdashService.AddPackage:output_type -> pkgdash.AddPackageRsp + 16, // 12: pkgdash.PkgdashService.GetModule:output_type -> pkgdash.GetModuleRsp + 8, // [8:13] is the sub-list for method output_type + 3, // [3:8] is the sub-list for method input_type + 3, // [3:3] is the sub-list for extension type_name + 3, // [3:3] is the sub-list for extension extendee + 0, // [0:3] is the sub-list for field type_name } func init() { file_pkgdash_proto_init() } diff --git a/proto/pkgdash.pb.validate.go b/proto/pkgdash.pb.validate.go index 240bf79..6165d02 100644 --- a/proto/pkgdash.pb.validate.go +++ b/proto/pkgdash.pb.validate.go @@ -89,6 +89,7 @@ func (m *ErrorRsp) validate(all bool) error { if len(errors) > 0 { return ErrorRspMultiError(errors) } + return nil } @@ -194,6 +195,7 @@ func (m *Error) validate(all bool) error { if len(errors) > 0 { return ErrorMultiError(errors) } + return nil } @@ -324,6 +326,7 @@ func (m *Package) validate(all bool) error { if len(errors) > 0 { return PackageMultiError(errors) } + return nil } @@ -476,6 +479,7 @@ func (m *Module) validate(all bool) error { if len(errors) > 0 { return ModuleMultiError(errors) } + return nil } @@ -617,6 +621,7 @@ func (m *Issue) validate(all bool) error { if len(errors) > 0 { return IssueMultiError(errors) } + return nil } @@ -760,6 +765,7 @@ func (m *Comment) validate(all bool) error { if len(errors) > 0 { return CommentMultiError(errors) } + return nil } @@ -858,6 +864,7 @@ func (m *ListPackageReq) validate(all bool) error { if len(errors) > 0 { return ListPackageReqMultiError(errors) } + return nil } @@ -991,6 +998,7 @@ func (m *ListPackageRsp) validate(all bool) error { if len(errors) > 0 { return ListPackageRspMultiError(errors) } + return nil } @@ -1087,10 +1095,10 @@ func (m *UpdatePackageReq) validate(all bool) error { var errors []error - if m.GetId() == nil { + if m.GetId() <= 0 { err := UpdatePackageReqValidationError{ field: "Id", - reason: "value is required", + reason: "value must be greater than 0", } if !all { return err @@ -1098,39 +1106,10 @@ func (m *UpdatePackageReq) validate(all bool) error { errors = append(errors, err) } - if all { - switch v := interface{}(m.GetId()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdatePackageReqValidationError{ - field: "Id", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdatePackageReqValidationError{ - field: "Id", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetId()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return UpdatePackageReqValidationError{ - field: "Id", - reason: "embedded message failed validation", - cause: err, - } - } - } - - if m.GetName() == nil { + if utf8.RuneCountInString(m.GetName()) < 1 { err := UpdatePackageReqValidationError{ field: "Name", - reason: "value is required", + reason: "value length must be at least 1 runes", } if !all { return err @@ -1138,39 +1117,10 @@ func (m *UpdatePackageReq) validate(all bool) error { errors = append(errors, err) } - if all { - switch v := interface{}(m.GetName()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdatePackageReqValidationError{ - field: "Name", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdatePackageReqValidationError{ - field: "Name", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetName()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return UpdatePackageReqValidationError{ - field: "Name", - reason: "embedded message failed validation", - cause: err, - } - } - } - - if m.GetUrl() == nil { + if utf8.RuneCountInString(m.GetUrl()) < 1 { err := UpdatePackageReqValidationError{ field: "Url", - reason: "value is required", + reason: "value length must be at least 1 runes", } if !all { return err @@ -1178,38 +1128,10 @@ func (m *UpdatePackageReq) validate(all bool) error { errors = append(errors, err) } - if all { - switch v := interface{}(m.GetUrl()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdatePackageReqValidationError{ - field: "Url", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdatePackageReqValidationError{ - field: "Url", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetUrl()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return UpdatePackageReqValidationError{ - field: "Url", - reason: "embedded message failed validation", - cause: err, - } - } - } - if len(errors) > 0 { return UpdatePackageReqMultiError(errors) } + return nil } @@ -1320,6 +1242,7 @@ func (m *UpdatePackageRsp) validate(all bool) error { if len(errors) > 0 { return UpdatePackageRspMultiError(errors) } + return nil } @@ -1432,6 +1355,7 @@ func (m *CommentReq) validate(all bool) error { if len(errors) > 0 { return CommentReqMultiError(errors) } + return nil } @@ -1527,10 +1451,10 @@ func (m *AddCommentReq) validate(all bool) error { var errors []error - if m.GetIdPackage() == nil { + if m.GetIdPackage() <= 0 { err := AddCommentReqValidationError{ field: "IdPackage", - reason: "value is required", + reason: "value must be greater than 0", } if !all { return err @@ -1538,40 +1462,12 @@ func (m *AddCommentReq) validate(all bool) error { errors = append(errors, err) } - if all { - switch v := interface{}(m.GetIdPackage()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, AddCommentReqValidationError{ - field: "IdPackage", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, AddCommentReqValidationError{ - field: "IdPackage", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetIdPackage()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return AddCommentReqValidationError{ - field: "IdPackage", - reason: "embedded message failed validation", - cause: err, - } - } - } - // no validation rules for Text if len(errors) > 0 { return AddCommentReqMultiError(errors) } + return nil } @@ -1682,6 +1578,7 @@ func (m *AddCommentRsp) validate(all bool) error { if len(errors) > 0 { return AddCommentRspMultiError(errors) } + return nil } @@ -1778,10 +1675,10 @@ func (m *AddPackageReq) validate(all bool) error { var errors []error - if m.GetName() == nil { + if utf8.RuneCountInString(m.GetName()) < 1 { err := AddPackageReqValidationError{ field: "Name", - reason: "value is required", + reason: "value length must be at least 1 runes", } if !all { return err @@ -1789,39 +1686,10 @@ func (m *AddPackageReq) validate(all bool) error { errors = append(errors, err) } - if all { - switch v := interface{}(m.GetName()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, AddPackageReqValidationError{ - field: "Name", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, AddPackageReqValidationError{ - field: "Name", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetName()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return AddPackageReqValidationError{ - field: "Name", - reason: "embedded message failed validation", - cause: err, - } - } - } - - if m.GetUrl() == nil { + if utf8.RuneCountInString(m.GetUrl()) < 1 { err := AddPackageReqValidationError{ field: "Url", - reason: "value is required", + reason: "value length must be at least 1 runes", } if !all { return err @@ -1829,38 +1697,10 @@ func (m *AddPackageReq) validate(all bool) error { errors = append(errors, err) } - if all { - switch v := interface{}(m.GetUrl()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, AddPackageReqValidationError{ - field: "Url", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, AddPackageReqValidationError{ - field: "Url", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetUrl()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return AddPackageReqValidationError{ - field: "Url", - reason: "embedded message failed validation", - cause: err, - } - } - } - if len(errors) > 0 { return AddPackageReqMultiError(errors) } + return nil } @@ -1957,9 +1797,21 @@ func (m *AddPackageRsp) validate(all bool) error { var errors []error + if utf8.RuneCountInString(m.GetStatus()) < 1 { + err := AddPackageRspValidationError{ + field: "Status", + reason: "value length must be at least 1 runes", + } + if !all { + return err + } + errors = append(errors, err) + } + if len(errors) > 0 { return AddPackageRspMultiError(errors) } + return nil } @@ -2059,6 +1911,7 @@ func (m *GetModuleReq) validate(all bool) error { if len(errors) > 0 { return GetModuleReqMultiError(errors) } + return nil } @@ -2191,6 +2044,7 @@ func (m *GetModuleRsp) validate(all bool) error { if len(errors) > 0 { return GetModuleRspMultiError(errors) } + return nil } diff --git a/proto/pkgdash.proto b/proto/pkgdash.proto index 5336554..6210d82 100644 --- a/proto/pkgdash.proto +++ b/proto/pkgdash.proto @@ -7,10 +7,10 @@ option go_package = "go.unistack.org/unistack-org/pkgdash/proto;pkgdashpb"; import "api/annotations.proto"; import "openapiv3/annotations.proto"; import "validate/validate.proto"; -import "google/protobuf/wrappers.proto"; +import "google/protobuf/empty.proto"; service PkgdashService { - rpc ListPackage(ListPackageReq) returns (ListPackageRsp) { + rpc ListPackage(google.protobuf.Empty) returns (ListPackageRsp) { option (micro.openapiv3.openapiv3_operation) = { operation_id: "ListPackage"; responses: { @@ -130,9 +130,9 @@ message ListPackageRsp{ } message UpdatePackageReq { - google.protobuf.UInt64Value id = 1 [(validate.rules).message.required = true]; - google.protobuf.StringValue name = 2 [(validate.rules).message.required = true]; - google.protobuf.StringValue url = 3 [(validate.rules).message.required = true]; + uint64 id = 1 [(validate.rules).uint64.gt = 0]; + string name = 2 [(validate.rules).string.min_len = 1]; + string url = 3 [(validate.rules).string.min_len = 1]; repeated uint64 modules = 4 ; repeated uint64 issues = 5 ; } @@ -146,7 +146,7 @@ message CommentReq { } message AddCommentReq { - google.protobuf.UInt64Value idPackage = 1 [(validate.rules).message.required = true]; + uint64 idPackage = 1 [(validate.rules).uint64.gt = 0]; string text = 2; } @@ -155,12 +155,14 @@ message AddCommentRsp { } message AddPackageReq { - google.protobuf.StringValue name = 1 [(validate.rules).message.required = true]; - google.protobuf.StringValue url = 2 [(validate.rules).message.required = true]; + string name = 1 [(validate.rules).string.min_len = 1]; + string url = 2 [(validate.rules).string.min_len = 1]; repeated uint64 modules = 3; } -message AddPackageRsp{} +message AddPackageRsp{ + string status = 1 [(validate.rules).string.min_len = 1]; +} message GetModuleReq { repeated uint64 id = 1 ; diff --git a/proto/pkgdash_micro.pb.go b/proto/pkgdash_micro.pb.go index 9b0632e..2eed3f4 100644 --- a/proto/pkgdash_micro.pb.go +++ b/proto/pkgdash_micro.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-micro. DO NOT EDIT. // versions: -// - protoc-gen-go-micro v4.0.2 +// - protoc-gen-go-micro v3.10.3 // - protoc v4.23.4 // source: pkgdash.proto @@ -8,24 +8,64 @@ package pkgdashpb import ( context "context" - _ "go.unistack.org/micro/v4/client" - options "go.unistack.org/micro/v4/options" + v3 "go.unistack.org/micro-server-http/v3" + client "go.unistack.org/micro/v3/client" + emptypb "google.golang.org/protobuf/types/known/emptypb" ) var ( PkgdashServiceName = "PkgdashService" ) +var ( + PkgdashServiceServerEndpoints = []v3.EndpointMetadata{ + { + Name: "PkgdashService.ListPackage", + Path: "/v1/packages", + Method: "GET", + Body: "", + Stream: false, + }, + { + Name: "PkgdashService.UpdatePackage", + Path: "/v1/package/{id}", + Method: "POST", + Body: "*", + Stream: false, + }, + { + Name: "PkgdashService.AddComment", + Path: "/v1/package/{pkg}/comment", + Method: "POST", + Body: "*", + Stream: false, + }, + { + Name: "PkgdashService.AddPackage", + Path: "/v1/package", + Method: "POST", + Body: "*", + Stream: false, + }, + { + Name: "PkgdashService.GetModule", + Path: "/v1/module", + Method: "GET", + Body: "", + Stream: false, + }, + } +) type PkgdashServiceClient interface { - ListPackage(ctx context.Context, req *ListPackageReq, opts ...options.Option) (*ListPackageRsp, error) - UpdatePackage(ctx context.Context, req *UpdatePackageReq, opts ...options.Option) (*UpdatePackageRsp, error) - AddComment(ctx context.Context, req *AddCommentReq, opts ...options.Option) (*AddCommentRsp, error) - AddPackage(ctx context.Context, req *AddPackageReq, opts ...options.Option) (*AddPackageRsp, error) - GetModule(ctx context.Context, req *GetModuleReq, opts ...options.Option) (*GetModuleRsp, error) + ListPackage(ctx context.Context, req *emptypb.Empty, opts ...client.CallOption) (*ListPackageRsp, error) + UpdatePackage(ctx context.Context, req *UpdatePackageReq, opts ...client.CallOption) (*UpdatePackageRsp, error) + AddComment(ctx context.Context, req *AddCommentReq, opts ...client.CallOption) (*AddCommentRsp, error) + AddPackage(ctx context.Context, req *AddPackageReq, opts ...client.CallOption) (*AddPackageRsp, error) + GetModule(ctx context.Context, req *GetModuleReq, opts ...client.CallOption) (*GetModuleRsp, error) } type PkgdashServiceServer interface { - ListPackage(ctx context.Context, req *ListPackageReq, rsp *ListPackageRsp) error + ListPackage(ctx context.Context, req *emptypb.Empty, rsp *ListPackageRsp) error UpdatePackage(ctx context.Context, req *UpdatePackageReq, rsp *UpdatePackageRsp) error AddComment(ctx context.Context, req *AddCommentReq, rsp *AddCommentRsp) error AddPackage(ctx context.Context, req *AddPackageReq, rsp *AddPackageRsp) error diff --git a/proto/pkgdash_micro_http.pb.go b/proto/pkgdash_micro_http.pb.go index b1837ca..43b79b7 100644 --- a/proto/pkgdash_micro_http.pb.go +++ b/proto/pkgdash_micro_http.pb.go @@ -1,59 +1,19 @@ // Code generated by protoc-gen-go-micro. DO NOT EDIT. -// protoc-gen-go-micro version: v4.0.2 +// protoc-gen-go-micro version: v3.10.3 // source: pkgdash.proto package pkgdashpb import ( context "context" - v41 "go.unistack.org/micro-client-http/v4" - v4 "go.unistack.org/micro-server-http/v4" - client "go.unistack.org/micro/v4/client" - options "go.unistack.org/micro/v4/options" - server "go.unistack.org/micro/v4/server" + v3 "go.unistack.org/micro-client-http/v3" + v31 "go.unistack.org/micro-server-http/v3" + client "go.unistack.org/micro/v3/client" + server "go.unistack.org/micro/v3/server" + emptypb "google.golang.org/protobuf/types/known/emptypb" http "net/http" ) -var ( - PkgdashServiceServerEndpoints = []v4.EndpointMetadata{ - { - Name: "PkgdashService.ListPackage", - Path: "/v1/packages", - Method: "GET", - Body: "", - Stream: false, - }, - { - Name: "PkgdashService.UpdatePackage", - Path: "/v1/package/{id}", - Method: "POST", - Body: "*", - Stream: false, - }, - { - Name: "PkgdashService.AddComment", - Path: "/v1/package/{pkg}/comment", - Method: "POST", - Body: "*", - Stream: false, - }, - { - Name: "PkgdashService.AddPackage", - Path: "/v1/package", - Method: "POST", - Body: "*", - Stream: false, - }, - { - Name: "PkgdashService.GetModule", - Path: "/v1/module", - Method: "GET", - Body: "", - Stream: false, - }, - } -) - type pkgdashServiceClient struct { c client.Client name string @@ -63,15 +23,15 @@ func NewPkgdashServiceClient(name string, c client.Client) PkgdashServiceClient return &pkgdashServiceClient{c: c, name: name} } -func (c *pkgdashServiceClient) ListPackage(ctx context.Context, req *ListPackageReq, opts ...options.Option) (*ListPackageRsp, error) { +func (c *pkgdashServiceClient) ListPackage(ctx context.Context, req *emptypb.Empty, opts ...client.CallOption) (*ListPackageRsp, error) { errmap := make(map[string]interface{}, 1) errmap["default"] = &ErrorRsp{} opts = append(opts, - v41.ErrorMap(errmap), + v3.ErrorMap(errmap), ) opts = append(opts, - v41.Method(http.MethodGet), - v41.Path("/v1/packages"), + v3.Method(http.MethodGet), + v3.Path("/v1/packages"), ) rsp := &ListPackageRsp{} err := c.c.Call(ctx, c.c.NewRequest(c.name, "PkgdashService.ListPackage", req), rsp, opts...) @@ -81,16 +41,16 @@ func (c *pkgdashServiceClient) ListPackage(ctx context.Context, req *ListPackage return rsp, nil } -func (c *pkgdashServiceClient) UpdatePackage(ctx context.Context, req *UpdatePackageReq, opts ...options.Option) (*UpdatePackageRsp, error) { +func (c *pkgdashServiceClient) UpdatePackage(ctx context.Context, req *UpdatePackageReq, opts ...client.CallOption) (*UpdatePackageRsp, error) { errmap := make(map[string]interface{}, 1) errmap["default"] = &ErrorRsp{} opts = append(opts, - v41.ErrorMap(errmap), + v3.ErrorMap(errmap), ) opts = append(opts, - v41.Method(http.MethodPost), - v41.Path("/v1/package/{id}"), - v41.Body("*"), + v3.Method(http.MethodPost), + v3.Path("/v1/package/{id}"), + v3.Body("*"), ) rsp := &UpdatePackageRsp{} err := c.c.Call(ctx, c.c.NewRequest(c.name, "PkgdashService.UpdatePackage", req), rsp, opts...) @@ -100,16 +60,16 @@ func (c *pkgdashServiceClient) UpdatePackage(ctx context.Context, req *UpdatePac return rsp, nil } -func (c *pkgdashServiceClient) AddComment(ctx context.Context, req *AddCommentReq, opts ...options.Option) (*AddCommentRsp, error) { +func (c *pkgdashServiceClient) AddComment(ctx context.Context, req *AddCommentReq, opts ...client.CallOption) (*AddCommentRsp, error) { errmap := make(map[string]interface{}, 1) errmap["default"] = &ErrorRsp{} opts = append(opts, - v41.ErrorMap(errmap), + v3.ErrorMap(errmap), ) opts = append(opts, - v41.Method(http.MethodPost), - v41.Path("/v1/package/{pkg}/comment"), - v41.Body("*"), + v3.Method(http.MethodPost), + v3.Path("/v1/package/{pkg}/comment"), + v3.Body("*"), ) rsp := &AddCommentRsp{} err := c.c.Call(ctx, c.c.NewRequest(c.name, "PkgdashService.AddComment", req), rsp, opts...) @@ -119,16 +79,16 @@ func (c *pkgdashServiceClient) AddComment(ctx context.Context, req *AddCommentRe return rsp, nil } -func (c *pkgdashServiceClient) AddPackage(ctx context.Context, req *AddPackageReq, opts ...options.Option) (*AddPackageRsp, error) { +func (c *pkgdashServiceClient) AddPackage(ctx context.Context, req *AddPackageReq, opts ...client.CallOption) (*AddPackageRsp, error) { errmap := make(map[string]interface{}, 1) errmap["default"] = &ErrorRsp{} opts = append(opts, - v41.ErrorMap(errmap), + v3.ErrorMap(errmap), ) opts = append(opts, - v41.Method(http.MethodPost), - v41.Path("/v1/package"), - v41.Body("*"), + v3.Method(http.MethodPost), + v3.Path("/v1/package"), + v3.Body("*"), ) rsp := &AddPackageRsp{} err := c.c.Call(ctx, c.c.NewRequest(c.name, "PkgdashService.AddPackage", req), rsp, opts...) @@ -138,15 +98,15 @@ func (c *pkgdashServiceClient) AddPackage(ctx context.Context, req *AddPackageRe return rsp, nil } -func (c *pkgdashServiceClient) GetModule(ctx context.Context, req *GetModuleReq, opts ...options.Option) (*GetModuleRsp, error) { +func (c *pkgdashServiceClient) GetModule(ctx context.Context, req *GetModuleReq, opts ...client.CallOption) (*GetModuleRsp, error) { errmap := make(map[string]interface{}, 1) errmap["default"] = &ErrorRsp{} opts = append(opts, - v41.ErrorMap(errmap), + v3.ErrorMap(errmap), ) opts = append(opts, - v41.Method(http.MethodGet), - v41.Path("/v1/module"), + v3.Method(http.MethodGet), + v3.Path("/v1/module"), ) rsp := &GetModuleRsp{} err := c.c.Call(ctx, c.c.NewRequest(c.name, "PkgdashService.GetModule", req), rsp, opts...) @@ -160,7 +120,7 @@ type pkgdashServiceServer struct { PkgdashServiceServer } -func (h *pkgdashServiceServer) ListPackage(ctx context.Context, req *ListPackageReq, rsp *ListPackageRsp) error { +func (h *pkgdashServiceServer) ListPackage(ctx context.Context, req *emptypb.Empty, rsp *ListPackageRsp) error { return h.PkgdashServiceServer.ListPackage(ctx, req, rsp) } @@ -180,9 +140,9 @@ func (h *pkgdashServiceServer) GetModule(ctx context.Context, req *GetModuleReq, return h.PkgdashServiceServer.GetModule(ctx, req, rsp) } -func RegisterPkgdashServiceServer(s server.Server, sh PkgdashServiceServer, opts ...options.Option) error { +func RegisterPkgdashServiceServer(s server.Server, sh PkgdashServiceServer, opts ...server.HandlerOption) error { type pkgdashService interface { - ListPackage(ctx context.Context, req *ListPackageReq, rsp *ListPackageRsp) error + ListPackage(ctx context.Context, req *emptypb.Empty, rsp *ListPackageRsp) error UpdatePackage(ctx context.Context, req *UpdatePackageReq, rsp *UpdatePackageRsp) error AddComment(ctx context.Context, req *AddCommentReq, rsp *AddCommentRsp) error AddPackage(ctx context.Context, req *AddPackageReq, rsp *AddPackageRsp) error @@ -192,7 +152,7 @@ func RegisterPkgdashServiceServer(s server.Server, sh PkgdashServiceServer, opts pkgdashService } h := &pkgdashServiceServer{sh} - var nopts []options.Option - nopts = append(nopts, v4.HandlerEndpoints(PkgdashServiceServerEndpoints)) - return s.Handle(&PkgdashService{h}, append(nopts, opts...)...) + var nopts []server.HandlerOption + nopts = append(nopts, v31.HandlerEndpoints(PkgdashServiceServerEndpoints)) + return s.Handle(s.NewHandler(&PkgdashService{h}, append(nopts, opts...)...)) } diff --git a/service/service.go b/service/service.go index 64e76a2..820898a 100644 --- a/service/service.go +++ b/service/service.go @@ -2,20 +2,18 @@ package service import ( "context" - "net/http" - - cmsservice "go.unistack.org/cms-service" - cmsstorage "go.unistack.org/cms-service/storage" - httpsrv "go.unistack.org/micro-server-http/v4" + cmsstorage "go.unistack.org/cms-service/storage" // TODO + httpsrv "go.unistack.org/micro-server-http/v3" "go.unistack.org/micro/v4" "go.unistack.org/micro/v4/config" + microcfg "go.unistack.org/micro/v4/config" "go.unistack.org/micro/v4/logger" "go.unistack.org/micro/v4/options" "go.unistack.org/micro/v4/register" "go.unistack.org/micro/v4/server" intcfg "go.unistack.org/unistack-org/pkgdash/config" "go.unistack.org/unistack-org/pkgdash/handler" - "go.unistack.org/unistack-org/pkgdash/handler/encoders" + pb "go.unistack.org/unistack-org/pkgdash/proto" "go.unistack.org/unistack-org/pkgdash/service/client_git" "go.unistack.org/unistack-org/pkgdash/storage" ) @@ -23,51 +21,44 @@ import ( func NewService(ctx context.Context) (micro.Service, error) { var reg register.Register - if ctx == nil { - ctx = context.Background() - } - cfg := intcfg.NewConfig() - cs := cmsservice.NewConfigLocal(cfg) + cs := microcfg.NewConfig(config.Struct(cfg)) + + // TODO mgsrv := httpsrv.NewServer( options.Register(reg), ) svc := micro.NewService( - micro.Config(cs...), + micro.Config(cs), ) - writer, err := handler.NewWriter(encoders.NewJSONProto()) - if err != nil { - logger.Fatalf(ctx, "failed init writer: %v", err) - } + h := handler.NewHandler(svc, client_git.NewClient(5)) - h := handler.NewHandler(svc, writer, client_git.NewClient(5)) - - if err = svc.Init( + if err := svc.Init( micro.AfterStart(func(_ context.Context) error { return h.Init(svc.Options().Context) }), micro.BeforeStart(func(ctx context.Context) error { - if err = config.Load(ctx, cs, config.LoadOverride(true)); err != nil { + if err := config.Load(ctx, []config.Config{cs}, config.LoadOverride(true)); err != nil { return err } - if err = config.Validate(ctx, cfg); err != nil { + if err := config.Validate(ctx, cfg); err != nil { return err } - if err = svc.Init( - micro.Name(cfg.Service.Name), - micro.Version(cfg.Service.Version), + if err := svc.Init( + micro.Name(intcfg.ServiceName), + micro.Version(intcfg.ServiceVersion), ); err != nil { return err } if err := svc.Server("http").Init( - options.Address(cfg.App.Address), - options.Name(cfg.Service.Name), - server.Version(cfg.Service.Version), + options.Address(cfg.Address), + options.Name(cfg.App.Name), + server.Version(cfg.App.Version), ); err != nil { return err } @@ -75,23 +66,17 @@ func NewService(ctx context.Context) (micro.Service, error) { return nil }), micro.BeforeStart(func(_ context.Context) error { - level := logger.InfoLevel - if v, ok := cfg.Logger.Level[cfg.Service.Name]; ok { - level = logger.ParseLevel(v) - } else if v, ok = cfg.Logger.Level["all"]; ok { - level = logger.ParseLevel(v) - } log := logger.NewLogger( - logger.WithLevel(level), + logger.WithLevel(logger.ParseLevel(cfg.LogLevel)), logger.WithCallerSkipCount(3), ) return svc.Init(micro.Logger(log)) }), - micro.BeforeStart(func(_ context.Context) error { + micro.BeforeStart(func(_ context.Context) error { // TODO var connstr string - if v, ok := cfg.Storage.DSN[cfg.Service.Name]; ok { + if v, ok := cfg.StorageDSN[cfg.App.Name]; ok { connstr = v - } else if v, ok = cfg.Storage.DSN["all"]; ok { + } else if v, ok = cfg.StorageDSN["all"]; ok { connstr = v } scheme, dsn, err := cmsstorage.StorageOptions(connstr) @@ -115,15 +100,15 @@ func NewService(ctx context.Context) (micro.Service, error) { return nil, err } - mux := http.NewServeMux() + //mux := http.NewServeMux() - mux.HandleFunc("/listPackage", handler.Methods(http.MethodGet, h.ListPackage)) - mux.HandleFunc("/updatePackage", handler.Methods(http.MethodPost, h.UpdatePackage)) - mux.HandleFunc("/addComment", handler.Methods(http.MethodPut, h.AddComment)) - mux.HandleFunc("/addPackage", handler.Methods(http.MethodPost, h.AddPackage)) - mux.HandleFunc("/getModule", handler.Methods(http.MethodGet, h.GetModule)) + //mux.HandleFunc("/listPackage", handler.Methods(http.MethodGet, h.ListPackage)) + //mux.HandleFunc("/updatePackage", handler.Methods(http.MethodPost, h.UpdatePackage)) + //mux.HandleFunc("/addComment", handler.Methods(http.MethodPut, h.AddComment)) + //mux.HandleFunc("/addPackage", handler.Methods(http.MethodPost, h.AddPackage)) + //mux.HandleFunc("/getModule", handler.Methods(http.MethodGet, h.GetModule)) - if err = svc.Server().Handle(svc.Server().NewHandler(mux)); err != nil { + if err := pb.RegisterPkgdashServiceServer(mgsrv, h); err != nil { logger.Fatalf(ctx, "failed to register handler: %v", err) } diff --git a/storage/postgres/queries.go b/storage/postgres/queries.go index aa0e3c8..dd06434 100644 --- a/storage/postgres/queries.go +++ b/storage/postgres/queries.go @@ -24,5 +24,9 @@ insert into package(name, url, modules) values ($1, $2, $3); insert into module(name, version, last_version) values %s returning id; +` + queryGetModule = ` +select id, name, version, last_version from module +where id in %s ; ` ) diff --git a/storage/postgres/quries.go b/storage/postgres/quries.go deleted file mode 100644 index aa0e3c8..0000000 --- a/storage/postgres/quries.go +++ /dev/null @@ -1,28 +0,0 @@ -package postgres - -const ( - queryListPackage = ` -select - id, - name, - url, - comments - --modules, - --issues, - from package; -` - queryAddComment = ` -with insert_comm as ( - insert into comment(text) values ($1) returning id -) -update package set comments = array_append(comments, (select * from insert_comm)) where id=$2; -` - queryAddPackage = ` -insert into package(name, url, modules) values ($1, $2, $3); -` - queryInsMsgGetIDs = ` -insert into module(name, version, last_version) values -%s -returning id; -` -) diff --git a/storage/postgres/storage.go b/storage/postgres/storage.go index 75ce5f9..61f4b68 100644 --- a/storage/postgres/storage.go +++ b/storage/postgres/storage.go @@ -6,7 +6,6 @@ import ( "embed" "errors" "fmt" - pb "go.unistack.org/unistack-org/pkgdash/proto" "strings" "github.com/golang-migrate/migrate/v4" @@ -16,6 +15,7 @@ import ( "go.unistack.org/micro/v4/logger" "go.unistack.org/unistack-org/pkgdash/config" "go.unistack.org/unistack-org/pkgdash/models" + pb "go.unistack.org/unistack-org/pkgdash/proto" ) const ( @@ -138,7 +138,7 @@ func (s *Postgres) AddComment(ctx context.Context, req *pb.AddCommentReq) error } }() - res, err := tx.ExecContext(ctx, queryAddComment, req.Text, req.IdPackage.Value) + res, err := tx.ExecContext(ctx, queryAddComment, req.Text, req.IdPackage) if err != nil { return err } @@ -168,7 +168,7 @@ func (s *Postgres) AddPackage(ctx context.Context, req *pb.AddPackageReq) error } }() - res, err := tx.ExecContext(ctx, queryAddPackage, req.Name.Value, req.Url.Value, pq.Array(req.Modules)) + res, err := tx.ExecContext(ctx, queryAddPackage, req.Name, req.Url, pq.Array(req.Modules)) if err != nil { return err } diff --git a/storage/sqlite/quries.go b/storage/sqlite/queries.go similarity index 91% rename from storage/sqlite/quries.go rename to storage/sqlite/queries.go index 2b6922b..917e23c 100644 --- a/storage/sqlite/quries.go +++ b/storage/sqlite/queries.go @@ -12,7 +12,7 @@ select from package; ` queryAddComment = ` -insert into comment(text) values ($1) ; +insert into comment(text) values ($1) returning id; update package set comments = json_insert(comments, '$[#]', ( select last_insert_rowid() as id from comment )) where id = $2 ; diff --git a/storage/sqlite/storage.go b/storage/sqlite/storage.go index 84354aa..bf464c5 100644 --- a/storage/sqlite/storage.go +++ b/storage/sqlite/storage.go @@ -123,10 +123,10 @@ func (s *Sqlite) ListPackage(ctx context.Context) (models.ListPackage, error) { return result, err } -func (s *Sqlite) AddComment(ctx context.Context, req *pb.AddCommentReq) error { +func (s *Sqlite) AddComment(ctx context.Context, req *pb.AddCommentReq) (id uint64, err error) { tx, err := s.db.BeginTx(ctx, nil) if err != nil { - return err + return 0, err } defer func() { @@ -139,18 +139,11 @@ func (s *Sqlite) AddComment(ctx context.Context, req *pb.AddCommentReq) error { } }() - res, err := tx.ExecContext(ctx, queryAddComment, req.Text, req.IdPackage.Value) - if err != nil { - return err + if err = tx.QueryRowContext(ctx, queryAddComment, req.Text, req.IdPackage).Scan(&id); err != nil { + return id, err } - - if aff, affErr := res.RowsAffected(); err != nil { - err = affErr - } else if aff == 0 { - err = errors.New("rows affected is 0") - } - - return err + + return id, err } func (s *Sqlite) AddPackage(ctx context.Context, req *pb.AddPackageReq) error { @@ -169,7 +162,7 @@ func (s *Sqlite) AddPackage(ctx context.Context, req *pb.AddPackageReq) error { } }() - res, err := tx.ExecContext(ctx, queryAddPackage, req.Name.Value, req.Url.Value, pq.Array(req.Modules)) + res, err := tx.ExecContext(ctx, queryAddPackage, req.Name, req.Url, pq.Array(req.Modules)) if err != nil { return err } diff --git a/storage/storage.go b/storage/storage.go index 70b60c1..63b3cfd 100644 --- a/storage/storage.go +++ b/storage/storage.go @@ -27,7 +27,7 @@ type Storage interface { ListPackage(ctx context.Context) (models.ListPackage, error) UpdatePackage(ctx context.Context, req *pb.UpdatePackageReq) error - AddComment(ctx context.Context, req *pb.AddCommentReq) error + AddComment(ctx context.Context, req *pb.AddCommentReq) (uint64, error) AddPackage(ctx context.Context, req *pb.AddPackageReq) error InsertButchModules(ctx context.Context, req []models.Module) ([]uint64, error) GetModule(ctx context.Context, req *pb.GetModuleReq) (models.ListModule, error) -- 2.45.2