From 2292d25d7405c33218016dba06b64d8698bb89ea Mon Sep 17 00:00:00 2001 From: liangzai <2440983361@qq.com> Date: Mon, 21 Oct 2024 16:01:20 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E6=96=B0=E5=A2=9E=E8=87=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E7=94=A8=E6=88=B7=E7=A7=81=E4=BA=BA=E4=BB=B7=E6=A0=BC?= =?UTF-8?q?2=E3=80=81=E4=BC=98=E5=8C=96api=E6=9C=8D=E5=8A=A1=E9=89=B4?= =?UTF-8?q?=E6=9D=83=E7=BC=93=E5=AD=983=E3=80=81=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=91=98=E7=AB=AF=E5=AF=B9=E5=85=AC=E5=85=85?= =?UTF-8?q?=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/admin/admin.api | 38 + apps/admin/internal/handler/routes.go | 19 + .../handler/user/getuserlisthandler.go | 30 + .../internal/handler/user/rechargehandler.go | 30 + .../internal/logic/user/getuserlistlogic.go | 53 + .../internal/logic/user/rechargelogic.go | 39 + apps/admin/internal/svc/servicecontext.go | 2 + apps/admin/internal/types/types.go | 26 + apps/sentinel/client/product/product.go | 2 + apps/sentinel/client/secret/secret.go | 2 + apps/sentinel/client/topup/topup.go | 2 + .../client/userproduct/userproduct.go | 12 +- apps/sentinel/client/whitelist/whitelist.go | 2 + .../userproduct/createuserproductlogic.go | 6 +- .../logic/userproduct/getuserproductlogic.go | 38 + .../getuserproductpagelistlogic.go | 4 +- .../internal/model/userproductsmodel.go | 19 +- .../internal/model/userproductsmodel_gen.go | 17 +- .../server/userproduct/userproductserver.go | 7 +- apps/sentinel/sentinel.proto | 18 +- apps/sentinel/sentinel.sql | 1 + apps/sentinel/sentinel/sentinel.pb.go | 1121 ++++++++++------- apps/sentinel/sentinel/sentinel_grpc.pb.go | 52 +- .../apirequestservice/apirequestservice.go | 3 + apps/user/client/auth/auth.go | 3 + apps/user/client/enterprise/enterprise.go | 3 + apps/user/client/user/user.go | 9 + .../client/walletservice/walletservice.go | 3 + .../internal/logic/user/getuserlistlogic.go | 63 + .../logic/walletservice/updatewalletlogic.go | 13 +- apps/user/internal/model/usersmodel.go | 21 + apps/user/internal/model/walletsmodel.go | 35 + apps/user/internal/server/user/userserver.go | 5 + apps/user/internal/svc/servicecontext.go | 5 +- apps/user/user.proto | 26 +- apps/user/user/user.pb.go | 1043 +++++++++------ apps/user/user/user_grpc.pb.go | 38 + 37 files changed, 1903 insertions(+), 907 deletions(-) create mode 100644 apps/admin/internal/handler/user/getuserlisthandler.go create mode 100644 apps/admin/internal/handler/user/rechargehandler.go create mode 100644 apps/admin/internal/logic/user/getuserlistlogic.go create mode 100644 apps/admin/internal/logic/user/rechargelogic.go create mode 100644 apps/sentinel/internal/logic/userproduct/getuserproductlogic.go create mode 100644 apps/user/internal/logic/user/getuserlistlogic.go diff --git a/apps/admin/admin.api b/apps/admin/admin.api index db6b6be..89435e7 100644 --- a/apps/admin/admin.api +++ b/apps/admin/admin.api @@ -152,3 +152,41 @@ service admin-api { get /list (GetProductListReq) returns (GetProductListResp) } +type ( + UserListRequest { + Page int64 `json:"page"` // 分页页码 + PageSize int64 `json:"pageSize"` // 每页大小 + } + UserListResponse { + List []UserItem `json:"list"` + Total int64 `json:"total"` + } + UserItem { + Id int64 `json:"id"` // 主键ID + Username string `json:"username"` // 用户名 + Phone string `json:"phone"` // 电话 + Disable int64 `json:"disable"` // 是否禁用状态,1为禁用,0为启用 + QuotaExceeded int64 `json:"quotaExceeded"` // 是否超出配额,1为超出,0为未超出 + Balance float64 `json:"balance"` // 余额 + CreatedAt string `json:"createdAt"` // 创建时间 + UpdatedAt string `json:"updatedAt"` // 更新时间 + } + rechargeRequest { + UserId int64 `json:userId` + Amount int64 `json:amount` + } +) + +@server ( + group: user + prefix: /api/admin/user + middleware: AuthInterceptor +) +service admin-api { + @handler getUserList + post /user/list (UserListRequest) returns (UserListResponse) + + @handler recharge + post /user/recharge (rechargeRequest) +} + diff --git a/apps/admin/internal/handler/routes.go b/apps/admin/internal/handler/routes.go index af23419..bb730dc 100644 --- a/apps/admin/internal/handler/routes.go +++ b/apps/admin/internal/handler/routes.go @@ -93,4 +93,23 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) { ), rest.WithPrefix("/api/admin/user"), ) + + server.AddRoutes( + rest.WithMiddlewares( + []rest.Middleware{serverCtx.AuthInterceptor}, + []rest.Route{ + { + Method: http.MethodPost, + Path: "/user/list", + Handler: user.GetUserListHandler(serverCtx), + }, + { + Method: http.MethodPost, + Path: "/user/recharge", + Handler: user.RechargeHandler(serverCtx), + }, + }..., + ), + rest.WithPrefix("/api/admin/user"), + ) } diff --git a/apps/admin/internal/handler/user/getuserlisthandler.go b/apps/admin/internal/handler/user/getuserlisthandler.go new file mode 100644 index 0000000..60e1d87 --- /dev/null +++ b/apps/admin/internal/handler/user/getuserlisthandler.go @@ -0,0 +1,30 @@ +package user + +import ( + "net/http" + + "github.com/zeromicro/go-zero/rest/httpx" + "tianyuan-api/apps/admin/internal/logic/user" + "tianyuan-api/apps/admin/internal/svc" + "tianyuan-api/apps/admin/internal/types" + + xhttp "github.com/zeromicro/x/http" +) + +func GetUserListHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.UserListRequest + if err := httpx.Parse(r, &req); err != nil { + xhttp.JsonBaseResponseCtx(r.Context(), w, err) + return + } + + l := user.NewGetUserListLogic(r.Context(), svcCtx) + resp, err := l.GetUserList(&req) + if err != nil { + xhttp.JsonBaseResponseCtx(r.Context(), w, err) + } else { + xhttp.JsonBaseResponseCtx(r.Context(), w, resp) + } + } +} diff --git a/apps/admin/internal/handler/user/rechargehandler.go b/apps/admin/internal/handler/user/rechargehandler.go new file mode 100644 index 0000000..9b7c5b1 --- /dev/null +++ b/apps/admin/internal/handler/user/rechargehandler.go @@ -0,0 +1,30 @@ +package user + +import ( + "net/http" + + "github.com/zeromicro/go-zero/rest/httpx" + "tianyuan-api/apps/admin/internal/logic/user" + "tianyuan-api/apps/admin/internal/svc" + "tianyuan-api/apps/admin/internal/types" + + xhttp "github.com/zeromicro/x/http" +) + +func RechargeHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.RechargeRequest + if err := httpx.Parse(r, &req); err != nil { + xhttp.JsonBaseResponseCtx(r.Context(), w, err) + return + } + + l := user.NewRechargeLogic(r.Context(), svcCtx) + err := l.Recharge(&req) + if err != nil { + xhttp.JsonBaseResponseCtx(r.Context(), w, err) + } else { + xhttp.JsonBaseResponseCtx(r.Context(), w, nil) + } + } +} diff --git a/apps/admin/internal/logic/user/getuserlistlogic.go b/apps/admin/internal/logic/user/getuserlistlogic.go new file mode 100644 index 0000000..ee1ca22 --- /dev/null +++ b/apps/admin/internal/logic/user/getuserlistlogic.go @@ -0,0 +1,53 @@ +package user + +import ( + "context" + "tianyuan-api/apps/user/user" + + "tianyuan-api/apps/admin/internal/svc" + "tianyuan-api/apps/admin/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type GetUserListLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +func NewGetUserListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetUserListLogic { + return &GetUserListLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *GetUserListLogic) GetUserList(req *types.UserListRequest) (resp *types.UserListResponse, err error) { + list, err := l.svcCtx.UserRpc.GetUserList(l.ctx, &user.UserListRequest{ + Page: req.Page, + PageSize: req.PageSize, + }) + if err != nil { + return nil, err + } + + var listResp []types.UserItem + for _, item := range list.List { + listResp = append(listResp, types.UserItem{ + Id: item.Id, + Username: item.Username, + Phone: item.Phone, + Disable: item.Disable, + Balance: item.Balance, + QuotaExceeded: item.QuotaExceeded, + CreatedAt: item.CreatedAt, + UpdatedAt: item.UpdatedAt, + }) + } + return &types.UserListResponse{ + List: listResp, + Total: list.Total, + }, nil +} diff --git a/apps/admin/internal/logic/user/rechargelogic.go b/apps/admin/internal/logic/user/rechargelogic.go new file mode 100644 index 0000000..98f22dc --- /dev/null +++ b/apps/admin/internal/logic/user/rechargelogic.go @@ -0,0 +1,39 @@ +package user + +import ( + "context" + "tianyuan-api/apps/admin/internal/svc" + "tianyuan-api/apps/admin/internal/types" + "tianyuan-api/apps/user/user" + "tianyuan-api/pkg/generate" + + "github.com/zeromicro/go-zero/core/logx" +) + +type RechargeLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +func NewRechargeLogic(ctx context.Context, svcCtx *svc.ServiceContext) *RechargeLogic { + return &RechargeLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *RechargeLogic) Recharge(req *types.RechargeRequest) error { + outTradeNo := generate.GenerateTransactionID() + _, err := l.svcCtx.WalletsRpc.RechargeWallet(l.ctx, &user.RechargeWalletRequest{ + UserId: req.UserId, + OutTradeNo: outTradeNo, + Amount: req.Amount, + PaymentMethod: 2, + }) + if err != nil { + return err + } + return nil +} diff --git a/apps/admin/internal/svc/servicecontext.go b/apps/admin/internal/svc/servicecontext.go index 8030e76..9f4f62d 100644 --- a/apps/admin/internal/svc/servicecontext.go +++ b/apps/admin/internal/svc/servicecontext.go @@ -15,6 +15,7 @@ type ServiceContext struct { EntRpc user.EnterpriseClient UserRpc user.UserClient ProductRpc sentinel.ProductClient + WalletsRpc user.WalletServiceClient } func NewServiceContext(c config.Config) *ServiceContext { @@ -24,5 +25,6 @@ func NewServiceContext(c config.Config) *ServiceContext { EntRpc: user.NewEnterpriseClient(zrpc.MustNewClient(c.UserRpc).Conn()), UserRpc: user.NewUserClient(zrpc.MustNewClient(c.UserRpc).Conn()), ProductRpc: sentinel.NewProductClient(zrpc.MustNewClient(c.SentinelRpc).Conn()), + WalletsRpc: user.NewWalletServiceClient(zrpc.MustNewClient(c.UserRpc).Conn()), } } diff --git a/apps/admin/internal/types/types.go b/apps/admin/internal/types/types.go index 0b2693d..4532cb0 100644 --- a/apps/admin/internal/types/types.go +++ b/apps/admin/internal/types/types.go @@ -98,3 +98,29 @@ type UpdateProductReq struct { type UserInfoResp struct { Username string `json:"username"` } + +type UserItem struct { + Id int64 `json:"id"` // 主键ID + Username string `json:"username"` // 用户名 + Phone string `json:"phone"` // 电话 + Disable int64 `json:"disable"` // 是否禁用状态,1为禁用,0为启用 + QuotaExceeded int64 `json:"quotaExceeded"` // 是否超出配额,1为超出,0为未超出 + Balance float64 `json:"balance"` // 余额 + CreatedAt string `json:"createdAt"` // 创建时间 + UpdatedAt string `json:"updatedAt"` // 更新时间 +} + +type UserListRequest struct { + Page int64 `json:"page"` // 分页页码 + PageSize int64 `json:"pageSize"` // 每页大小 +} + +type UserListResponse struct { + List []UserItem `json:"list"` + Total int64 `json:"total"` +} + +type RechargeRequest struct { + UserId int64 `json:userId` + Amount int64 `json:amount` +} diff --git a/apps/sentinel/client/product/product.go b/apps/sentinel/client/product/product.go index f505a25..c27d79e 100644 --- a/apps/sentinel/client/product/product.go +++ b/apps/sentinel/client/product/product.go @@ -43,8 +43,10 @@ type ( UpdateWhitelistRequest = sentinel.UpdateWhitelistRequest UserProductEmptyResponse = sentinel.UserProductEmptyResponse UserProductItem = sentinel.UserProductItem + UserProductPageListResponse = sentinel.UserProductPageListResponse UserProductResponse = sentinel.UserProductResponse UserProuctPageListRequest = sentinel.UserProuctPageListRequest + UserProuctRequest = sentinel.UserProuctRequest WhitePageListRequest = sentinel.WhitePageListRequest Whitelist = sentinel.Whitelist WhitelistResponse = sentinel.WhitelistResponse diff --git a/apps/sentinel/client/secret/secret.go b/apps/sentinel/client/secret/secret.go index 2d470c2..2cc9904 100644 --- a/apps/sentinel/client/secret/secret.go +++ b/apps/sentinel/client/secret/secret.go @@ -43,8 +43,10 @@ type ( UpdateWhitelistRequest = sentinel.UpdateWhitelistRequest UserProductEmptyResponse = sentinel.UserProductEmptyResponse UserProductItem = sentinel.UserProductItem + UserProductPageListResponse = sentinel.UserProductPageListResponse UserProductResponse = sentinel.UserProductResponse UserProuctPageListRequest = sentinel.UserProuctPageListRequest + UserProuctRequest = sentinel.UserProuctRequest WhitePageListRequest = sentinel.WhitePageListRequest Whitelist = sentinel.Whitelist WhitelistResponse = sentinel.WhitelistResponse diff --git a/apps/sentinel/client/topup/topup.go b/apps/sentinel/client/topup/topup.go index dec8343..a53e2cb 100644 --- a/apps/sentinel/client/topup/topup.go +++ b/apps/sentinel/client/topup/topup.go @@ -43,8 +43,10 @@ type ( UpdateWhitelistRequest = sentinel.UpdateWhitelistRequest UserProductEmptyResponse = sentinel.UserProductEmptyResponse UserProductItem = sentinel.UserProductItem + UserProductPageListResponse = sentinel.UserProductPageListResponse UserProductResponse = sentinel.UserProductResponse UserProuctPageListRequest = sentinel.UserProuctPageListRequest + UserProuctRequest = sentinel.UserProuctRequest WhitePageListRequest = sentinel.WhitePageListRequest Whitelist = sentinel.Whitelist WhitelistResponse = sentinel.WhitelistResponse diff --git a/apps/sentinel/client/userproduct/userproduct.go b/apps/sentinel/client/userproduct/userproduct.go index 9b907fa..2ae4dc7 100644 --- a/apps/sentinel/client/userproduct/userproduct.go +++ b/apps/sentinel/client/userproduct/userproduct.go @@ -43,8 +43,10 @@ type ( UpdateWhitelistRequest = sentinel.UpdateWhitelistRequest UserProductEmptyResponse = sentinel.UserProductEmptyResponse UserProductItem = sentinel.UserProductItem + UserProductPageListResponse = sentinel.UserProductPageListResponse UserProductResponse = sentinel.UserProductResponse UserProuctPageListRequest = sentinel.UserProuctPageListRequest + UserProuctRequest = sentinel.UserProuctRequest WhitePageListRequest = sentinel.WhitePageListRequest Whitelist = sentinel.Whitelist WhitelistResponse = sentinel.WhitelistResponse @@ -52,7 +54,8 @@ type ( UserProduct interface { // UserProduct methods CreateUserProduct(ctx context.Context, in *CreateUserProductRequest, opts ...grpc.CallOption) (*UserProductEmptyResponse, error) - GetUserProductPageList(ctx context.Context, in *UserProuctPageListRequest, opts ...grpc.CallOption) (*UserProductResponse, error) + GetUserProductPageList(ctx context.Context, in *UserProuctPageListRequest, opts ...grpc.CallOption) (*UserProductPageListResponse, error) + GetUserProduct(ctx context.Context, in *UserProuctRequest, opts ...grpc.CallOption) (*UserProductResponse, error) MatchingUserIdProductCode(ctx context.Context, in *MatchingUserIdProductCodeRequest, opts ...grpc.CallOption) (*MatchResponse, error) } @@ -73,11 +76,16 @@ func (m *defaultUserProduct) CreateUserProduct(ctx context.Context, in *CreateUs return client.CreateUserProduct(ctx, in, opts...) } -func (m *defaultUserProduct) GetUserProductPageList(ctx context.Context, in *UserProuctPageListRequest, opts ...grpc.CallOption) (*UserProductResponse, error) { +func (m *defaultUserProduct) GetUserProductPageList(ctx context.Context, in *UserProuctPageListRequest, opts ...grpc.CallOption) (*UserProductPageListResponse, error) { client := sentinel.NewUserProductClient(m.cli.Conn()) return client.GetUserProductPageList(ctx, in, opts...) } +func (m *defaultUserProduct) GetUserProduct(ctx context.Context, in *UserProuctRequest, opts ...grpc.CallOption) (*UserProductResponse, error) { + client := sentinel.NewUserProductClient(m.cli.Conn()) + return client.GetUserProduct(ctx, in, opts...) +} + func (m *defaultUserProduct) MatchingUserIdProductCode(ctx context.Context, in *MatchingUserIdProductCodeRequest, opts ...grpc.CallOption) (*MatchResponse, error) { client := sentinel.NewUserProductClient(m.cli.Conn()) return client.MatchingUserIdProductCode(ctx, in, opts...) diff --git a/apps/sentinel/client/whitelist/whitelist.go b/apps/sentinel/client/whitelist/whitelist.go index f37e918..fa7ce18 100644 --- a/apps/sentinel/client/whitelist/whitelist.go +++ b/apps/sentinel/client/whitelist/whitelist.go @@ -43,8 +43,10 @@ type ( UpdateWhitelistRequest = sentinel.UpdateWhitelistRequest UserProductEmptyResponse = sentinel.UserProductEmptyResponse UserProductItem = sentinel.UserProductItem + UserProductPageListResponse = sentinel.UserProductPageListResponse UserProductResponse = sentinel.UserProductResponse UserProuctPageListRequest = sentinel.UserProuctPageListRequest + UserProuctRequest = sentinel.UserProuctRequest WhitePageListRequest = sentinel.WhitePageListRequest Whitelist = sentinel.Whitelist WhitelistResponse = sentinel.WhitelistResponse diff --git a/apps/sentinel/internal/logic/userproduct/createuserproductlogic.go b/apps/sentinel/internal/logic/userproduct/createuserproductlogic.go index 3520fcc..d5a008e 100644 --- a/apps/sentinel/internal/logic/userproduct/createuserproductlogic.go +++ b/apps/sentinel/internal/logic/userproduct/createuserproductlogic.go @@ -34,7 +34,11 @@ func (l *CreateUserProductLogic) CreateUserProduct(in *sentinel.CreateUserProduc if isExist { return nil, errors.New("该产品已定阅读,无法重复订阅") } - _, err = l.svcCtx.UserProductsModel.Insert(l.ctx, &model.UserProducts{UserId: in.UserId, ProductId: in.ProductId}) + product, err := l.svcCtx.ProductsModel.FindOne(l.ctx, in.ProductId) + if err != nil { + return nil, err + } + _, err = l.svcCtx.UserProductsModel.Insert(l.ctx, &model.UserProducts{UserId: in.UserId, ProductId: in.ProductId, ProductPrice: product.ProductPrice}) if err != nil { return nil, err } diff --git a/apps/sentinel/internal/logic/userproduct/getuserproductlogic.go b/apps/sentinel/internal/logic/userproduct/getuserproductlogic.go new file mode 100644 index 0000000..ac3857b --- /dev/null +++ b/apps/sentinel/internal/logic/userproduct/getuserproductlogic.go @@ -0,0 +1,38 @@ +package userproductlogic + +import ( + "context" + + "tianyuan-api/apps/sentinel/internal/svc" + "tianyuan-api/apps/sentinel/sentinel" + + "github.com/zeromicro/go-zero/core/logx" +) + +type GetUserProductLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger +} + +func NewGetUserProductLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetUserProductLogic { + return &GetUserProductLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *GetUserProductLogic) GetUserProduct(in *sentinel.UserProuctRequest) (*sentinel.UserProductResponse, error) { + userProduct, err := l.svcCtx.UserProductsModel.FindOneUserProduct(l.ctx, in.UserId, in.ProductId) + if err != nil { + return nil, err + } + + return &sentinel.UserProductResponse{ + Id: userProduct.Id, + UserId: userProduct.UserId, + ProductId: userProduct.ProductId, + ProductPrice: userProduct.ProductPrice, + }, nil +} diff --git a/apps/sentinel/internal/logic/userproduct/getuserproductpagelistlogic.go b/apps/sentinel/internal/logic/userproduct/getuserproductpagelistlogic.go index b1bd290..f717f7d 100644 --- a/apps/sentinel/internal/logic/userproduct/getuserproductpagelistlogic.go +++ b/apps/sentinel/internal/logic/userproduct/getuserproductpagelistlogic.go @@ -25,7 +25,7 @@ func NewGetUserProductPageListLogic(ctx context.Context, svcCtx *svc.ServiceCont } } -func (l *GetUserProductPageListLogic) GetUserProductPageList(in *sentinel.UserProuctPageListRequest) (*sentinel.UserProductResponse, error) { +func (l *GetUserProductPageListLogic) GetUserProductPageList(in *sentinel.UserProuctPageListRequest) (*sentinel.UserProductPageListResponse, error) { list, total, err := l.svcCtx.UserProductsModel.FindUserProductsList(l.ctx, in.UserId, in.Page, in.PageSize) if err != nil { return nil, err @@ -45,7 +45,7 @@ func (l *GetUserProductPageListLogic) GetUserProductPageList(in *sentinel.UserPr UpdatedAt: up.UpdatedAt.Format("2006-01-02 15:04:05"), }) } - return &sentinel.UserProductResponse{ + return &sentinel.UserProductPageListResponse{ Total: total, UserProducts: userProducts, }, nil diff --git a/apps/sentinel/internal/model/userproductsmodel.go b/apps/sentinel/internal/model/userproductsmodel.go index 137b455..ceedad0 100644 --- a/apps/sentinel/internal/model/userproductsmodel.go +++ b/apps/sentinel/internal/model/userproductsmodel.go @@ -61,7 +61,7 @@ func (m *defaultUserProductsModel) FindUserProductsList(ctx context.Context, use p.product_code, COALESCE(p.product_description, '') AS product_description, p.product_group, - p.product_price, + up.product_price, up.created_at, up.updated_at FROM user_products up @@ -87,26 +87,11 @@ func (m *defaultUserProductsModel) FindUserProductsList(ctx context.Context, use return userProducts, total, nil } func (m *customUserProductsModel) FindOneUserProduct(ctx context.Context, userId, productId int64) (*UserProducts, error) { - // 定义 Redis 缓存 Set 键 - redisKey := fmt.Sprintf("user_products:%d", userId) - - // 检查 Redis Set 中是否存在用户与产品的关联 - isMember, err := m.rds.SismemberCtx(ctx, redisKey, productId) - if err == nil && isMember { - // 如果 Redis Set 中存在,返回空,因为不需要重复查询 - return nil, nil - } - var userProduct UserProducts query := fmt.Sprintf("SELECT %s FROM %s WHERE `user_id` = ? AND `product_id` = ? LIMIT 1", userProductsRows, m.table) - err = m.QueryRowNoCacheCtx(ctx, &userProduct, query, userId, productId) + err := m.QueryRowNoCacheCtx(ctx, &userProduct, query, userId, productId) switch err { case nil: - // 将用户产品的关联写入 Redis Set - _, err = m.rds.SaddCtx(ctx, redisKey, productId) - if err != nil { - return nil, err - } return &userProduct, nil case sqlc.ErrNotFound: // 返回未找到的错误 diff --git a/apps/sentinel/internal/model/userproductsmodel_gen.go b/apps/sentinel/internal/model/userproductsmodel_gen.go index 67cf9f7..88bd359 100644 --- a/apps/sentinel/internal/model/userproductsmodel_gen.go +++ b/apps/sentinel/internal/model/userproductsmodel_gen.go @@ -41,11 +41,12 @@ type ( } UserProducts struct { - Id int64 `db:"id"` // 用户产品ID - UserId int64 `db:"user_id"` // 用户ID - ProductId int64 `db:"product_id"` // 产品ID - CreatedAt time.Time `db:"created_at"` // 创建时间 - UpdatedAt time.Time `db:"updated_at"` // 更新时间 + Id int64 `db:"id"` // 用户产品ID + UserId int64 `db:"user_id"` // 用户ID + ProductId int64 `db:"product_id"` // 产品ID + ProductPrice float64 `db:"product_price"` // 产品价格 + CreatedAt time.Time `db:"created_at"` // 创建时间 + UpdatedAt time.Time `db:"updated_at"` // 更新时间 } ) @@ -85,8 +86,8 @@ func (m *defaultUserProductsModel) FindOne(ctx context.Context, id int64) (*User func (m *defaultUserProductsModel) Insert(ctx context.Context, data *UserProducts) (sql.Result, error) { userProductsIdKey := fmt.Sprintf("%s%v", cacheUserProductsIdPrefix, data.Id) ret, err := m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) { - query := fmt.Sprintf("insert into %s (%s) values (?, ?)", m.table, userProductsRowsExpectAutoSet) - return conn.ExecCtx(ctx, query, data.UserId, data.ProductId) + query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?)", m.table, userProductsRowsExpectAutoSet) + return conn.ExecCtx(ctx, query, data.UserId, data.ProductId, data.ProductPrice) }, userProductsIdKey) return ret, err } @@ -95,7 +96,7 @@ func (m *defaultUserProductsModel) Update(ctx context.Context, data *UserProduct userProductsIdKey := fmt.Sprintf("%s%v", cacheUserProductsIdPrefix, data.Id) _, err := m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) { query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, userProductsRowsWithPlaceHolder) - return conn.ExecCtx(ctx, query, data.UserId, data.ProductId, data.Id) + return conn.ExecCtx(ctx, query, data.UserId, data.ProductId, data.ProductPrice, data.Id) }, userProductsIdKey) return err } diff --git a/apps/sentinel/internal/server/userproduct/userproductserver.go b/apps/sentinel/internal/server/userproduct/userproductserver.go index fe22436..11d1ae6 100644 --- a/apps/sentinel/internal/server/userproduct/userproductserver.go +++ b/apps/sentinel/internal/server/userproduct/userproductserver.go @@ -29,11 +29,16 @@ func (s *UserProductServer) CreateUserProduct(ctx context.Context, in *sentinel. return l.CreateUserProduct(in) } -func (s *UserProductServer) GetUserProductPageList(ctx context.Context, in *sentinel.UserProuctPageListRequest) (*sentinel.UserProductResponse, error) { +func (s *UserProductServer) GetUserProductPageList(ctx context.Context, in *sentinel.UserProuctPageListRequest) (*sentinel.UserProductPageListResponse, error) { l := userproductlogic.NewGetUserProductPageListLogic(ctx, s.svcCtx) return l.GetUserProductPageList(in) } +func (s *UserProductServer) GetUserProduct(ctx context.Context, in *sentinel.UserProuctRequest) (*sentinel.UserProductResponse, error) { + l := userproductlogic.NewGetUserProductLogic(ctx, s.svcCtx) + return l.GetUserProduct(in) +} + func (s *UserProductServer) MatchingUserIdProductCode(ctx context.Context, in *sentinel.MatchingUserIdProductCodeRequest) (*sentinel.MatchResponse, error) { l := userproductlogic.NewMatchingUserIdProductCodeLogic(ctx, s.svcCtx) return l.MatchingUserIdProductCode(in) diff --git a/apps/sentinel/sentinel.proto b/apps/sentinel/sentinel.proto index 5c8f743..10e8519 100644 --- a/apps/sentinel/sentinel.proto +++ b/apps/sentinel/sentinel.proto @@ -14,6 +14,10 @@ message UserProuctPageListRequest { int64 page = 2; int64 page_size = 3; } +message UserProuctRequest { + int64 user_id = 1; + int64 product_id = 2; +} message WhitePageListRequest { int64 user_id = 1; int64 page = 2; @@ -85,7 +89,6 @@ message SecretResponse { repeated Secret secrets = 2; } -// Message for Products operations message Product { int64 id = 1; string product_name = 2; @@ -126,7 +129,6 @@ message ProductResponse { repeated Product products = 2; } -// Message for UserProducts operations message UserProductEmptyResponse { } message UserProductItem { @@ -153,10 +155,16 @@ message DeleteUserProductRequest { int64 id = 1; } -message UserProductResponse { +message UserProductPageListResponse { int64 total = 1; repeated UserProductItem user_products = 2; } +message UserProductResponse { + int64 id = 1; // 用户产品ID + int64 userId = 2; + int64 productId = 3; // 产品ID + double productPrice = 4; // 产品价格 +} message matchingUserIdProductCodeRequest { int64 id = 1; @@ -184,7 +192,6 @@ message AliTopUpNotifyRequest { message AliTopUpNotifyResponse { bool success = 1; } -// Service definitions for Whitelist, Secrets, Products, and UserProducts service whitelist { // Whitelist methods rpc CreateWhitelist(CreateWhitelistRequest) returns (Whitelist); @@ -211,7 +218,8 @@ service product { service userProduct { // UserProduct methods rpc CreateUserProduct(CreateUserProductRequest) returns (UserProductEmptyResponse); - rpc GetUserProductPageList(UserProuctPageListRequest) returns (UserProductResponse); + rpc GetUserProductPageList(UserProuctPageListRequest) returns (UserProductPageListResponse); + rpc GetUserProduct(UserProuctRequest) returns (UserProductResponse); rpc MatchingUserIdProductCode(matchingUserIdProductCodeRequest) returns (matchResponse); } diff --git a/apps/sentinel/sentinel.sql b/apps/sentinel/sentinel.sql index a494b38..af29a42 100644 --- a/apps/sentinel/sentinel.sql +++ b/apps/sentinel/sentinel.sql @@ -36,6 +36,7 @@ CREATE TABLE `user_products` ( `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '用户产品ID', `user_id` INT(11) NOT NULL COMMENT '用户ID', `product_id` INT(11) NOT NULL COMMENT '产品ID', + `product_price` DECIMAL(10, 2) NOT NULL COMMENT '产品价格', `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`) diff --git a/apps/sentinel/sentinel/sentinel.pb.go b/apps/sentinel/sentinel/sentinel.pb.go index b35f99f..ffa8d14 100644 --- a/apps/sentinel/sentinel/sentinel.pb.go +++ b/apps/sentinel/sentinel/sentinel.pb.go @@ -154,6 +154,61 @@ func (x *UserProuctPageListRequest) GetPageSize() int64 { return 0 } +type UserProuctRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UserId int64 `protobuf:"varint,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` + ProductId int64 `protobuf:"varint,2,opt,name=product_id,json=productId,proto3" json:"product_id,omitempty"` +} + +func (x *UserProuctRequest) Reset() { + *x = UserProuctRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_sentinel_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UserProuctRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UserProuctRequest) ProtoMessage() {} + +func (x *UserProuctRequest) ProtoReflect() protoreflect.Message { + mi := &file_sentinel_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UserProuctRequest.ProtoReflect.Descriptor instead. +func (*UserProuctRequest) Descriptor() ([]byte, []int) { + return file_sentinel_proto_rawDescGZIP(), []int{2} +} + +func (x *UserProuctRequest) GetUserId() int64 { + if x != nil { + return x.UserId + } + return 0 +} + +func (x *UserProuctRequest) GetProductId() int64 { + if x != nil { + return x.ProductId + } + return 0 +} + type WhitePageListRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -167,7 +222,7 @@ type WhitePageListRequest struct { func (x *WhitePageListRequest) Reset() { *x = WhitePageListRequest{} if protoimpl.UnsafeEnabled { - mi := &file_sentinel_proto_msgTypes[2] + mi := &file_sentinel_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -180,7 +235,7 @@ func (x *WhitePageListRequest) String() string { func (*WhitePageListRequest) ProtoMessage() {} func (x *WhitePageListRequest) ProtoReflect() protoreflect.Message { - mi := &file_sentinel_proto_msgTypes[2] + mi := &file_sentinel_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -193,7 +248,7 @@ func (x *WhitePageListRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WhitePageListRequest.ProtoReflect.Descriptor instead. func (*WhitePageListRequest) Descriptor() ([]byte, []int) { - return file_sentinel_proto_rawDescGZIP(), []int{2} + return file_sentinel_proto_rawDescGZIP(), []int{3} } func (x *WhitePageListRequest) GetUserId() int64 { @@ -228,7 +283,7 @@ type GetRecordByIdRequest struct { func (x *GetRecordByIdRequest) Reset() { *x = GetRecordByIdRequest{} if protoimpl.UnsafeEnabled { - mi := &file_sentinel_proto_msgTypes[3] + mi := &file_sentinel_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -241,7 +296,7 @@ func (x *GetRecordByIdRequest) String() string { func (*GetRecordByIdRequest) ProtoMessage() {} func (x *GetRecordByIdRequest) ProtoReflect() protoreflect.Message { - mi := &file_sentinel_proto_msgTypes[3] + mi := &file_sentinel_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -254,7 +309,7 @@ func (x *GetRecordByIdRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRecordByIdRequest.ProtoReflect.Descriptor instead. func (*GetRecordByIdRequest) Descriptor() ([]byte, []int) { - return file_sentinel_proto_rawDescGZIP(), []int{3} + return file_sentinel_proto_rawDescGZIP(), []int{4} } func (x *GetRecordByIdRequest) GetId() int64 { @@ -275,7 +330,7 @@ type GetRecordByCodeRequest struct { func (x *GetRecordByCodeRequest) Reset() { *x = GetRecordByCodeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_sentinel_proto_msgTypes[4] + mi := &file_sentinel_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -288,7 +343,7 @@ func (x *GetRecordByCodeRequest) String() string { func (*GetRecordByCodeRequest) ProtoMessage() {} func (x *GetRecordByCodeRequest) ProtoReflect() protoreflect.Message { - mi := &file_sentinel_proto_msgTypes[4] + mi := &file_sentinel_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -301,7 +356,7 @@ func (x *GetRecordByCodeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRecordByCodeRequest.ProtoReflect.Descriptor instead. func (*GetRecordByCodeRequest) Descriptor() ([]byte, []int) { - return file_sentinel_proto_rawDescGZIP(), []int{4} + return file_sentinel_proto_rawDescGZIP(), []int{5} } func (x *GetRecordByCodeRequest) GetCode() string { @@ -326,7 +381,7 @@ type Whitelist struct { func (x *Whitelist) Reset() { *x = Whitelist{} if protoimpl.UnsafeEnabled { - mi := &file_sentinel_proto_msgTypes[5] + mi := &file_sentinel_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -339,7 +394,7 @@ func (x *Whitelist) String() string { func (*Whitelist) ProtoMessage() {} func (x *Whitelist) ProtoReflect() protoreflect.Message { - mi := &file_sentinel_proto_msgTypes[5] + mi := &file_sentinel_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -352,7 +407,7 @@ func (x *Whitelist) ProtoReflect() protoreflect.Message { // Deprecated: Use Whitelist.ProtoReflect.Descriptor instead. func (*Whitelist) Descriptor() ([]byte, []int) { - return file_sentinel_proto_rawDescGZIP(), []int{5} + return file_sentinel_proto_rawDescGZIP(), []int{6} } func (x *Whitelist) GetId() int64 { @@ -402,7 +457,7 @@ type CreateWhitelistRequest struct { func (x *CreateWhitelistRequest) Reset() { *x = CreateWhitelistRequest{} if protoimpl.UnsafeEnabled { - mi := &file_sentinel_proto_msgTypes[6] + mi := &file_sentinel_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -415,7 +470,7 @@ func (x *CreateWhitelistRequest) String() string { func (*CreateWhitelistRequest) ProtoMessage() {} func (x *CreateWhitelistRequest) ProtoReflect() protoreflect.Message { - mi := &file_sentinel_proto_msgTypes[6] + mi := &file_sentinel_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -428,7 +483,7 @@ func (x *CreateWhitelistRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateWhitelistRequest.ProtoReflect.Descriptor instead. func (*CreateWhitelistRequest) Descriptor() ([]byte, []int) { - return file_sentinel_proto_rawDescGZIP(), []int{6} + return file_sentinel_proto_rawDescGZIP(), []int{7} } func (x *CreateWhitelistRequest) GetUserId() int64 { @@ -457,7 +512,7 @@ type UpdateWhitelistRequest struct { func (x *UpdateWhitelistRequest) Reset() { *x = UpdateWhitelistRequest{} if protoimpl.UnsafeEnabled { - mi := &file_sentinel_proto_msgTypes[7] + mi := &file_sentinel_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -470,7 +525,7 @@ func (x *UpdateWhitelistRequest) String() string { func (*UpdateWhitelistRequest) ProtoMessage() {} func (x *UpdateWhitelistRequest) ProtoReflect() protoreflect.Message { - mi := &file_sentinel_proto_msgTypes[7] + mi := &file_sentinel_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -483,7 +538,7 @@ func (x *UpdateWhitelistRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateWhitelistRequest.ProtoReflect.Descriptor instead. func (*UpdateWhitelistRequest) Descriptor() ([]byte, []int) { - return file_sentinel_proto_rawDescGZIP(), []int{7} + return file_sentinel_proto_rawDescGZIP(), []int{8} } func (x *UpdateWhitelistRequest) GetId() int64 { @@ -511,7 +566,7 @@ type DeleteWhitelistRequest struct { func (x *DeleteWhitelistRequest) Reset() { *x = DeleteWhitelistRequest{} if protoimpl.UnsafeEnabled { - mi := &file_sentinel_proto_msgTypes[8] + mi := &file_sentinel_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -524,7 +579,7 @@ func (x *DeleteWhitelistRequest) String() string { func (*DeleteWhitelistRequest) ProtoMessage() {} func (x *DeleteWhitelistRequest) ProtoReflect() protoreflect.Message { - mi := &file_sentinel_proto_msgTypes[8] + mi := &file_sentinel_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -537,7 +592,7 @@ func (x *DeleteWhitelistRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteWhitelistRequest.ProtoReflect.Descriptor instead. func (*DeleteWhitelistRequest) Descriptor() ([]byte, []int) { - return file_sentinel_proto_rawDescGZIP(), []int{8} + return file_sentinel_proto_rawDescGZIP(), []int{9} } func (x *DeleteWhitelistRequest) GetId() int64 { @@ -559,7 +614,7 @@ type WhitelistResponse struct { func (x *WhitelistResponse) Reset() { *x = WhitelistResponse{} if protoimpl.UnsafeEnabled { - mi := &file_sentinel_proto_msgTypes[9] + mi := &file_sentinel_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -572,7 +627,7 @@ func (x *WhitelistResponse) String() string { func (*WhitelistResponse) ProtoMessage() {} func (x *WhitelistResponse) ProtoReflect() protoreflect.Message { - mi := &file_sentinel_proto_msgTypes[9] + mi := &file_sentinel_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -585,7 +640,7 @@ func (x *WhitelistResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use WhitelistResponse.ProtoReflect.Descriptor instead. func (*WhitelistResponse) Descriptor() ([]byte, []int) { - return file_sentinel_proto_rawDescGZIP(), []int{9} + return file_sentinel_proto_rawDescGZIP(), []int{10} } func (x *WhitelistResponse) GetTotal() int64 { @@ -619,7 +674,7 @@ type Secret struct { func (x *Secret) Reset() { *x = Secret{} if protoimpl.UnsafeEnabled { - mi := &file_sentinel_proto_msgTypes[10] + mi := &file_sentinel_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -632,7 +687,7 @@ func (x *Secret) String() string { func (*Secret) ProtoMessage() {} func (x *Secret) ProtoReflect() protoreflect.Message { - mi := &file_sentinel_proto_msgTypes[10] + mi := &file_sentinel_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -645,7 +700,7 @@ func (x *Secret) ProtoReflect() protoreflect.Message { // Deprecated: Use Secret.ProtoReflect.Descriptor instead. func (*Secret) Descriptor() ([]byte, []int) { - return file_sentinel_proto_rawDescGZIP(), []int{10} + return file_sentinel_proto_rawDescGZIP(), []int{11} } func (x *Secret) GetId() int64 { @@ -701,7 +756,7 @@ type GetSecretBySecretIdRequest struct { func (x *GetSecretBySecretIdRequest) Reset() { *x = GetSecretBySecretIdRequest{} if protoimpl.UnsafeEnabled { - mi := &file_sentinel_proto_msgTypes[11] + mi := &file_sentinel_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -714,7 +769,7 @@ func (x *GetSecretBySecretIdRequest) String() string { func (*GetSecretBySecretIdRequest) ProtoMessage() {} func (x *GetSecretBySecretIdRequest) ProtoReflect() protoreflect.Message { - mi := &file_sentinel_proto_msgTypes[11] + mi := &file_sentinel_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -727,7 +782,7 @@ func (x *GetSecretBySecretIdRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSecretBySecretIdRequest.ProtoReflect.Descriptor instead. func (*GetSecretBySecretIdRequest) Descriptor() ([]byte, []int) { - return file_sentinel_proto_rawDescGZIP(), []int{11} + return file_sentinel_proto_rawDescGZIP(), []int{12} } func (x *GetSecretBySecretIdRequest) GetSecretId() string { @@ -748,7 +803,7 @@ type CreateSecretRequest struct { func (x *CreateSecretRequest) Reset() { *x = CreateSecretRequest{} if protoimpl.UnsafeEnabled { - mi := &file_sentinel_proto_msgTypes[12] + mi := &file_sentinel_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -761,7 +816,7 @@ func (x *CreateSecretRequest) String() string { func (*CreateSecretRequest) ProtoMessage() {} func (x *CreateSecretRequest) ProtoReflect() protoreflect.Message { - mi := &file_sentinel_proto_msgTypes[12] + mi := &file_sentinel_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -774,7 +829,7 @@ func (x *CreateSecretRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateSecretRequest.ProtoReflect.Descriptor instead. func (*CreateSecretRequest) Descriptor() ([]byte, []int) { - return file_sentinel_proto_rawDescGZIP(), []int{12} + return file_sentinel_proto_rawDescGZIP(), []int{13} } func (x *CreateSecretRequest) GetUserId() int64 { @@ -797,7 +852,7 @@ type UpdateSecretRequest struct { func (x *UpdateSecretRequest) Reset() { *x = UpdateSecretRequest{} if protoimpl.UnsafeEnabled { - mi := &file_sentinel_proto_msgTypes[13] + mi := &file_sentinel_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -810,7 +865,7 @@ func (x *UpdateSecretRequest) String() string { func (*UpdateSecretRequest) ProtoMessage() {} func (x *UpdateSecretRequest) ProtoReflect() protoreflect.Message { - mi := &file_sentinel_proto_msgTypes[13] + mi := &file_sentinel_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -823,7 +878,7 @@ func (x *UpdateSecretRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateSecretRequest.ProtoReflect.Descriptor instead. func (*UpdateSecretRequest) Descriptor() ([]byte, []int) { - return file_sentinel_proto_rawDescGZIP(), []int{13} + return file_sentinel_proto_rawDescGZIP(), []int{14} } func (x *UpdateSecretRequest) GetId() int64 { @@ -858,7 +913,7 @@ type DeleteSecretRequest struct { func (x *DeleteSecretRequest) Reset() { *x = DeleteSecretRequest{} if protoimpl.UnsafeEnabled { - mi := &file_sentinel_proto_msgTypes[14] + mi := &file_sentinel_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -871,7 +926,7 @@ func (x *DeleteSecretRequest) String() string { func (*DeleteSecretRequest) ProtoMessage() {} func (x *DeleteSecretRequest) ProtoReflect() protoreflect.Message { - mi := &file_sentinel_proto_msgTypes[14] + mi := &file_sentinel_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -884,7 +939,7 @@ func (x *DeleteSecretRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteSecretRequest.ProtoReflect.Descriptor instead. func (*DeleteSecretRequest) Descriptor() ([]byte, []int) { - return file_sentinel_proto_rawDescGZIP(), []int{14} + return file_sentinel_proto_rawDescGZIP(), []int{15} } func (x *DeleteSecretRequest) GetId() int64 { @@ -906,7 +961,7 @@ type SecretResponse struct { func (x *SecretResponse) Reset() { *x = SecretResponse{} if protoimpl.UnsafeEnabled { - mi := &file_sentinel_proto_msgTypes[15] + mi := &file_sentinel_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -919,7 +974,7 @@ func (x *SecretResponse) String() string { func (*SecretResponse) ProtoMessage() {} func (x *SecretResponse) ProtoReflect() protoreflect.Message { - mi := &file_sentinel_proto_msgTypes[15] + mi := &file_sentinel_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -932,7 +987,7 @@ func (x *SecretResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SecretResponse.ProtoReflect.Descriptor instead. func (*SecretResponse) Descriptor() ([]byte, []int) { - return file_sentinel_proto_rawDescGZIP(), []int{15} + return file_sentinel_proto_rawDescGZIP(), []int{16} } func (x *SecretResponse) GetTotal() int64 { @@ -949,7 +1004,6 @@ func (x *SecretResponse) GetSecrets() []*Secret { return nil } -// Message for Products operations type Product struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -969,7 +1023,7 @@ type Product struct { func (x *Product) Reset() { *x = Product{} if protoimpl.UnsafeEnabled { - mi := &file_sentinel_proto_msgTypes[16] + mi := &file_sentinel_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -982,7 +1036,7 @@ func (x *Product) String() string { func (*Product) ProtoMessage() {} func (x *Product) ProtoReflect() protoreflect.Message { - mi := &file_sentinel_proto_msgTypes[16] + mi := &file_sentinel_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -995,7 +1049,7 @@ func (x *Product) ProtoReflect() protoreflect.Message { // Deprecated: Use Product.ProtoReflect.Descriptor instead. func (*Product) Descriptor() ([]byte, []int) { - return file_sentinel_proto_rawDescGZIP(), []int{16} + return file_sentinel_proto_rawDescGZIP(), []int{17} } func (x *Product) GetId() int64 { @@ -1077,7 +1131,7 @@ type CreateProductRequest struct { func (x *CreateProductRequest) Reset() { *x = CreateProductRequest{} if protoimpl.UnsafeEnabled { - mi := &file_sentinel_proto_msgTypes[17] + mi := &file_sentinel_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1090,7 +1144,7 @@ func (x *CreateProductRequest) String() string { func (*CreateProductRequest) ProtoMessage() {} func (x *CreateProductRequest) ProtoReflect() protoreflect.Message { - mi := &file_sentinel_proto_msgTypes[17] + mi := &file_sentinel_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1103,7 +1157,7 @@ func (x *CreateProductRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateProductRequest.ProtoReflect.Descriptor instead. func (*CreateProductRequest) Descriptor() ([]byte, []int) { - return file_sentinel_proto_rawDescGZIP(), []int{17} + return file_sentinel_proto_rawDescGZIP(), []int{18} } func (x *CreateProductRequest) GetProductName() string { @@ -1165,7 +1219,7 @@ type UpdateProductRequest struct { func (x *UpdateProductRequest) Reset() { *x = UpdateProductRequest{} if protoimpl.UnsafeEnabled { - mi := &file_sentinel_proto_msgTypes[18] + mi := &file_sentinel_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1178,7 +1232,7 @@ func (x *UpdateProductRequest) String() string { func (*UpdateProductRequest) ProtoMessage() {} func (x *UpdateProductRequest) ProtoReflect() protoreflect.Message { - mi := &file_sentinel_proto_msgTypes[18] + mi := &file_sentinel_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1191,7 +1245,7 @@ func (x *UpdateProductRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateProductRequest.ProtoReflect.Descriptor instead. func (*UpdateProductRequest) Descriptor() ([]byte, []int) { - return file_sentinel_proto_rawDescGZIP(), []int{18} + return file_sentinel_proto_rawDescGZIP(), []int{19} } func (x *UpdateProductRequest) GetId() int64 { @@ -1254,7 +1308,7 @@ type DeleteProductRequest struct { func (x *DeleteProductRequest) Reset() { *x = DeleteProductRequest{} if protoimpl.UnsafeEnabled { - mi := &file_sentinel_proto_msgTypes[19] + mi := &file_sentinel_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1267,7 +1321,7 @@ func (x *DeleteProductRequest) String() string { func (*DeleteProductRequest) ProtoMessage() {} func (x *DeleteProductRequest) ProtoReflect() protoreflect.Message { - mi := &file_sentinel_proto_msgTypes[19] + mi := &file_sentinel_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1280,7 +1334,7 @@ func (x *DeleteProductRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteProductRequest.ProtoReflect.Descriptor instead. func (*DeleteProductRequest) Descriptor() ([]byte, []int) { - return file_sentinel_proto_rawDescGZIP(), []int{19} + return file_sentinel_proto_rawDescGZIP(), []int{20} } func (x *DeleteProductRequest) GetId() int64 { @@ -1302,7 +1356,7 @@ type ProductResponse struct { func (x *ProductResponse) Reset() { *x = ProductResponse{} if protoimpl.UnsafeEnabled { - mi := &file_sentinel_proto_msgTypes[20] + mi := &file_sentinel_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1315,7 +1369,7 @@ func (x *ProductResponse) String() string { func (*ProductResponse) ProtoMessage() {} func (x *ProductResponse) ProtoReflect() protoreflect.Message { - mi := &file_sentinel_proto_msgTypes[20] + mi := &file_sentinel_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1328,7 +1382,7 @@ func (x *ProductResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ProductResponse.ProtoReflect.Descriptor instead. func (*ProductResponse) Descriptor() ([]byte, []int) { - return file_sentinel_proto_rawDescGZIP(), []int{20} + return file_sentinel_proto_rawDescGZIP(), []int{21} } func (x *ProductResponse) GetTotal() int64 { @@ -1345,7 +1399,6 @@ func (x *ProductResponse) GetProducts() []*Product { return nil } -// Message for UserProducts operations type UserProductEmptyResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1355,7 +1408,7 @@ type UserProductEmptyResponse struct { func (x *UserProductEmptyResponse) Reset() { *x = UserProductEmptyResponse{} if protoimpl.UnsafeEnabled { - mi := &file_sentinel_proto_msgTypes[21] + mi := &file_sentinel_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1368,7 +1421,7 @@ func (x *UserProductEmptyResponse) String() string { func (*UserProductEmptyResponse) ProtoMessage() {} func (x *UserProductEmptyResponse) ProtoReflect() protoreflect.Message { - mi := &file_sentinel_proto_msgTypes[21] + mi := &file_sentinel_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1381,7 +1434,7 @@ func (x *UserProductEmptyResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UserProductEmptyResponse.ProtoReflect.Descriptor instead. func (*UserProductEmptyResponse) Descriptor() ([]byte, []int) { - return file_sentinel_proto_rawDescGZIP(), []int{21} + return file_sentinel_proto_rawDescGZIP(), []int{22} } type UserProductItem struct { @@ -1403,7 +1456,7 @@ type UserProductItem struct { func (x *UserProductItem) Reset() { *x = UserProductItem{} if protoimpl.UnsafeEnabled { - mi := &file_sentinel_proto_msgTypes[22] + mi := &file_sentinel_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1416,7 +1469,7 @@ func (x *UserProductItem) String() string { func (*UserProductItem) ProtoMessage() {} func (x *UserProductItem) ProtoReflect() protoreflect.Message { - mi := &file_sentinel_proto_msgTypes[22] + mi := &file_sentinel_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1429,7 +1482,7 @@ func (x *UserProductItem) ProtoReflect() protoreflect.Message { // Deprecated: Use UserProductItem.ProtoReflect.Descriptor instead. func (*UserProductItem) Descriptor() ([]byte, []int) { - return file_sentinel_proto_rawDescGZIP(), []int{22} + return file_sentinel_proto_rawDescGZIP(), []int{23} } func (x *UserProductItem) GetId() int64 { @@ -1507,7 +1560,7 @@ type CreateUserProductRequest struct { func (x *CreateUserProductRequest) Reset() { *x = CreateUserProductRequest{} if protoimpl.UnsafeEnabled { - mi := &file_sentinel_proto_msgTypes[23] + mi := &file_sentinel_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1520,7 +1573,7 @@ func (x *CreateUserProductRequest) String() string { func (*CreateUserProductRequest) ProtoMessage() {} func (x *CreateUserProductRequest) ProtoReflect() protoreflect.Message { - mi := &file_sentinel_proto_msgTypes[23] + mi := &file_sentinel_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1533,7 +1586,7 @@ func (x *CreateUserProductRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateUserProductRequest.ProtoReflect.Descriptor instead. func (*CreateUserProductRequest) Descriptor() ([]byte, []int) { - return file_sentinel_proto_rawDescGZIP(), []int{23} + return file_sentinel_proto_rawDescGZIP(), []int{24} } func (x *CreateUserProductRequest) GetUserId() int64 { @@ -1561,7 +1614,7 @@ type UpdateUserProductRequest struct { func (x *UpdateUserProductRequest) Reset() { *x = UpdateUserProductRequest{} if protoimpl.UnsafeEnabled { - mi := &file_sentinel_proto_msgTypes[24] + mi := &file_sentinel_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1574,7 +1627,7 @@ func (x *UpdateUserProductRequest) String() string { func (*UpdateUserProductRequest) ProtoMessage() {} func (x *UpdateUserProductRequest) ProtoReflect() protoreflect.Message { - mi := &file_sentinel_proto_msgTypes[24] + mi := &file_sentinel_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1587,7 +1640,7 @@ func (x *UpdateUserProductRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateUserProductRequest.ProtoReflect.Descriptor instead. func (*UpdateUserProductRequest) Descriptor() ([]byte, []int) { - return file_sentinel_proto_rawDescGZIP(), []int{24} + return file_sentinel_proto_rawDescGZIP(), []int{25} } func (x *UpdateUserProductRequest) GetId() int64 { @@ -1608,7 +1661,7 @@ type DeleteUserProductRequest struct { func (x *DeleteUserProductRequest) Reset() { *x = DeleteUserProductRequest{} if protoimpl.UnsafeEnabled { - mi := &file_sentinel_proto_msgTypes[25] + mi := &file_sentinel_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1621,7 +1674,7 @@ func (x *DeleteUserProductRequest) String() string { func (*DeleteUserProductRequest) ProtoMessage() {} func (x *DeleteUserProductRequest) ProtoReflect() protoreflect.Message { - mi := &file_sentinel_proto_msgTypes[25] + mi := &file_sentinel_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1634,7 +1687,7 @@ func (x *DeleteUserProductRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteUserProductRequest.ProtoReflect.Descriptor instead. func (*DeleteUserProductRequest) Descriptor() ([]byte, []int) { - return file_sentinel_proto_rawDescGZIP(), []int{25} + return file_sentinel_proto_rawDescGZIP(), []int{26} } func (x *DeleteUserProductRequest) GetId() int64 { @@ -1644,7 +1697,7 @@ func (x *DeleteUserProductRequest) GetId() int64 { return 0 } -type UserProductResponse struct { +type UserProductPageListResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -1653,10 +1706,67 @@ type UserProductResponse struct { UserProducts []*UserProductItem `protobuf:"bytes,2,rep,name=user_products,json=userProducts,proto3" json:"user_products,omitempty"` } +func (x *UserProductPageListResponse) Reset() { + *x = UserProductPageListResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_sentinel_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UserProductPageListResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UserProductPageListResponse) ProtoMessage() {} + +func (x *UserProductPageListResponse) ProtoReflect() protoreflect.Message { + mi := &file_sentinel_proto_msgTypes[27] + 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 UserProductPageListResponse.ProtoReflect.Descriptor instead. +func (*UserProductPageListResponse) Descriptor() ([]byte, []int) { + return file_sentinel_proto_rawDescGZIP(), []int{27} +} + +func (x *UserProductPageListResponse) GetTotal() int64 { + if x != nil { + return x.Total + } + return 0 +} + +func (x *UserProductPageListResponse) GetUserProducts() []*UserProductItem { + if x != nil { + return x.UserProducts + } + return nil +} + +type UserProductResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` // 用户产品ID + UserId int64 `protobuf:"varint,2,opt,name=userId,proto3" json:"userId,omitempty"` + ProductId int64 `protobuf:"varint,3,opt,name=productId,proto3" json:"productId,omitempty"` // 产品ID + ProductPrice float64 `protobuf:"fixed64,4,opt,name=productPrice,proto3" json:"productPrice,omitempty"` // 产品价格 +} + func (x *UserProductResponse) Reset() { *x = UserProductResponse{} if protoimpl.UnsafeEnabled { - mi := &file_sentinel_proto_msgTypes[26] + mi := &file_sentinel_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1669,7 +1779,7 @@ func (x *UserProductResponse) String() string { func (*UserProductResponse) ProtoMessage() {} func (x *UserProductResponse) ProtoReflect() protoreflect.Message { - mi := &file_sentinel_proto_msgTypes[26] + mi := &file_sentinel_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1682,21 +1792,35 @@ func (x *UserProductResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UserProductResponse.ProtoReflect.Descriptor instead. func (*UserProductResponse) Descriptor() ([]byte, []int) { - return file_sentinel_proto_rawDescGZIP(), []int{26} + return file_sentinel_proto_rawDescGZIP(), []int{28} } -func (x *UserProductResponse) GetTotal() int64 { +func (x *UserProductResponse) GetId() int64 { if x != nil { - return x.Total + return x.Id } return 0 } -func (x *UserProductResponse) GetUserProducts() []*UserProductItem { +func (x *UserProductResponse) GetUserId() int64 { if x != nil { - return x.UserProducts + return x.UserId } - return nil + return 0 +} + +func (x *UserProductResponse) GetProductId() int64 { + if x != nil { + return x.ProductId + } + return 0 +} + +func (x *UserProductResponse) GetProductPrice() float64 { + if x != nil { + return x.ProductPrice + } + return 0 } type MatchingUserIdProductCodeRequest struct { @@ -1711,7 +1835,7 @@ type MatchingUserIdProductCodeRequest struct { func (x *MatchingUserIdProductCodeRequest) Reset() { *x = MatchingUserIdProductCodeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_sentinel_proto_msgTypes[27] + mi := &file_sentinel_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1724,7 +1848,7 @@ func (x *MatchingUserIdProductCodeRequest) String() string { func (*MatchingUserIdProductCodeRequest) ProtoMessage() {} func (x *MatchingUserIdProductCodeRequest) ProtoReflect() protoreflect.Message { - mi := &file_sentinel_proto_msgTypes[27] + mi := &file_sentinel_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1737,7 +1861,7 @@ func (x *MatchingUserIdProductCodeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use MatchingUserIdProductCodeRequest.ProtoReflect.Descriptor instead. func (*MatchingUserIdProductCodeRequest) Descriptor() ([]byte, []int) { - return file_sentinel_proto_rawDescGZIP(), []int{27} + return file_sentinel_proto_rawDescGZIP(), []int{29} } func (x *MatchingUserIdProductCodeRequest) GetId() int64 { @@ -1765,7 +1889,7 @@ type MatchResponse struct { func (x *MatchResponse) Reset() { *x = MatchResponse{} if protoimpl.UnsafeEnabled { - mi := &file_sentinel_proto_msgTypes[28] + mi := &file_sentinel_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1778,7 +1902,7 @@ func (x *MatchResponse) String() string { func (*MatchResponse) ProtoMessage() {} func (x *MatchResponse) ProtoReflect() protoreflect.Message { - mi := &file_sentinel_proto_msgTypes[28] + mi := &file_sentinel_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1791,7 +1915,7 @@ func (x *MatchResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use MatchResponse.ProtoReflect.Descriptor instead. func (*MatchResponse) Descriptor() ([]byte, []int) { - return file_sentinel_proto_rawDescGZIP(), []int{28} + return file_sentinel_proto_rawDescGZIP(), []int{30} } func (x *MatchResponse) GetMatch() bool { @@ -1812,7 +1936,7 @@ type MatchWhitelistByIpRequest struct { func (x *MatchWhitelistByIpRequest) Reset() { *x = MatchWhitelistByIpRequest{} if protoimpl.UnsafeEnabled { - mi := &file_sentinel_proto_msgTypes[29] + mi := &file_sentinel_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1825,7 +1949,7 @@ func (x *MatchWhitelistByIpRequest) String() string { func (*MatchWhitelistByIpRequest) ProtoMessage() {} func (x *MatchWhitelistByIpRequest) ProtoReflect() protoreflect.Message { - mi := &file_sentinel_proto_msgTypes[29] + mi := &file_sentinel_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1838,7 +1962,7 @@ func (x *MatchWhitelistByIpRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use MatchWhitelistByIpRequest.ProtoReflect.Descriptor instead. func (*MatchWhitelistByIpRequest) Descriptor() ([]byte, []int) { - return file_sentinel_proto_rawDescGZIP(), []int{29} + return file_sentinel_proto_rawDescGZIP(), []int{31} } func (x *MatchWhitelistByIpRequest) GetIp() string { @@ -1860,7 +1984,7 @@ type AliTopUpRequest struct { func (x *AliTopUpRequest) Reset() { *x = AliTopUpRequest{} if protoimpl.UnsafeEnabled { - mi := &file_sentinel_proto_msgTypes[30] + mi := &file_sentinel_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1873,7 +1997,7 @@ func (x *AliTopUpRequest) String() string { func (*AliTopUpRequest) ProtoMessage() {} func (x *AliTopUpRequest) ProtoReflect() protoreflect.Message { - mi := &file_sentinel_proto_msgTypes[30] + mi := &file_sentinel_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1886,7 +2010,7 @@ func (x *AliTopUpRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AliTopUpRequest.ProtoReflect.Descriptor instead. func (*AliTopUpRequest) Descriptor() ([]byte, []int) { - return file_sentinel_proto_rawDescGZIP(), []int{30} + return file_sentinel_proto_rawDescGZIP(), []int{32} } func (x *AliTopUpRequest) GetUserId() int64 { @@ -1914,7 +2038,7 @@ type AliTopUpResponse struct { func (x *AliTopUpResponse) Reset() { *x = AliTopUpResponse{} if protoimpl.UnsafeEnabled { - mi := &file_sentinel_proto_msgTypes[31] + mi := &file_sentinel_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1927,7 +2051,7 @@ func (x *AliTopUpResponse) String() string { func (*AliTopUpResponse) ProtoMessage() {} func (x *AliTopUpResponse) ProtoReflect() protoreflect.Message { - mi := &file_sentinel_proto_msgTypes[31] + mi := &file_sentinel_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1940,7 +2064,7 @@ func (x *AliTopUpResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use AliTopUpResponse.ProtoReflect.Descriptor instead. func (*AliTopUpResponse) Descriptor() ([]byte, []int) { - return file_sentinel_proto_rawDescGZIP(), []int{31} + return file_sentinel_proto_rawDescGZIP(), []int{33} } func (x *AliTopUpResponse) GetPayUrl() string { @@ -1961,7 +2085,7 @@ type AliTopUpNotifyRequest struct { func (x *AliTopUpNotifyRequest) Reset() { *x = AliTopUpNotifyRequest{} if protoimpl.UnsafeEnabled { - mi := &file_sentinel_proto_msgTypes[32] + mi := &file_sentinel_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1974,7 +2098,7 @@ func (x *AliTopUpNotifyRequest) String() string { func (*AliTopUpNotifyRequest) ProtoMessage() {} func (x *AliTopUpNotifyRequest) ProtoReflect() protoreflect.Message { - mi := &file_sentinel_proto_msgTypes[32] + mi := &file_sentinel_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1987,7 +2111,7 @@ func (x *AliTopUpNotifyRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AliTopUpNotifyRequest.ProtoReflect.Descriptor instead. func (*AliTopUpNotifyRequest) Descriptor() ([]byte, []int) { - return file_sentinel_proto_rawDescGZIP(), []int{32} + return file_sentinel_proto_rawDescGZIP(), []int{34} } func (x *AliTopUpNotifyRequest) GetRawForm() string { @@ -2008,7 +2132,7 @@ type AliTopUpNotifyResponse struct { func (x *AliTopUpNotifyResponse) Reset() { *x = AliTopUpNotifyResponse{} if protoimpl.UnsafeEnabled { - mi := &file_sentinel_proto_msgTypes[33] + mi := &file_sentinel_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2021,7 +2145,7 @@ func (x *AliTopUpNotifyResponse) String() string { func (*AliTopUpNotifyResponse) ProtoMessage() {} func (x *AliTopUpNotifyResponse) ProtoReflect() protoreflect.Message { - mi := &file_sentinel_proto_msgTypes[33] + mi := &file_sentinel_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2034,7 +2158,7 @@ func (x *AliTopUpNotifyResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use AliTopUpNotifyResponse.ProtoReflect.Descriptor instead. func (*AliTopUpNotifyResponse) Descriptor() ([]byte, []int) { - return file_sentinel_proto_rawDescGZIP(), []int{33} + return file_sentinel_proto_rawDescGZIP(), []int{35} } func (x *AliTopUpNotifyResponse) GetSuccess() bool { @@ -2062,276 +2186,293 @@ var file_sentinel_proto_rawDesc = []byte{ 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x60, - 0x0a, 0x14, 0x57, 0x68, 0x69, 0x74, 0x65, 0x50, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x70, - 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, - 0x22, 0x26, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x42, 0x79, 0x49, - 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0x2c, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x52, - 0x65, 0x63, 0x6f, 0x72, 0x64, 0x42, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x95, 0x01, 0x0a, 0x09, 0x57, 0x68, 0x69, 0x74, 0x65, - 0x6c, 0x69, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x21, 0x0a, - 0x0c, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x49, 0x70, - 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, - 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x54, - 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, - 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x69, - 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, - 0x73, 0x74, 0x49, 0x70, 0x22, 0x4b, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x68, - 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x4b, + 0x0a, 0x11, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, + 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x22, 0x60, 0x0a, 0x14, 0x57, + 0x68, 0x69, 0x74, 0x65, 0x50, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, + 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x26, 0x0a, + 0x14, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0x2c, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x42, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, + 0x6f, 0x64, 0x65, 0x22, 0x95, 0x01, 0x0a, 0x09, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, + 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x68, + 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x49, 0x70, 0x12, 0x1d, 0x0a, + 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x54, 0x0a, 0x16, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x49, - 0x70, 0x22, 0x28, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x68, 0x69, 0x74, 0x65, + 0x70, 0x22, 0x4b, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0x55, 0x0a, 0x11, 0x57, - 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x2a, 0x0a, 0x0a, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, - 0x69, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x57, 0x68, 0x69, - 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x0a, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, - 0x74, 0x73, 0x22, 0xa5, 0x01, 0x0a, 0x06, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, - 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, - 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x61, 0x65, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x65, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x1d, 0x0a, 0x0a, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x39, 0x0a, 0x1a, 0x47, 0x65, - 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x42, 0x79, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x49, - 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x49, 0x64, 0x22, 0x2e, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, - 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, - 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x5b, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, - 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x61, 0x65, 0x73, - 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x65, 0x73, 0x4b, - 0x65, 0x79, 0x22, 0x25, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0x49, 0x0a, 0x0e, 0x53, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, - 0x6c, 0x12, 0x21, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x07, 0x73, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x73, 0x22, 0xc1, 0x02, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x63, - 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2f, 0x0a, 0x13, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, - 0x74, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x12, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x44, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, - 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x70, 0x72, - 0x6f, 0x64, 0x75, 0x63, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x80, 0x02, 0x0a, 0x14, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, - 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2f, 0x0a, 0x13, 0x70, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x44, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x27, 0x0a, - 0x0f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, - 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, - 0x74, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x70, - 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x22, 0x90, 0x02, 0x0a, 0x14, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, - 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2f, 0x0a, 0x13, 0x70, 0x72, - 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, - 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x70, - 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, - 0x64, 0x75, 0x63, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, - 0x64, 0x75, 0x63, 0x74, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, - 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x22, 0x26, - 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0x4d, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, - 0x24, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x08, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x08, 0x70, 0x72, 0x6f, - 0x64, 0x75, 0x63, 0x74, 0x73, 0x22, 0x1a, 0x0a, 0x18, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, - 0x64, 0x75, 0x63, 0x74, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0xb7, 0x02, 0x0a, 0x0f, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, - 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, - 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, - 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, 0x61, - 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, - 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, - 0x43, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x12, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x44, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, - 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x22, 0x0a, 0x0c, 0x70, - 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x01, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, - 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, - 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x52, 0x0a, 0x18, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, - 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x22, - 0x2a, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, - 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0x2a, 0x0a, 0x18, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0x62, 0x0a, 0x13, 0x55, 0x73, 0x65, 0x72, 0x50, - 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x35, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, - 0x64, 0x75, 0x63, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x55, 0x73, - 0x65, 0x72, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x0c, 0x75, - 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x22, 0x55, 0x0a, 0x20, 0x6d, - 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x50, 0x72, 0x6f, - 0x64, 0x75, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x6f, - 0x64, 0x65, 0x22, 0x25, 0x0a, 0x0d, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x2b, 0x0a, 0x19, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x42, 0x79, 0x49, 0x70, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x22, 0x42, 0x0a, 0x0f, 0x41, 0x6c, 0x69, 0x54, 0x6f, 0x70, - 0x55, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x77, + 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x49, 0x70, 0x22, 0x28, + 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0x55, 0x0a, 0x11, 0x57, 0x68, 0x69, 0x74, + 0x65, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x12, 0x2a, 0x0a, 0x0a, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, + 0x69, 0x73, 0x74, 0x52, 0x0a, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x73, 0x22, + 0xa5, 0x01, 0x0a, 0x06, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, + 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, + 0x72, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x49, 0x64, + 0x12, 0x17, 0x0a, 0x07, 0x61, 0x65, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x61, 0x65, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x39, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x53, 0x65, + 0x63, 0x72, 0x65, 0x74, 0x42, 0x79, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x49, 0x64, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, + 0x49, 0x64, 0x22, 0x2e, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, - 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x2b, 0x0a, 0x10, 0x41, 0x6c, - 0x69, 0x54, 0x6f, 0x70, 0x55, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, - 0x0a, 0x07, 0x70, 0x61, 0x79, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x70, 0x61, 0x79, 0x55, 0x72, 0x6c, 0x22, 0x32, 0x0a, 0x15, 0x41, 0x6c, 0x69, 0x54, 0x6f, - 0x70, 0x55, 0x70, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x19, 0x0a, 0x08, 0x72, 0x61, 0x77, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x72, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x22, 0x32, 0x0a, 0x16, 0x41, - 0x6c, 0x69, 0x54, 0x6f, 0x70, 0x55, 0x70, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x32, - 0xb4, 0x02, 0x0a, 0x09, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x36, 0x0a, - 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, - 0x12, 0x17, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0a, 0x2e, 0x57, 0x68, 0x69, 0x74, - 0x65, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, - 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x17, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x0a, 0x2e, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x36, 0x0a, - 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, - 0x12, 0x17, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0a, 0x2e, 0x57, 0x68, 0x69, 0x74, - 0x65, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x57, 0x68, 0x69, 0x74, - 0x65, 0x50, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x15, 0x2e, 0x57, 0x68, 0x69, 0x74, - 0x65, 0x50, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x12, 0x2e, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x12, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x57, 0x68, 0x69, - 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x42, 0x79, 0x49, 0x70, 0x12, 0x1a, 0x2e, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x42, 0x79, 0x49, 0x70, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xa9, 0x01, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x12, 0x2d, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x12, 0x14, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x07, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, - 0x12, 0x33, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x42, 0x79, 0x55, - 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x15, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, - 0x64, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x07, 0x2e, 0x53, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x3b, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x53, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x42, 0x79, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x2e, 0x47, + 0x49, 0x64, 0x22, 0x5b, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, + 0x63, 0x72, 0x65, 0x74, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x61, 0x65, 0x73, 0x5f, 0x6b, 0x65, + 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x65, 0x73, 0x4b, 0x65, 0x79, 0x22, + 0x25, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0x49, 0x0a, 0x0e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x21, + 0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x07, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, + 0x73, 0x22, 0xc1, 0x02, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, + 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, + 0x6f, 0x64, 0x65, 0x12, 0x2f, 0x0a, 0x13, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x12, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, + 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, + 0x0d, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x70, 0x72, + 0x69, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x75, + 0x63, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x80, 0x02, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, + 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x64, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, + 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2f, 0x0a, 0x13, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x12, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, + 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, + 0x6f, 0x64, 0x75, 0x63, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x72, + 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x70, + 0x72, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x64, + 0x75, 0x63, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x22, 0x90, 0x02, 0x0a, 0x14, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, + 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, + 0x75, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2f, 0x0a, 0x13, 0x70, 0x72, 0x6f, 0x64, 0x75, + 0x63, 0x74, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x44, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x64, + 0x75, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, + 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, + 0x74, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x70, + 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x22, 0x26, 0x0a, 0x14, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x02, 0x69, 0x64, 0x22, 0x4d, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x24, 0x0a, 0x08, + 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x08, + 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, + 0x74, 0x73, 0x22, 0x1a, 0x0a, 0x18, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, + 0x74, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb7, + 0x02, 0x0a, 0x0f, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x74, + 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, + 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x6f, 0x64, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, + 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x44, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x12, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x64, + 0x75, 0x63, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x64, + 0x75, 0x63, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, + 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x52, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, + 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x22, 0x2a, 0x0a, 0x18, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0x2a, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x02, 0x69, 0x64, 0x22, 0x6a, 0x0a, 0x1b, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x64, + 0x75, 0x63, 0x74, 0x50, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x35, 0x0a, 0x0d, 0x75, 0x73, 0x65, + 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x10, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x74, + 0x65, 0x6d, 0x52, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, + 0x22, 0x7f, 0x0a, 0x13, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, + 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x12, 0x22, 0x0a, + 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x01, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x50, 0x72, 0x69, 0x63, + 0x65, 0x22, 0x55, 0x0a, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x55, 0x73, 0x65, + 0x72, 0x49, 0x64, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, + 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, + 0x64, 0x75, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x25, 0x0a, 0x0d, 0x6d, 0x61, 0x74, 0x63, + 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x61, 0x74, + 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x22, + 0x2b, 0x0a, 0x19, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, + 0x74, 0x42, 0x79, 0x49, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x22, 0x42, 0x0a, 0x0f, + 0x41, 0x6c, 0x69, 0x54, 0x6f, 0x70, 0x55, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, + 0x22, 0x2b, 0x0a, 0x10, 0x41, 0x6c, 0x69, 0x54, 0x6f, 0x70, 0x55, 0x70, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x5f, 0x75, 0x72, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x79, 0x55, 0x72, 0x6c, 0x22, 0x32, 0x0a, + 0x15, 0x41, 0x6c, 0x69, 0x54, 0x6f, 0x70, 0x55, 0x70, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x61, 0x77, 0x5f, 0x66, 0x6f, + 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x61, 0x77, 0x46, 0x6f, 0x72, + 0x6d, 0x22, 0x32, 0x0a, 0x16, 0x41, 0x6c, 0x69, 0x54, 0x6f, 0x70, 0x55, 0x70, 0x4e, 0x6f, 0x74, + 0x69, 0x66, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, + 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x32, 0xb4, 0x02, 0x0a, 0x09, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, + 0x69, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x68, 0x69, + 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x17, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, + 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x0a, 0x2e, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x0f, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x17, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0a, 0x2e, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, + 0x69, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x68, 0x69, + 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x17, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, + 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x0a, 0x2e, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x10, 0x47, + 0x65, 0x74, 0x57, 0x68, 0x69, 0x74, 0x65, 0x50, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, + 0x15, 0x2e, 0x57, 0x68, 0x69, 0x74, 0x65, 0x50, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x12, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x42, 0x79, 0x49, 0x70, + 0x12, 0x1a, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, + 0x74, 0x42, 0x79, 0x49, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x6d, + 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xa9, 0x01, 0x0a, + 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x2d, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x14, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x07, 0x2e, + 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x33, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x15, 0x2e, 0x47, 0x65, + 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x07, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x3b, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x42, 0x79, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, - 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x07, 0x2e, 0x53, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x32, 0xc3, 0x02, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x30, - 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, - 0x15, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x08, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, - 0x12, 0x30, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, - 0x74, 0x12, 0x15, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x08, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x12, 0x30, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x74, 0x12, 0x15, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x08, 0x2e, 0x50, 0x72, 0x6f, - 0x64, 0x75, 0x63, 0x74, 0x12, 0x38, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x50, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x10, 0x2e, 0x50, 0x61, 0x67, - 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x50, - 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, - 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x42, 0x79, 0x49, 0x64, - 0x12, 0x15, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x42, 0x79, 0x49, 0x64, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x08, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, - 0x74, 0x12, 0x35, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x42, - 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, - 0x64, 0x42, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x08, - 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x32, 0xf4, 0x01, 0x0a, 0x0b, 0x75, 0x73, 0x65, - 0x72, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x49, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x19, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x50, - 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, - 0x6f, 0x64, 0x75, 0x63, 0x74, 0x50, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x2e, - 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x75, 0x63, 0x74, 0x50, 0x61, 0x67, 0x65, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x55, 0x73, 0x65, 0x72, - 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x4e, 0x0a, 0x19, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x55, 0x73, 0x65, 0x72, 0x49, - 0x64, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x2e, 0x6d, - 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x50, 0x72, 0x6f, - 0x64, 0x75, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x0e, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, - 0x7b, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x55, 0x70, 0x12, 0x2f, 0x0a, 0x08, 0x41, 0x6c, 0x69, 0x54, - 0x6f, 0x70, 0x55, 0x70, 0x12, 0x10, 0x2e, 0x41, 0x6c, 0x69, 0x54, 0x6f, 0x70, 0x55, 0x70, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, 0x41, 0x6c, 0x69, 0x54, 0x6f, 0x70, 0x55, - 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x0e, 0x41, 0x6c, 0x69, - 0x54, 0x6f, 0x70, 0x55, 0x70, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x12, 0x16, 0x2e, 0x41, 0x6c, - 0x69, 0x54, 0x6f, 0x70, 0x55, 0x70, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x41, 0x6c, 0x69, 0x54, 0x6f, 0x70, 0x55, 0x70, 0x4e, 0x6f, - 0x74, 0x69, 0x66, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0c, 0x5a, 0x0a, - 0x2e, 0x2f, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x49, 0x64, 0x12, 0x1b, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x42, 0x79, + 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x07, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x32, 0xc3, 0x02, 0x0a, 0x07, 0x70, 0x72, 0x6f, + 0x64, 0x75, 0x63, 0x74, 0x12, 0x30, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, + 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x15, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, + 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x08, 0x2e, 0x50, + 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x30, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x15, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x08, + 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x30, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x15, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x08, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x38, 0x0a, 0x12, 0x47, 0x65, + 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x50, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, + 0x12, 0x10, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, + 0x63, 0x74, 0x42, 0x79, 0x49, 0x64, 0x12, 0x15, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x08, 0x2e, + 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x35, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x50, 0x72, + 0x6f, 0x64, 0x75, 0x63, 0x74, 0x42, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x2e, 0x47, 0x65, + 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x42, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x08, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x32, 0xb8, + 0x02, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x49, + 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x64, + 0x75, 0x63, 0x74, 0x12, 0x19, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, + 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, + 0x2e, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x16, 0x47, 0x65, 0x74, + 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x50, 0x61, 0x67, 0x65, 0x4c, + 0x69, 0x73, 0x74, 0x12, 0x1a, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x75, 0x63, 0x74, + 0x50, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1c, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x50, 0x61, 0x67, + 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, + 0x0e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, + 0x12, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x19, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x69, 0x6e, 0x67, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x50, 0x72, 0x6f, 0x64, 0x75, + 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, + 0x67, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x6f, + 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x6d, 0x61, 0x74, 0x63, + 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x7b, 0x0a, 0x05, 0x74, 0x6f, 0x70, + 0x55, 0x70, 0x12, 0x2f, 0x0a, 0x08, 0x41, 0x6c, 0x69, 0x54, 0x6f, 0x70, 0x55, 0x70, 0x12, 0x10, + 0x2e, 0x41, 0x6c, 0x69, 0x54, 0x6f, 0x70, 0x55, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x11, 0x2e, 0x41, 0x6c, 0x69, 0x54, 0x6f, 0x70, 0x55, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x0e, 0x41, 0x6c, 0x69, 0x54, 0x6f, 0x70, 0x55, 0x70, 0x4e, + 0x6f, 0x74, 0x69, 0x66, 0x79, 0x12, 0x16, 0x2e, 0x41, 0x6c, 0x69, 0x54, 0x6f, 0x70, 0x55, 0x70, + 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, + 0x41, 0x6c, 0x69, 0x54, 0x6f, 0x70, 0x55, 0x70, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0c, 0x5a, 0x0a, 0x2e, 0x2f, 0x73, 0x65, 0x6e, 0x74, + 0x69, 0x6e, 0x65, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2346,88 +2487,92 @@ func file_sentinel_proto_rawDescGZIP() []byte { return file_sentinel_proto_rawDescData } -var file_sentinel_proto_msgTypes = make([]protoimpl.MessageInfo, 34) +var file_sentinel_proto_msgTypes = make([]protoimpl.MessageInfo, 36) var file_sentinel_proto_goTypes = []any{ (*PageListRequest)(nil), // 0: PageListRequest (*UserProuctPageListRequest)(nil), // 1: UserProuctPageListRequest - (*WhitePageListRequest)(nil), // 2: WhitePageListRequest - (*GetRecordByIdRequest)(nil), // 3: GetRecordByIdRequest - (*GetRecordByCodeRequest)(nil), // 4: GetRecordByCodeRequest - (*Whitelist)(nil), // 5: Whitelist - (*CreateWhitelistRequest)(nil), // 6: CreateWhitelistRequest - (*UpdateWhitelistRequest)(nil), // 7: UpdateWhitelistRequest - (*DeleteWhitelistRequest)(nil), // 8: DeleteWhitelistRequest - (*WhitelistResponse)(nil), // 9: WhitelistResponse - (*Secret)(nil), // 10: Secret - (*GetSecretBySecretIdRequest)(nil), // 11: GetSecretBySecretIdRequest - (*CreateSecretRequest)(nil), // 12: CreateSecretRequest - (*UpdateSecretRequest)(nil), // 13: UpdateSecretRequest - (*DeleteSecretRequest)(nil), // 14: DeleteSecretRequest - (*SecretResponse)(nil), // 15: SecretResponse - (*Product)(nil), // 16: Product - (*CreateProductRequest)(nil), // 17: CreateProductRequest - (*UpdateProductRequest)(nil), // 18: UpdateProductRequest - (*DeleteProductRequest)(nil), // 19: DeleteProductRequest - (*ProductResponse)(nil), // 20: ProductResponse - (*UserProductEmptyResponse)(nil), // 21: UserProductEmptyResponse - (*UserProductItem)(nil), // 22: UserProductItem - (*CreateUserProductRequest)(nil), // 23: CreateUserProductRequest - (*UpdateUserProductRequest)(nil), // 24: UpdateUserProductRequest - (*DeleteUserProductRequest)(nil), // 25: DeleteUserProductRequest - (*UserProductResponse)(nil), // 26: UserProductResponse - (*MatchingUserIdProductCodeRequest)(nil), // 27: matchingUserIdProductCodeRequest - (*MatchResponse)(nil), // 28: matchResponse - (*MatchWhitelistByIpRequest)(nil), // 29: MatchWhitelistByIpRequest - (*AliTopUpRequest)(nil), // 30: AliTopUpRequest - (*AliTopUpResponse)(nil), // 31: AliTopUpResponse - (*AliTopUpNotifyRequest)(nil), // 32: AliTopUpNotifyRequest - (*AliTopUpNotifyResponse)(nil), // 33: AliTopUpNotifyResponse + (*UserProuctRequest)(nil), // 2: UserProuctRequest + (*WhitePageListRequest)(nil), // 3: WhitePageListRequest + (*GetRecordByIdRequest)(nil), // 4: GetRecordByIdRequest + (*GetRecordByCodeRequest)(nil), // 5: GetRecordByCodeRequest + (*Whitelist)(nil), // 6: Whitelist + (*CreateWhitelistRequest)(nil), // 7: CreateWhitelistRequest + (*UpdateWhitelistRequest)(nil), // 8: UpdateWhitelistRequest + (*DeleteWhitelistRequest)(nil), // 9: DeleteWhitelistRequest + (*WhitelistResponse)(nil), // 10: WhitelistResponse + (*Secret)(nil), // 11: Secret + (*GetSecretBySecretIdRequest)(nil), // 12: GetSecretBySecretIdRequest + (*CreateSecretRequest)(nil), // 13: CreateSecretRequest + (*UpdateSecretRequest)(nil), // 14: UpdateSecretRequest + (*DeleteSecretRequest)(nil), // 15: DeleteSecretRequest + (*SecretResponse)(nil), // 16: SecretResponse + (*Product)(nil), // 17: Product + (*CreateProductRequest)(nil), // 18: CreateProductRequest + (*UpdateProductRequest)(nil), // 19: UpdateProductRequest + (*DeleteProductRequest)(nil), // 20: DeleteProductRequest + (*ProductResponse)(nil), // 21: ProductResponse + (*UserProductEmptyResponse)(nil), // 22: UserProductEmptyResponse + (*UserProductItem)(nil), // 23: UserProductItem + (*CreateUserProductRequest)(nil), // 24: CreateUserProductRequest + (*UpdateUserProductRequest)(nil), // 25: UpdateUserProductRequest + (*DeleteUserProductRequest)(nil), // 26: DeleteUserProductRequest + (*UserProductPageListResponse)(nil), // 27: UserProductPageListResponse + (*UserProductResponse)(nil), // 28: UserProductResponse + (*MatchingUserIdProductCodeRequest)(nil), // 29: matchingUserIdProductCodeRequest + (*MatchResponse)(nil), // 30: matchResponse + (*MatchWhitelistByIpRequest)(nil), // 31: MatchWhitelistByIpRequest + (*AliTopUpRequest)(nil), // 32: AliTopUpRequest + (*AliTopUpResponse)(nil), // 33: AliTopUpResponse + (*AliTopUpNotifyRequest)(nil), // 34: AliTopUpNotifyRequest + (*AliTopUpNotifyResponse)(nil), // 35: AliTopUpNotifyResponse } var file_sentinel_proto_depIdxs = []int32{ - 5, // 0: WhitelistResponse.whitelists:type_name -> Whitelist - 10, // 1: SecretResponse.secrets:type_name -> Secret - 16, // 2: ProductResponse.products:type_name -> Product - 22, // 3: UserProductResponse.user_products:type_name -> UserProductItem - 6, // 4: whitelist.CreateWhitelist:input_type -> CreateWhitelistRequest - 7, // 5: whitelist.UpdateWhitelist:input_type -> UpdateWhitelistRequest - 8, // 6: whitelist.DeleteWhitelist:input_type -> DeleteWhitelistRequest - 2, // 7: whitelist.GetWhitePageList:input_type -> WhitePageListRequest - 29, // 8: whitelist.MatchWhitelistByIp:input_type -> MatchWhitelistByIpRequest - 12, // 9: secret.CreateSecret:input_type -> CreateSecretRequest - 3, // 10: secret.GetSecretByUserId:input_type -> GetRecordByIdRequest - 11, // 11: secret.GetSecretBySecretId:input_type -> GetSecretBySecretIdRequest - 17, // 12: product.CreateProduct:input_type -> CreateProductRequest - 18, // 13: product.UpdateProduct:input_type -> UpdateProductRequest - 19, // 14: product.DeleteProduct:input_type -> DeleteProductRequest + 6, // 0: WhitelistResponse.whitelists:type_name -> Whitelist + 11, // 1: SecretResponse.secrets:type_name -> Secret + 17, // 2: ProductResponse.products:type_name -> Product + 23, // 3: UserProductPageListResponse.user_products:type_name -> UserProductItem + 7, // 4: whitelist.CreateWhitelist:input_type -> CreateWhitelistRequest + 8, // 5: whitelist.UpdateWhitelist:input_type -> UpdateWhitelistRequest + 9, // 6: whitelist.DeleteWhitelist:input_type -> DeleteWhitelistRequest + 3, // 7: whitelist.GetWhitePageList:input_type -> WhitePageListRequest + 31, // 8: whitelist.MatchWhitelistByIp:input_type -> MatchWhitelistByIpRequest + 13, // 9: secret.CreateSecret:input_type -> CreateSecretRequest + 4, // 10: secret.GetSecretByUserId:input_type -> GetRecordByIdRequest + 12, // 11: secret.GetSecretBySecretId:input_type -> GetSecretBySecretIdRequest + 18, // 12: product.CreateProduct:input_type -> CreateProductRequest + 19, // 13: product.UpdateProduct:input_type -> UpdateProductRequest + 20, // 14: product.DeleteProduct:input_type -> DeleteProductRequest 0, // 15: product.GetProductPageList:input_type -> PageListRequest - 3, // 16: product.GetProductById:input_type -> GetRecordByIdRequest - 4, // 17: product.GetProductByCode:input_type -> GetRecordByCodeRequest - 23, // 18: userProduct.CreateUserProduct:input_type -> CreateUserProductRequest + 4, // 16: product.GetProductById:input_type -> GetRecordByIdRequest + 5, // 17: product.GetProductByCode:input_type -> GetRecordByCodeRequest + 24, // 18: userProduct.CreateUserProduct:input_type -> CreateUserProductRequest 1, // 19: userProduct.GetUserProductPageList:input_type -> UserProuctPageListRequest - 27, // 20: userProduct.MatchingUserIdProductCode:input_type -> matchingUserIdProductCodeRequest - 30, // 21: topUp.AliTopUp:input_type -> AliTopUpRequest - 32, // 22: topUp.AliTopUpNotify:input_type -> AliTopUpNotifyRequest - 5, // 23: whitelist.CreateWhitelist:output_type -> Whitelist - 5, // 24: whitelist.UpdateWhitelist:output_type -> Whitelist - 5, // 25: whitelist.DeleteWhitelist:output_type -> Whitelist - 9, // 26: whitelist.GetWhitePageList:output_type -> WhitelistResponse - 28, // 27: whitelist.MatchWhitelistByIp:output_type -> matchResponse - 10, // 28: secret.CreateSecret:output_type -> Secret - 10, // 29: secret.GetSecretByUserId:output_type -> Secret - 10, // 30: secret.GetSecretBySecretId:output_type -> Secret - 16, // 31: product.CreateProduct:output_type -> Product - 16, // 32: product.UpdateProduct:output_type -> Product - 16, // 33: product.DeleteProduct:output_type -> Product - 20, // 34: product.GetProductPageList:output_type -> ProductResponse - 16, // 35: product.GetProductById:output_type -> Product - 16, // 36: product.GetProductByCode:output_type -> Product - 21, // 37: userProduct.CreateUserProduct:output_type -> UserProductEmptyResponse - 26, // 38: userProduct.GetUserProductPageList:output_type -> UserProductResponse - 28, // 39: userProduct.MatchingUserIdProductCode:output_type -> matchResponse - 31, // 40: topUp.AliTopUp:output_type -> AliTopUpResponse - 33, // 41: topUp.AliTopUpNotify:output_type -> AliTopUpNotifyResponse - 23, // [23:42] is the sub-list for method output_type - 4, // [4:23] is the sub-list for method input_type + 2, // 20: userProduct.GetUserProduct:input_type -> UserProuctRequest + 29, // 21: userProduct.MatchingUserIdProductCode:input_type -> matchingUserIdProductCodeRequest + 32, // 22: topUp.AliTopUp:input_type -> AliTopUpRequest + 34, // 23: topUp.AliTopUpNotify:input_type -> AliTopUpNotifyRequest + 6, // 24: whitelist.CreateWhitelist:output_type -> Whitelist + 6, // 25: whitelist.UpdateWhitelist:output_type -> Whitelist + 6, // 26: whitelist.DeleteWhitelist:output_type -> Whitelist + 10, // 27: whitelist.GetWhitePageList:output_type -> WhitelistResponse + 30, // 28: whitelist.MatchWhitelistByIp:output_type -> matchResponse + 11, // 29: secret.CreateSecret:output_type -> Secret + 11, // 30: secret.GetSecretByUserId:output_type -> Secret + 11, // 31: secret.GetSecretBySecretId:output_type -> Secret + 17, // 32: product.CreateProduct:output_type -> Product + 17, // 33: product.UpdateProduct:output_type -> Product + 17, // 34: product.DeleteProduct:output_type -> Product + 21, // 35: product.GetProductPageList:output_type -> ProductResponse + 17, // 36: product.GetProductById:output_type -> Product + 17, // 37: product.GetProductByCode:output_type -> Product + 22, // 38: userProduct.CreateUserProduct:output_type -> UserProductEmptyResponse + 27, // 39: userProduct.GetUserProductPageList:output_type -> UserProductPageListResponse + 28, // 40: userProduct.GetUserProduct:output_type -> UserProductResponse + 30, // 41: userProduct.MatchingUserIdProductCode:output_type -> matchResponse + 33, // 42: topUp.AliTopUp:output_type -> AliTopUpResponse + 35, // 43: topUp.AliTopUpNotify:output_type -> AliTopUpNotifyResponse + 24, // [24:44] is the sub-list for method output_type + 4, // [4:24] 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 @@ -2464,7 +2609,7 @@ func file_sentinel_proto_init() { } } file_sentinel_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*WhitePageListRequest); i { + switch v := v.(*UserProuctRequest); i { case 0: return &v.state case 1: @@ -2476,7 +2621,7 @@ func file_sentinel_proto_init() { } } file_sentinel_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*GetRecordByIdRequest); i { + switch v := v.(*WhitePageListRequest); i { case 0: return &v.state case 1: @@ -2488,7 +2633,7 @@ func file_sentinel_proto_init() { } } file_sentinel_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*GetRecordByCodeRequest); i { + switch v := v.(*GetRecordByIdRequest); i { case 0: return &v.state case 1: @@ -2500,7 +2645,7 @@ func file_sentinel_proto_init() { } } file_sentinel_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*Whitelist); i { + switch v := v.(*GetRecordByCodeRequest); i { case 0: return &v.state case 1: @@ -2512,7 +2657,7 @@ func file_sentinel_proto_init() { } } file_sentinel_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*CreateWhitelistRequest); i { + switch v := v.(*Whitelist); i { case 0: return &v.state case 1: @@ -2524,7 +2669,7 @@ func file_sentinel_proto_init() { } } file_sentinel_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*UpdateWhitelistRequest); i { + switch v := v.(*CreateWhitelistRequest); i { case 0: return &v.state case 1: @@ -2536,7 +2681,7 @@ func file_sentinel_proto_init() { } } file_sentinel_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*DeleteWhitelistRequest); i { + switch v := v.(*UpdateWhitelistRequest); i { case 0: return &v.state case 1: @@ -2548,7 +2693,7 @@ func file_sentinel_proto_init() { } } file_sentinel_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*WhitelistResponse); i { + switch v := v.(*DeleteWhitelistRequest); i { case 0: return &v.state case 1: @@ -2560,7 +2705,7 @@ func file_sentinel_proto_init() { } } file_sentinel_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*Secret); i { + switch v := v.(*WhitelistResponse); i { case 0: return &v.state case 1: @@ -2572,7 +2717,7 @@ func file_sentinel_proto_init() { } } file_sentinel_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*GetSecretBySecretIdRequest); i { + switch v := v.(*Secret); i { case 0: return &v.state case 1: @@ -2584,7 +2729,7 @@ func file_sentinel_proto_init() { } } file_sentinel_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*CreateSecretRequest); i { + switch v := v.(*GetSecretBySecretIdRequest); i { case 0: return &v.state case 1: @@ -2596,7 +2741,7 @@ func file_sentinel_proto_init() { } } file_sentinel_proto_msgTypes[13].Exporter = func(v any, i int) any { - switch v := v.(*UpdateSecretRequest); i { + switch v := v.(*CreateSecretRequest); i { case 0: return &v.state case 1: @@ -2608,7 +2753,7 @@ func file_sentinel_proto_init() { } } file_sentinel_proto_msgTypes[14].Exporter = func(v any, i int) any { - switch v := v.(*DeleteSecretRequest); i { + switch v := v.(*UpdateSecretRequest); i { case 0: return &v.state case 1: @@ -2620,7 +2765,7 @@ func file_sentinel_proto_init() { } } file_sentinel_proto_msgTypes[15].Exporter = func(v any, i int) any { - switch v := v.(*SecretResponse); i { + switch v := v.(*DeleteSecretRequest); i { case 0: return &v.state case 1: @@ -2632,7 +2777,7 @@ func file_sentinel_proto_init() { } } file_sentinel_proto_msgTypes[16].Exporter = func(v any, i int) any { - switch v := v.(*Product); i { + switch v := v.(*SecretResponse); i { case 0: return &v.state case 1: @@ -2644,7 +2789,7 @@ func file_sentinel_proto_init() { } } file_sentinel_proto_msgTypes[17].Exporter = func(v any, i int) any { - switch v := v.(*CreateProductRequest); i { + switch v := v.(*Product); i { case 0: return &v.state case 1: @@ -2656,7 +2801,7 @@ func file_sentinel_proto_init() { } } file_sentinel_proto_msgTypes[18].Exporter = func(v any, i int) any { - switch v := v.(*UpdateProductRequest); i { + switch v := v.(*CreateProductRequest); i { case 0: return &v.state case 1: @@ -2668,7 +2813,7 @@ func file_sentinel_proto_init() { } } file_sentinel_proto_msgTypes[19].Exporter = func(v any, i int) any { - switch v := v.(*DeleteProductRequest); i { + switch v := v.(*UpdateProductRequest); i { case 0: return &v.state case 1: @@ -2680,7 +2825,7 @@ func file_sentinel_proto_init() { } } file_sentinel_proto_msgTypes[20].Exporter = func(v any, i int) any { - switch v := v.(*ProductResponse); i { + switch v := v.(*DeleteProductRequest); i { case 0: return &v.state case 1: @@ -2692,7 +2837,7 @@ func file_sentinel_proto_init() { } } file_sentinel_proto_msgTypes[21].Exporter = func(v any, i int) any { - switch v := v.(*UserProductEmptyResponse); i { + switch v := v.(*ProductResponse); i { case 0: return &v.state case 1: @@ -2704,7 +2849,7 @@ func file_sentinel_proto_init() { } } file_sentinel_proto_msgTypes[22].Exporter = func(v any, i int) any { - switch v := v.(*UserProductItem); i { + switch v := v.(*UserProductEmptyResponse); i { case 0: return &v.state case 1: @@ -2716,7 +2861,7 @@ func file_sentinel_proto_init() { } } file_sentinel_proto_msgTypes[23].Exporter = func(v any, i int) any { - switch v := v.(*CreateUserProductRequest); i { + switch v := v.(*UserProductItem); i { case 0: return &v.state case 1: @@ -2728,7 +2873,7 @@ func file_sentinel_proto_init() { } } file_sentinel_proto_msgTypes[24].Exporter = func(v any, i int) any { - switch v := v.(*UpdateUserProductRequest); i { + switch v := v.(*CreateUserProductRequest); i { case 0: return &v.state case 1: @@ -2740,7 +2885,7 @@ func file_sentinel_proto_init() { } } file_sentinel_proto_msgTypes[25].Exporter = func(v any, i int) any { - switch v := v.(*DeleteUserProductRequest); i { + switch v := v.(*UpdateUserProductRequest); i { case 0: return &v.state case 1: @@ -2752,7 +2897,7 @@ func file_sentinel_proto_init() { } } file_sentinel_proto_msgTypes[26].Exporter = func(v any, i int) any { - switch v := v.(*UserProductResponse); i { + switch v := v.(*DeleteUserProductRequest); i { case 0: return &v.state case 1: @@ -2764,7 +2909,7 @@ func file_sentinel_proto_init() { } } file_sentinel_proto_msgTypes[27].Exporter = func(v any, i int) any { - switch v := v.(*MatchingUserIdProductCodeRequest); i { + switch v := v.(*UserProductPageListResponse); i { case 0: return &v.state case 1: @@ -2776,7 +2921,7 @@ func file_sentinel_proto_init() { } } file_sentinel_proto_msgTypes[28].Exporter = func(v any, i int) any { - switch v := v.(*MatchResponse); i { + switch v := v.(*UserProductResponse); i { case 0: return &v.state case 1: @@ -2788,7 +2933,7 @@ func file_sentinel_proto_init() { } } file_sentinel_proto_msgTypes[29].Exporter = func(v any, i int) any { - switch v := v.(*MatchWhitelistByIpRequest); i { + switch v := v.(*MatchingUserIdProductCodeRequest); i { case 0: return &v.state case 1: @@ -2800,7 +2945,7 @@ func file_sentinel_proto_init() { } } file_sentinel_proto_msgTypes[30].Exporter = func(v any, i int) any { - switch v := v.(*AliTopUpRequest); i { + switch v := v.(*MatchResponse); i { case 0: return &v.state case 1: @@ -2812,7 +2957,7 @@ func file_sentinel_proto_init() { } } file_sentinel_proto_msgTypes[31].Exporter = func(v any, i int) any { - switch v := v.(*AliTopUpResponse); i { + switch v := v.(*MatchWhitelistByIpRequest); i { case 0: return &v.state case 1: @@ -2824,7 +2969,7 @@ func file_sentinel_proto_init() { } } file_sentinel_proto_msgTypes[32].Exporter = func(v any, i int) any { - switch v := v.(*AliTopUpNotifyRequest); i { + switch v := v.(*AliTopUpRequest); i { case 0: return &v.state case 1: @@ -2836,6 +2981,30 @@ func file_sentinel_proto_init() { } } file_sentinel_proto_msgTypes[33].Exporter = func(v any, i int) any { + switch v := v.(*AliTopUpResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sentinel_proto_msgTypes[34].Exporter = func(v any, i int) any { + switch v := v.(*AliTopUpNotifyRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sentinel_proto_msgTypes[35].Exporter = func(v any, i int) any { switch v := v.(*AliTopUpNotifyResponse); i { case 0: return &v.state @@ -2854,7 +3023,7 @@ func file_sentinel_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_sentinel_proto_rawDesc, NumEnums: 0, - NumMessages: 34, + NumMessages: 36, NumExtensions: 0, NumServices: 5, }, diff --git a/apps/sentinel/sentinel/sentinel_grpc.pb.go b/apps/sentinel/sentinel/sentinel_grpc.pb.go index 8533d0f..486f2da 100644 --- a/apps/sentinel/sentinel/sentinel_grpc.pb.go +++ b/apps/sentinel/sentinel/sentinel_grpc.pb.go @@ -29,8 +29,6 @@ const ( // WhitelistClient is the client API for Whitelist service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. -// -// Service definitions for Whitelist, Secrets, Products, and UserProducts type WhitelistClient interface { // Whitelist methods CreateWhitelist(ctx context.Context, in *CreateWhitelistRequest, opts ...grpc.CallOption) (*Whitelist, error) @@ -101,8 +99,6 @@ func (c *whitelistClient) MatchWhitelistByIp(ctx context.Context, in *MatchWhite // WhitelistServer is the server API for Whitelist service. // All implementations must embed UnimplementedWhitelistServer // for forward compatibility -// -// Service definitions for Whitelist, Secrets, Products, and UserProducts type WhitelistServer interface { // Whitelist methods CreateWhitelist(context.Context, *CreateWhitelistRequest) (*Whitelist, error) @@ -722,6 +718,7 @@ var Product_ServiceDesc = grpc.ServiceDesc{ const ( UserProduct_CreateUserProduct_FullMethodName = "/userProduct/CreateUserProduct" UserProduct_GetUserProductPageList_FullMethodName = "/userProduct/GetUserProductPageList" + UserProduct_GetUserProduct_FullMethodName = "/userProduct/GetUserProduct" UserProduct_MatchingUserIdProductCode_FullMethodName = "/userProduct/MatchingUserIdProductCode" ) @@ -731,7 +728,8 @@ const ( type UserProductClient interface { // UserProduct methods CreateUserProduct(ctx context.Context, in *CreateUserProductRequest, opts ...grpc.CallOption) (*UserProductEmptyResponse, error) - GetUserProductPageList(ctx context.Context, in *UserProuctPageListRequest, opts ...grpc.CallOption) (*UserProductResponse, error) + GetUserProductPageList(ctx context.Context, in *UserProuctPageListRequest, opts ...grpc.CallOption) (*UserProductPageListResponse, error) + GetUserProduct(ctx context.Context, in *UserProuctRequest, opts ...grpc.CallOption) (*UserProductResponse, error) MatchingUserIdProductCode(ctx context.Context, in *MatchingUserIdProductCodeRequest, opts ...grpc.CallOption) (*MatchResponse, error) } @@ -753,10 +751,20 @@ func (c *userProductClient) CreateUserProduct(ctx context.Context, in *CreateUse return out, nil } -func (c *userProductClient) GetUserProductPageList(ctx context.Context, in *UserProuctPageListRequest, opts ...grpc.CallOption) (*UserProductResponse, error) { +func (c *userProductClient) GetUserProductPageList(ctx context.Context, in *UserProuctPageListRequest, opts ...grpc.CallOption) (*UserProductPageListResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(UserProductPageListResponse) + err := c.cc.Invoke(ctx, UserProduct_GetUserProductPageList_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *userProductClient) GetUserProduct(ctx context.Context, in *UserProuctRequest, opts ...grpc.CallOption) (*UserProductResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(UserProductResponse) - err := c.cc.Invoke(ctx, UserProduct_GetUserProductPageList_FullMethodName, in, out, cOpts...) + err := c.cc.Invoke(ctx, UserProduct_GetUserProduct_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -779,7 +787,8 @@ func (c *userProductClient) MatchingUserIdProductCode(ctx context.Context, in *M type UserProductServer interface { // UserProduct methods CreateUserProduct(context.Context, *CreateUserProductRequest) (*UserProductEmptyResponse, error) - GetUserProductPageList(context.Context, *UserProuctPageListRequest) (*UserProductResponse, error) + GetUserProductPageList(context.Context, *UserProuctPageListRequest) (*UserProductPageListResponse, error) + GetUserProduct(context.Context, *UserProuctRequest) (*UserProductResponse, error) MatchingUserIdProductCode(context.Context, *MatchingUserIdProductCodeRequest) (*MatchResponse, error) mustEmbedUnimplementedUserProductServer() } @@ -791,9 +800,12 @@ type UnimplementedUserProductServer struct { func (UnimplementedUserProductServer) CreateUserProduct(context.Context, *CreateUserProductRequest) (*UserProductEmptyResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateUserProduct not implemented") } -func (UnimplementedUserProductServer) GetUserProductPageList(context.Context, *UserProuctPageListRequest) (*UserProductResponse, error) { +func (UnimplementedUserProductServer) GetUserProductPageList(context.Context, *UserProuctPageListRequest) (*UserProductPageListResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetUserProductPageList not implemented") } +func (UnimplementedUserProductServer) GetUserProduct(context.Context, *UserProuctRequest) (*UserProductResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetUserProduct not implemented") +} func (UnimplementedUserProductServer) MatchingUserIdProductCode(context.Context, *MatchingUserIdProductCodeRequest) (*MatchResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method MatchingUserIdProductCode not implemented") } @@ -846,6 +858,24 @@ func _UserProduct_GetUserProductPageList_Handler(srv interface{}, ctx context.Co return interceptor(ctx, in, info, handler) } +func _UserProduct_GetUserProduct_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UserProuctRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(UserProductServer).GetUserProduct(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: UserProduct_GetUserProduct_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(UserProductServer).GetUserProduct(ctx, req.(*UserProuctRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _UserProduct_MatchingUserIdProductCode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(MatchingUserIdProductCodeRequest) if err := dec(in); err != nil { @@ -879,6 +909,10 @@ var UserProduct_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetUserProductPageList", Handler: _UserProduct_GetUserProductPageList_Handler, }, + { + MethodName: "GetUserProduct", + Handler: _UserProduct_GetUserProduct_Handler, + }, { MethodName: "MatchingUserIdProductCode", Handler: _UserProduct_MatchingUserIdProductCode_Handler, diff --git a/apps/user/client/apirequestservice/apirequestservice.go b/apps/user/client/apirequestservice/apirequestservice.go index 1cb0b88..9ff52e4 100644 --- a/apps/user/client/apirequestservice/apirequestservice.go +++ b/apps/user/client/apirequestservice/apirequestservice.go @@ -50,6 +50,9 @@ type ( UpdateWalletResponse = user.UpdateWalletResponse UserInfoReq = user.UserInfoReq UserInfoResp = user.UserInfoResp + UserItem = user.UserItem + UserListRequest = user.UserListRequest + UserListResponse = user.UserListResponse ApiRequestService interface { // 添加API请求记录 diff --git a/apps/user/client/auth/auth.go b/apps/user/client/auth/auth.go index 61debe4..3c3a1a4 100644 --- a/apps/user/client/auth/auth.go +++ b/apps/user/client/auth/auth.go @@ -50,6 +50,9 @@ type ( UpdateWalletResponse = user.UpdateWalletResponse UserInfoReq = user.UserInfoReq UserInfoResp = user.UserInfoResp + UserItem = user.UserItem + UserListRequest = user.UserListRequest + UserListResponse = user.UserListResponse Auth interface { // 注册接口 diff --git a/apps/user/client/enterprise/enterprise.go b/apps/user/client/enterprise/enterprise.go index 0a57196..5ddac57 100644 --- a/apps/user/client/enterprise/enterprise.go +++ b/apps/user/client/enterprise/enterprise.go @@ -50,6 +50,9 @@ type ( UpdateWalletResponse = user.UpdateWalletResponse UserInfoReq = user.UserInfoReq UserInfoResp = user.UserInfoResp + UserItem = user.UserItem + UserListRequest = user.UserListRequest + UserListResponse = user.UserListResponse Enterprise interface { // 获取待审核企业列表 diff --git a/apps/user/client/user/user.go b/apps/user/client/user/user.go index d896f8d..2332a79 100644 --- a/apps/user/client/user/user.go +++ b/apps/user/client/user/user.go @@ -50,12 +50,16 @@ type ( UpdateWalletResponse = user.UpdateWalletResponse UserInfoReq = user.UserInfoReq UserInfoResp = user.UserInfoResp + UserItem = user.UserItem + UserListRequest = user.UserListRequest + UserListResponse = user.UserListResponse User interface { // 获取用户信息 UserInfo(ctx context.Context, in *UserInfoReq, opts ...grpc.CallOption) (*UserInfoResp, error) GetUserInfo(ctx context.Context, in *UserInfoReq, opts ...grpc.CallOption) (*GetUserInfoResp, error) GetEnterpriseAuthStatus(ctx context.Context, in *GetEnterpriseAuthStatusReq, opts ...grpc.CallOption) (*GetEnterpriseAuthStatusResp, error) + GetUserList(ctx context.Context, in *UserListRequest, opts ...grpc.CallOption) (*UserListResponse, error) } defaultUser struct { @@ -84,3 +88,8 @@ func (m *defaultUser) GetEnterpriseAuthStatus(ctx context.Context, in *GetEnterp client := user.NewUserClient(m.cli.Conn()) return client.GetEnterpriseAuthStatus(ctx, in, opts...) } + +func (m *defaultUser) GetUserList(ctx context.Context, in *UserListRequest, opts ...grpc.CallOption) (*UserListResponse, error) { + client := user.NewUserClient(m.cli.Conn()) + return client.GetUserList(ctx, in, opts...) +} diff --git a/apps/user/client/walletservice/walletservice.go b/apps/user/client/walletservice/walletservice.go index e4f6dfa..74b8c66 100644 --- a/apps/user/client/walletservice/walletservice.go +++ b/apps/user/client/walletservice/walletservice.go @@ -50,6 +50,9 @@ type ( UpdateWalletResponse = user.UpdateWalletResponse UserInfoReq = user.UserInfoReq UserInfoResp = user.UserInfoResp + UserItem = user.UserItem + UserListRequest = user.UserListRequest + UserListResponse = user.UserListResponse WalletService interface { // 修改钱包余额 diff --git a/apps/user/internal/logic/user/getuserlistlogic.go b/apps/user/internal/logic/user/getuserlistlogic.go new file mode 100644 index 0000000..b6d4329 --- /dev/null +++ b/apps/user/internal/logic/user/getuserlistlogic.go @@ -0,0 +1,63 @@ +package userlogic + +import ( + "context" + "tianyuan-api/apps/user/internal/svc" + "tianyuan-api/apps/user/user" + + "github.com/zeromicro/go-zero/core/logx" +) + +type GetUserListLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger +} + +func NewGetUserListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetUserListLogic { + return &GetUserListLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *GetUserListLogic) GetUserList(in *user.UserListRequest) (*user.UserListResponse, error) { + list, total, err := l.svcCtx.UserModel.FindUserPageList(l.ctx, in.Page, in.PageSize) + if err != nil { + return nil, err + } + userIds := make([]int64, len(list)) + for i, userItem := range list { + userIds[i] = userItem.Id + } + + walletMap, err := l.svcCtx.WalletsModel.FindWalletsByUserIds(l.ctx, userIds) + if err != nil { + return nil, err + } + + var userList []*user.UserItem + for _, userItem := range list { + balance := float64(0) + if wallet, ok := walletMap[userItem.Id]; ok { + balance = wallet.Balance + } + + userList = append(userList, &user.UserItem{ + Id: userItem.Id, + Username: userItem.Username, + Phone: userItem.Phone, + Disable: userItem.Disable, + QuotaExceeded: userItem.QuotaExceeded, + Balance: balance, + CreatedAt: userItem.CreatedAt.Format("2006-01-02 15:04:05"), + UpdatedAt: userItem.UpdatedAt.Format("2006-01-02 15:04:05"), + }) + } + + return &user.UserListResponse{ + List: userList, + Total: total, + }, nil +} diff --git a/apps/user/internal/logic/walletservice/updatewalletlogic.go b/apps/user/internal/logic/walletservice/updatewalletlogic.go index 1a6b3ea..5fb774b 100644 --- a/apps/user/internal/logic/walletservice/updatewalletlogic.go +++ b/apps/user/internal/logic/walletservice/updatewalletlogic.go @@ -6,6 +6,7 @@ import ( "errors" "github.com/zeromicro/go-zero/core/stores/sqlx" "tianyuan-api/apps/sentinel/client/product" + "tianyuan-api/apps/sentinel/sentinel" "tianyuan-api/apps/user/internal/model" "time" @@ -40,7 +41,13 @@ func (l *UpdateWalletLogic) UpdateWallet(in *user.UpdateWalletRequest) (*user.Up if getProductByCodeErr != nil { return nil, getProductByCodeErr } - + userProduct, getUserProductErr := l.svcCtx.UserProductRpc.GetUserProduct(l.ctx, &sentinel.UserProuctRequest{ + UserId: in.UserId, + ProductId: consumeProduct.Id, + }) + if getUserProductErr != nil { + return nil, getUserProductErr + } // 检查是否已经扣款 deduction, FindOneByTransactionIdErr := l.svcCtx.DeductionsModel.FindOneByTransactionId(l.ctx, in.TransactionId) if FindOneByTransactionIdErr != nil { @@ -59,7 +66,7 @@ func (l *UpdateWalletLogic) UpdateWallet(in *user.UpdateWalletRequest) (*user.Up var err error // 尝试多次更新余额(用于乐观锁) for i := 0; i < maxRetries; i++ { - err = l.svcCtx.WalletsModel.UpdateBalance(session, l.ctx, in.UserId, -consumeProduct.ProductPrice) + err = l.svcCtx.WalletsModel.UpdateBalance(session, l.ctx, in.UserId, -userProduct.ProductPrice) if err == nil { // 成功,退出循环 break @@ -82,7 +89,7 @@ func (l *UpdateWalletLogic) UpdateWallet(in *user.UpdateWalletRequest) (*user.Up _, err = l.svcCtx.DeductionsModel.InsertDeductionsTrans(ctx, &model.Deductions{ TransactionId: in.TransactionId, UserId: in.UserId, - Amount: consumeProduct.ProductPrice, + Amount: userProduct.ProductPrice, }, session) if err != nil { return err diff --git a/apps/user/internal/model/usersmodel.go b/apps/user/internal/model/usersmodel.go index c6442a6..b2c69fc 100644 --- a/apps/user/internal/model/usersmodel.go +++ b/apps/user/internal/model/usersmodel.go @@ -18,6 +18,7 @@ type ( usersModel UpdateUserTrans(ctx context.Context, user *Users, session sqlx.Session) (sql.Result, error) FindOneTrans(ctx context.Context, userId int64, session sqlx.Session) (*Users, error) + FindUserPageList(ctx context.Context, page, pageSize int64) ([]Users, int64, error) } customUsersModel struct { @@ -76,3 +77,23 @@ func (m *defaultUsersModel) FindOneTrans(ctx context.Context, userId int64, sess // 返回查询结果 return &user, nil } +func (m *customUsersModel) FindUserPageList(ctx context.Context, page, pageSize int64) ([]Users, int64, error) { + offset := (page - 1) * pageSize + var users []Users + + query := fmt.Sprintf("SELECT * FROM %s ORDER BY created_at DESC LIMIT ?,?", m.table) + err := m.QueryRowsNoCacheCtx(ctx, &users, query, offset, pageSize) + if err != nil { + return nil, 0, err + } + + // 查询总数量 + var total int64 + countQuery := fmt.Sprintf("SELECT COUNT(*) FROM %s", m.table) + err = m.QueryRowNoCacheCtx(ctx, &total, countQuery) + if err != nil { + return nil, 0, err + } + + return users, total, nil +} diff --git a/apps/user/internal/model/walletsmodel.go b/apps/user/internal/model/walletsmodel.go index 3433783..4a5bff2 100644 --- a/apps/user/internal/model/walletsmodel.go +++ b/apps/user/internal/model/walletsmodel.go @@ -7,6 +7,7 @@ import ( "fmt" "github.com/zeromicro/go-zero/core/stores/cache" "github.com/zeromicro/go-zero/core/stores/sqlx" + "strings" ) var _ WalletsModel = (*customWalletsModel)(nil) @@ -19,6 +20,7 @@ type ( InsertWalletsTrans(ctx context.Context, wallets *Wallets, session sqlx.Session) (sql.Result, error) UpdateBalance(session sqlx.Session, ctx context.Context, userId int64, amount float64) error TransCtx(ctx context.Context, fn func(ctx context.Context, session sqlx.Session) error) error + FindWalletsByUserIds(ctx context.Context, userIds []int64) (map[int64]*Wallets, error) } customWalletsModel struct { @@ -88,3 +90,36 @@ func (m *customWalletsModel) InsertWalletsTrans(ctx context.Context, wallets *Wa return ret, err } +func (m *customWalletsModel) FindWalletsByUserIds(ctx context.Context, userIds []int64) (map[int64]*Wallets, error) { + if len(userIds) == 0 { + return make(map[int64]*Wallets), nil + } + + queryBuilder := strings.Builder{} + queryBuilder.WriteString(fmt.Sprintf("SELECT user_id, balance FROM %s WHERE user_id IN (", m.table)) + + placeholders := make([]string, len(userIds)) + args := make([]interface{}, len(userIds)) + for i, userId := range userIds { + placeholders[i] = "?" + args[i] = userId + } + + queryBuilder.WriteString(strings.Join(placeholders, ",")) + queryBuilder.WriteString(")") + + query := queryBuilder.String() + + var wallets []*Wallets + err := m.QueryRowNoCacheCtx(ctx, &wallets, query, args...) + if err != nil { + return nil, err + } + + walletMap := make(map[int64]*Wallets) + for _, wallet := range wallets { + walletMap[wallet.UserId] = wallet + } + + return walletMap, nil +} diff --git a/apps/user/internal/server/user/userserver.go b/apps/user/internal/server/user/userserver.go index e6c7669..0a3f57b 100644 --- a/apps/user/internal/server/user/userserver.go +++ b/apps/user/internal/server/user/userserver.go @@ -38,3 +38,8 @@ func (s *UserServer) GetEnterpriseAuthStatus(ctx context.Context, in *user.GetEn l := userlogic.NewGetEnterpriseAuthStatusLogic(ctx, s.svcCtx) return l.GetEnterpriseAuthStatus(in) } + +func (s *UserServer) GetUserList(ctx context.Context, in *user.UserListRequest) (*user.UserListResponse, error) { + l := userlogic.NewGetUserListLogic(ctx, s.svcCtx) + return l.GetUserList(in) +} diff --git a/apps/user/internal/svc/servicecontext.go b/apps/user/internal/svc/servicecontext.go index 06358de..ab81498 100644 --- a/apps/user/internal/svc/servicecontext.go +++ b/apps/user/internal/svc/servicecontext.go @@ -23,6 +23,7 @@ type ServiceContext struct { UserConfigModel model.UserConfigModel SecretRpc sentinel.SecretClient ProductRpc sentinel.ProductClient + UserProductRpc sentinel.UserProductClient } func NewServiceContext(c config.Config) *ServiceContext { @@ -35,7 +36,7 @@ func NewServiceContext(c config.Config) *ServiceContext { // 初始化 SecretRpc 和 ProductRpc var secretRpc sentinel.SecretClient var productRpc sentinel.ProductClient - + var userProductRpc sentinel.UserProductClient // 捕获RPC初始化时的错误,但不影响服务启动 secretClient, err := zrpc.NewClient(c.SentinelRpc) if err != nil { @@ -49,6 +50,7 @@ func NewServiceContext(c config.Config) *ServiceContext { logx.Errorf("Failed to connect to ProductRpc: %v", err) } else { productRpc = sentinel.NewProductClient(productClient.Conn()) + userProductRpc = sentinel.NewUserProductClient(productClient.Conn()) } // 使用 MustNewRedis 来初始化 Redis 客户端 @@ -66,5 +68,6 @@ func NewServiceContext(c config.Config) *ServiceContext { RechargeModel: model.NewRechargeModel(db, c.CacheRedis), SecretRpc: secretRpc, // 捕获连接错误后,继续运行 ProductRpc: productRpc, // 捕获连接错误后,继续运行 + UserProductRpc: userProductRpc, } } diff --git a/apps/user/user.proto b/apps/user/user.proto index 3c3b668..b74c92b 100644 --- a/apps/user/user.proto +++ b/apps/user/user.proto @@ -113,7 +113,7 @@ message UserInfoResp{ string enterpriseName = 6; string creditCode = 7; string legalPerson = 8; - double balance= 9; + double balance = 9; } message GetUserInfoResp{ string username = 1; @@ -128,6 +128,27 @@ message GetEnterpriseAuthStatusReq { message GetEnterpriseAuthStatusResp { bool isAuth = 1; } + +message UserListRequest { + int64 page = 1; // 分页页码 + int64 page_size = 2; // 每页大小 +} + +message UserListResponse { + repeated UserItem list = 1; + int64 total = 2; +} + +message UserItem { + int64 id = 1; // 主键ID + string username = 2; + string phone = 3; + int64 disable = 4; + int64 quotaExceeded = 5; + double balance = 6; + string created_at = 7; // 创建时间 + string updated_at = 8; // 更新时间 +} service User { // 获取用户信息 rpc UserInfo(UserInfoReq) returns (UserInfoResp); @@ -135,6 +156,9 @@ service User { rpc GetUserInfo(UserInfoReq) returns (GetUserInfoResp); rpc GetEnterpriseAuthStatus(GetEnterpriseAuthStatusReq) returns (GetEnterpriseAuthStatusResp); + + rpc GetUserList(UserListRequest) returns (UserListResponse); + } diff --git a/apps/user/user/user.pb.go b/apps/user/user/user.pb.go index 4e48515..d4f2af9 100644 --- a/apps/user/user/user.pb.go +++ b/apps/user/user/user.pb.go @@ -997,6 +997,219 @@ func (x *GetEnterpriseAuthStatusResp) GetIsAuth() bool { return false } +type UserListRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Page int64 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` // 分页页码 + PageSize int64 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` // 每页大小 +} + +func (x *UserListRequest) Reset() { + *x = UserListRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_user_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UserListRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UserListRequest) ProtoMessage() {} + +func (x *UserListRequest) ProtoReflect() protoreflect.Message { + mi := &file_user_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 UserListRequest.ProtoReflect.Descriptor instead. +func (*UserListRequest) Descriptor() ([]byte, []int) { + return file_user_proto_rawDescGZIP(), []int{15} +} + +func (x *UserListRequest) GetPage() int64 { + if x != nil { + return x.Page + } + return 0 +} + +func (x *UserListRequest) GetPageSize() int64 { + if x != nil { + return x.PageSize + } + return 0 +} + +type UserListResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + List []*UserItem `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"` + Total int64 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"` +} + +func (x *UserListResponse) Reset() { + *x = UserListResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_user_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UserListResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UserListResponse) ProtoMessage() {} + +func (x *UserListResponse) ProtoReflect() protoreflect.Message { + mi := &file_user_proto_msgTypes[16] + 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 UserListResponse.ProtoReflect.Descriptor instead. +func (*UserListResponse) Descriptor() ([]byte, []int) { + return file_user_proto_rawDescGZIP(), []int{16} +} + +func (x *UserListResponse) GetList() []*UserItem { + if x != nil { + return x.List + } + return nil +} + +func (x *UserListResponse) GetTotal() int64 { + if x != nil { + return x.Total + } + return 0 +} + +type UserItem struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` // 主键ID + Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` + Phone string `protobuf:"bytes,3,opt,name=phone,proto3" json:"phone,omitempty"` + Disable int64 `protobuf:"varint,4,opt,name=disable,proto3" json:"disable,omitempty"` + QuotaExceeded int64 `protobuf:"varint,5,opt,name=quotaExceeded,proto3" json:"quotaExceeded,omitempty"` + Balance float64 `protobuf:"fixed64,6,opt,name=balance,proto3" json:"balance,omitempty"` + CreatedAt string `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` // 创建时间 + UpdatedAt string `protobuf:"bytes,8,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` // 更新时间 +} + +func (x *UserItem) Reset() { + *x = UserItem{} + if protoimpl.UnsafeEnabled { + mi := &file_user_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UserItem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UserItem) ProtoMessage() {} + +func (x *UserItem) ProtoReflect() protoreflect.Message { + mi := &file_user_proto_msgTypes[17] + 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 UserItem.ProtoReflect.Descriptor instead. +func (*UserItem) Descriptor() ([]byte, []int) { + return file_user_proto_rawDescGZIP(), []int{17} +} + +func (x *UserItem) GetId() int64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *UserItem) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +func (x *UserItem) GetPhone() string { + if x != nil { + return x.Phone + } + return "" +} + +func (x *UserItem) GetDisable() int64 { + if x != nil { + return x.Disable + } + return 0 +} + +func (x *UserItem) GetQuotaExceeded() int64 { + if x != nil { + return x.QuotaExceeded + } + return 0 +} + +func (x *UserItem) GetBalance() float64 { + if x != nil { + return x.Balance + } + return 0 +} + +func (x *UserItem) GetCreatedAt() string { + if x != nil { + return x.CreatedAt + } + return "" +} + +func (x *UserItem) GetUpdatedAt() string { + if x != nil { + return x.UpdatedAt + } + return "" +} + // 更新钱包余额 type UpdateWalletRequest struct { state protoimpl.MessageState @@ -1013,7 +1226,7 @@ type UpdateWalletRequest struct { func (x *UpdateWalletRequest) Reset() { *x = UpdateWalletRequest{} if protoimpl.UnsafeEnabled { - mi := &file_user_proto_msgTypes[15] + mi := &file_user_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1026,7 +1239,7 @@ func (x *UpdateWalletRequest) String() string { func (*UpdateWalletRequest) ProtoMessage() {} func (x *UpdateWalletRequest) ProtoReflect() protoreflect.Message { - mi := &file_user_proto_msgTypes[15] + mi := &file_user_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1039,7 +1252,7 @@ func (x *UpdateWalletRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateWalletRequest.ProtoReflect.Descriptor instead. func (*UpdateWalletRequest) Descriptor() ([]byte, []int) { - return file_user_proto_rawDescGZIP(), []int{15} + return file_user_proto_rawDescGZIP(), []int{18} } func (x *UpdateWalletRequest) GetUserId() int64 { @@ -1086,7 +1299,7 @@ type UpdateWalletResponse struct { func (x *UpdateWalletResponse) Reset() { *x = UpdateWalletResponse{} if protoimpl.UnsafeEnabled { - mi := &file_user_proto_msgTypes[16] + mi := &file_user_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1099,7 +1312,7 @@ func (x *UpdateWalletResponse) String() string { func (*UpdateWalletResponse) ProtoMessage() {} func (x *UpdateWalletResponse) ProtoReflect() protoreflect.Message { - mi := &file_user_proto_msgTypes[16] + mi := &file_user_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1112,7 +1325,7 @@ func (x *UpdateWalletResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateWalletResponse.ProtoReflect.Descriptor instead. func (*UpdateWalletResponse) Descriptor() ([]byte, []int) { - return file_user_proto_rawDescGZIP(), []int{16} + return file_user_proto_rawDescGZIP(), []int{19} } // 查询钱包信息 @@ -1127,7 +1340,7 @@ type GetWalletRequest struct { func (x *GetWalletRequest) Reset() { *x = GetWalletRequest{} if protoimpl.UnsafeEnabled { - mi := &file_user_proto_msgTypes[17] + mi := &file_user_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1140,7 +1353,7 @@ func (x *GetWalletRequest) String() string { func (*GetWalletRequest) ProtoMessage() {} func (x *GetWalletRequest) ProtoReflect() protoreflect.Message { - mi := &file_user_proto_msgTypes[17] + mi := &file_user_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1153,7 +1366,7 @@ func (x *GetWalletRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetWalletRequest.ProtoReflect.Descriptor instead. func (*GetWalletRequest) Descriptor() ([]byte, []int) { - return file_user_proto_rawDescGZIP(), []int{17} + return file_user_proto_rawDescGZIP(), []int{20} } func (x *GetWalletRequest) GetId() int64 { @@ -1177,7 +1390,7 @@ type GetWalletResponse struct { func (x *GetWalletResponse) Reset() { *x = GetWalletResponse{} if protoimpl.UnsafeEnabled { - mi := &file_user_proto_msgTypes[18] + mi := &file_user_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1190,7 +1403,7 @@ func (x *GetWalletResponse) String() string { func (*GetWalletResponse) ProtoMessage() {} func (x *GetWalletResponse) ProtoReflect() protoreflect.Message { - mi := &file_user_proto_msgTypes[18] + mi := &file_user_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1203,7 +1416,7 @@ func (x *GetWalletResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetWalletResponse.ProtoReflect.Descriptor instead. func (*GetWalletResponse) Descriptor() ([]byte, []int) { - return file_user_proto_rawDescGZIP(), []int{18} + return file_user_proto_rawDescGZIP(), []int{21} } func (x *GetWalletResponse) GetId() int64 { @@ -1248,7 +1461,7 @@ type GetDeductionsRequest struct { func (x *GetDeductionsRequest) Reset() { *x = GetDeductionsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_user_proto_msgTypes[19] + mi := &file_user_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1261,7 +1474,7 @@ func (x *GetDeductionsRequest) String() string { func (*GetDeductionsRequest) ProtoMessage() {} func (x *GetDeductionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_user_proto_msgTypes[19] + mi := &file_user_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1274,7 +1487,7 @@ func (x *GetDeductionsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetDeductionsRequest.ProtoReflect.Descriptor instead. func (*GetDeductionsRequest) Descriptor() ([]byte, []int) { - return file_user_proto_rawDescGZIP(), []int{19} + return file_user_proto_rawDescGZIP(), []int{22} } func (x *GetDeductionsRequest) GetUserId() int64 { @@ -1309,7 +1522,7 @@ type GetDeductionsResponse struct { func (x *GetDeductionsResponse) Reset() { *x = GetDeductionsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_user_proto_msgTypes[20] + mi := &file_user_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1322,7 +1535,7 @@ func (x *GetDeductionsResponse) String() string { func (*GetDeductionsResponse) ProtoMessage() {} func (x *GetDeductionsResponse) ProtoReflect() protoreflect.Message { - mi := &file_user_proto_msgTypes[20] + mi := &file_user_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1335,7 +1548,7 @@ func (x *GetDeductionsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetDeductionsResponse.ProtoReflect.Descriptor instead. func (*GetDeductionsResponse) Descriptor() ([]byte, []int) { - return file_user_proto_rawDescGZIP(), []int{20} + return file_user_proto_rawDescGZIP(), []int{23} } func (x *GetDeductionsResponse) GetDeductions() []*Deduction { @@ -1356,7 +1569,7 @@ type GetDeductionByTransactionIdRequest struct { func (x *GetDeductionByTransactionIdRequest) Reset() { *x = GetDeductionByTransactionIdRequest{} if protoimpl.UnsafeEnabled { - mi := &file_user_proto_msgTypes[21] + mi := &file_user_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1369,7 +1582,7 @@ func (x *GetDeductionByTransactionIdRequest) String() string { func (*GetDeductionByTransactionIdRequest) ProtoMessage() {} func (x *GetDeductionByTransactionIdRequest) ProtoReflect() protoreflect.Message { - mi := &file_user_proto_msgTypes[21] + mi := &file_user_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1382,7 +1595,7 @@ func (x *GetDeductionByTransactionIdRequest) ProtoReflect() protoreflect.Message // Deprecated: Use GetDeductionByTransactionIdRequest.ProtoReflect.Descriptor instead. func (*GetDeductionByTransactionIdRequest) Descriptor() ([]byte, []int) { - return file_user_proto_rawDescGZIP(), []int{21} + return file_user_proto_rawDescGZIP(), []int{24} } func (x *GetDeductionByTransactionIdRequest) GetTransactionId() string { @@ -1407,7 +1620,7 @@ type GetDeductionByTransactionIdResponse struct { func (x *GetDeductionByTransactionIdResponse) Reset() { *x = GetDeductionByTransactionIdResponse{} if protoimpl.UnsafeEnabled { - mi := &file_user_proto_msgTypes[22] + mi := &file_user_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1420,7 +1633,7 @@ func (x *GetDeductionByTransactionIdResponse) String() string { func (*GetDeductionByTransactionIdResponse) ProtoMessage() {} func (x *GetDeductionByTransactionIdResponse) ProtoReflect() protoreflect.Message { - mi := &file_user_proto_msgTypes[22] + mi := &file_user_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1433,7 +1646,7 @@ func (x *GetDeductionByTransactionIdResponse) ProtoReflect() protoreflect.Messag // Deprecated: Use GetDeductionByTransactionIdResponse.ProtoReflect.Descriptor instead. func (*GetDeductionByTransactionIdResponse) Descriptor() ([]byte, []int) { - return file_user_proto_rawDescGZIP(), []int{22} + return file_user_proto_rawDescGZIP(), []int{25} } func (x *GetDeductionByTransactionIdResponse) GetId() int64 { @@ -1486,7 +1699,7 @@ type Deduction struct { func (x *Deduction) Reset() { *x = Deduction{} if protoimpl.UnsafeEnabled { - mi := &file_user_proto_msgTypes[23] + mi := &file_user_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1499,7 +1712,7 @@ func (x *Deduction) String() string { func (*Deduction) ProtoMessage() {} func (x *Deduction) ProtoReflect() protoreflect.Message { - mi := &file_user_proto_msgTypes[23] + mi := &file_user_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1512,7 +1725,7 @@ func (x *Deduction) ProtoReflect() protoreflect.Message { // Deprecated: Use Deduction.ProtoReflect.Descriptor instead. func (*Deduction) Descriptor() ([]byte, []int) { - return file_user_proto_rawDescGZIP(), []int{23} + return file_user_proto_rawDescGZIP(), []int{26} } func (x *Deduction) GetId() int64 { @@ -1564,7 +1777,7 @@ type RechargeWalletRequest struct { func (x *RechargeWalletRequest) Reset() { *x = RechargeWalletRequest{} if protoimpl.UnsafeEnabled { - mi := &file_user_proto_msgTypes[24] + mi := &file_user_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1577,7 +1790,7 @@ func (x *RechargeWalletRequest) String() string { func (*RechargeWalletRequest) ProtoMessage() {} func (x *RechargeWalletRequest) ProtoReflect() protoreflect.Message { - mi := &file_user_proto_msgTypes[24] + mi := &file_user_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1590,7 +1803,7 @@ func (x *RechargeWalletRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RechargeWalletRequest.ProtoReflect.Descriptor instead. func (*RechargeWalletRequest) Descriptor() ([]byte, []int) { - return file_user_proto_rawDescGZIP(), []int{24} + return file_user_proto_rawDescGZIP(), []int{27} } func (x *RechargeWalletRequest) GetUserId() int64 { @@ -1630,7 +1843,7 @@ type RechargeWalletResponse struct { func (x *RechargeWalletResponse) Reset() { *x = RechargeWalletResponse{} if protoimpl.UnsafeEnabled { - mi := &file_user_proto_msgTypes[25] + mi := &file_user_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1643,7 +1856,7 @@ func (x *RechargeWalletResponse) String() string { func (*RechargeWalletResponse) ProtoMessage() {} func (x *RechargeWalletResponse) ProtoReflect() protoreflect.Message { - mi := &file_user_proto_msgTypes[25] + mi := &file_user_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1656,7 +1869,7 @@ func (x *RechargeWalletResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RechargeWalletResponse.ProtoReflect.Descriptor instead. func (*RechargeWalletResponse) Descriptor() ([]byte, []int) { - return file_user_proto_rawDescGZIP(), []int{25} + return file_user_proto_rawDescGZIP(), []int{28} } type RechargeRequest struct { @@ -1672,7 +1885,7 @@ type RechargeRequest struct { func (x *RechargeRequest) Reset() { *x = RechargeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_user_proto_msgTypes[26] + mi := &file_user_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1685,7 +1898,7 @@ func (x *RechargeRequest) String() string { func (*RechargeRequest) ProtoMessage() {} func (x *RechargeRequest) ProtoReflect() protoreflect.Message { - mi := &file_user_proto_msgTypes[26] + mi := &file_user_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1698,7 +1911,7 @@ func (x *RechargeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RechargeRequest.ProtoReflect.Descriptor instead. func (*RechargeRequest) Descriptor() ([]byte, []int) { - return file_user_proto_rawDescGZIP(), []int{26} + return file_user_proto_rawDescGZIP(), []int{29} } func (x *RechargeRequest) GetUserId() int64 { @@ -1734,7 +1947,7 @@ type RechargeResponse struct { func (x *RechargeResponse) Reset() { *x = RechargeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_user_proto_msgTypes[27] + mi := &file_user_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1747,7 +1960,7 @@ func (x *RechargeResponse) String() string { func (*RechargeResponse) ProtoMessage() {} func (x *RechargeResponse) ProtoReflect() protoreflect.Message { - mi := &file_user_proto_msgTypes[27] + mi := &file_user_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1760,7 +1973,7 @@ func (x *RechargeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RechargeResponse.ProtoReflect.Descriptor instead. func (*RechargeResponse) Descriptor() ([]byte, []int) { - return file_user_proto_rawDescGZIP(), []int{27} + return file_user_proto_rawDescGZIP(), []int{30} } func (x *RechargeResponse) GetList() []*RechargeItem { @@ -1795,7 +2008,7 @@ type RechargeItem struct { func (x *RechargeItem) Reset() { *x = RechargeItem{} if protoimpl.UnsafeEnabled { - mi := &file_user_proto_msgTypes[28] + mi := &file_user_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1808,7 +2021,7 @@ func (x *RechargeItem) String() string { func (*RechargeItem) ProtoMessage() {} func (x *RechargeItem) ProtoReflect() protoreflect.Message { - mi := &file_user_proto_msgTypes[28] + mi := &file_user_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1821,7 +2034,7 @@ func (x *RechargeItem) ProtoReflect() protoreflect.Message { // Deprecated: Use RechargeItem.ProtoReflect.Descriptor instead. func (*RechargeItem) Descriptor() ([]byte, []int) { - return file_user_proto_rawDescGZIP(), []int{28} + return file_user_proto_rawDescGZIP(), []int{31} } func (x *RechargeItem) GetId() int64 { @@ -1898,7 +2111,7 @@ type AddApiRequestRequest struct { func (x *AddApiRequestRequest) Reset() { *x = AddApiRequestRequest{} if protoimpl.UnsafeEnabled { - mi := &file_user_proto_msgTypes[29] + mi := &file_user_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1911,7 +2124,7 @@ func (x *AddApiRequestRequest) String() string { func (*AddApiRequestRequest) ProtoMessage() {} func (x *AddApiRequestRequest) ProtoReflect() protoreflect.Message { - mi := &file_user_proto_msgTypes[29] + mi := &file_user_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1924,7 +2137,7 @@ func (x *AddApiRequestRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AddApiRequestRequest.ProtoReflect.Descriptor instead. func (*AddApiRequestRequest) Descriptor() ([]byte, []int) { - return file_user_proto_rawDescGZIP(), []int{29} + return file_user_proto_rawDescGZIP(), []int{32} } func (x *AddApiRequestRequest) GetTransactionId() string { @@ -1987,7 +2200,7 @@ type AddApiRequestResponse struct { func (x *AddApiRequestResponse) Reset() { *x = AddApiRequestResponse{} if protoimpl.UnsafeEnabled { - mi := &file_user_proto_msgTypes[30] + mi := &file_user_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2000,7 +2213,7 @@ func (x *AddApiRequestResponse) String() string { func (*AddApiRequestResponse) ProtoMessage() {} func (x *AddApiRequestResponse) ProtoReflect() protoreflect.Message { - mi := &file_user_proto_msgTypes[30] + mi := &file_user_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2013,7 +2226,7 @@ func (x *AddApiRequestResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use AddApiRequestResponse.ProtoReflect.Descriptor instead. func (*AddApiRequestResponse) Descriptor() ([]byte, []int) { - return file_user_proto_rawDescGZIP(), []int{30} + return file_user_proto_rawDescGZIP(), []int{33} } func (x *AddApiRequestResponse) GetSuccess() bool { @@ -2037,7 +2250,7 @@ type GetApiRequestsRequest struct { func (x *GetApiRequestsRequest) Reset() { *x = GetApiRequestsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_user_proto_msgTypes[31] + mi := &file_user_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2050,7 +2263,7 @@ func (x *GetApiRequestsRequest) String() string { func (*GetApiRequestsRequest) ProtoMessage() {} func (x *GetApiRequestsRequest) ProtoReflect() protoreflect.Message { - mi := &file_user_proto_msgTypes[31] + mi := &file_user_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2063,7 +2276,7 @@ func (x *GetApiRequestsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetApiRequestsRequest.ProtoReflect.Descriptor instead. func (*GetApiRequestsRequest) Descriptor() ([]byte, []int) { - return file_user_proto_rawDescGZIP(), []int{31} + return file_user_proto_rawDescGZIP(), []int{34} } func (x *GetApiRequestsRequest) GetUserId() int64 { @@ -2098,7 +2311,7 @@ type GetApiRequestsResponse struct { func (x *GetApiRequestsResponse) Reset() { *x = GetApiRequestsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_user_proto_msgTypes[32] + mi := &file_user_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2111,7 +2324,7 @@ func (x *GetApiRequestsResponse) String() string { func (*GetApiRequestsResponse) ProtoMessage() {} func (x *GetApiRequestsResponse) ProtoReflect() protoreflect.Message { - mi := &file_user_proto_msgTypes[32] + mi := &file_user_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2124,7 +2337,7 @@ func (x *GetApiRequestsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetApiRequestsResponse.ProtoReflect.Descriptor instead. func (*GetApiRequestsResponse) Descriptor() ([]byte, []int) { - return file_user_proto_rawDescGZIP(), []int{32} + return file_user_proto_rawDescGZIP(), []int{35} } func (x *GetApiRequestsResponse) GetApiRequests() []*ApiRequest { @@ -2152,7 +2365,7 @@ type ApiRequest struct { func (x *ApiRequest) Reset() { *x = ApiRequest{} if protoimpl.UnsafeEnabled { - mi := &file_user_proto_msgTypes[33] + mi := &file_user_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2165,7 +2378,7 @@ func (x *ApiRequest) String() string { func (*ApiRequest) ProtoMessage() {} func (x *ApiRequest) ProtoReflect() protoreflect.Message { - mi := &file_user_proto_msgTypes[33] + mi := &file_user_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2178,7 +2391,7 @@ func (x *ApiRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ApiRequest.ProtoReflect.Descriptor instead. func (*ApiRequest) Descriptor() ([]byte, []int) { - return file_user_proto_rawDescGZIP(), []int{33} + return file_user_proto_rawDescGZIP(), []int{36} } func (x *ApiRequest) GetId() int64 { @@ -2249,7 +2462,7 @@ type GetApiRequestByTransactionIdRequest struct { func (x *GetApiRequestByTransactionIdRequest) Reset() { *x = GetApiRequestByTransactionIdRequest{} if protoimpl.UnsafeEnabled { - mi := &file_user_proto_msgTypes[34] + mi := &file_user_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2262,7 +2475,7 @@ func (x *GetApiRequestByTransactionIdRequest) String() string { func (*GetApiRequestByTransactionIdRequest) ProtoMessage() {} func (x *GetApiRequestByTransactionIdRequest) ProtoReflect() protoreflect.Message { - mi := &file_user_proto_msgTypes[34] + mi := &file_user_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2275,7 +2488,7 @@ func (x *GetApiRequestByTransactionIdRequest) ProtoReflect() protoreflect.Messag // Deprecated: Use GetApiRequestByTransactionIdRequest.ProtoReflect.Descriptor instead. func (*GetApiRequestByTransactionIdRequest) Descriptor() ([]byte, []int) { - return file_user_proto_rawDescGZIP(), []int{34} + return file_user_proto_rawDescGZIP(), []int{37} } func (x *GetApiRequestByTransactionIdRequest) GetTransactionId() string { @@ -2303,7 +2516,7 @@ type GetApiRequestByTransactionIdResponse struct { func (x *GetApiRequestByTransactionIdResponse) Reset() { *x = GetApiRequestByTransactionIdResponse{} if protoimpl.UnsafeEnabled { - mi := &file_user_proto_msgTypes[35] + mi := &file_user_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2316,7 +2529,7 @@ func (x *GetApiRequestByTransactionIdResponse) String() string { func (*GetApiRequestByTransactionIdResponse) ProtoMessage() {} func (x *GetApiRequestByTransactionIdResponse) ProtoReflect() protoreflect.Message { - mi := &file_user_proto_msgTypes[35] + mi := &file_user_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2329,7 +2542,7 @@ func (x *GetApiRequestByTransactionIdResponse) ProtoReflect() protoreflect.Messa // Deprecated: Use GetApiRequestByTransactionIdResponse.ProtoReflect.Descriptor instead. func (*GetApiRequestByTransactionIdResponse) Descriptor() ([]byte, []int) { - return file_user_proto_rawDescGZIP(), []int{35} + return file_user_proto_rawDescGZIP(), []int{38} } func (x *GetApiRequestByTransactionIdResponse) GetId() int64 { @@ -2503,241 +2716,267 @@ var file_user_proto_rawDesc = []byte{ 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x41, 0x75, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x41, 0x75, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x73, 0x41, 0x75, 0x74, 0x68, 0x22, - 0xa8, 0x01, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, + 0x42, 0x0a, 0x0f, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, + 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, + 0x69, 0x7a, 0x65, 0x22, 0x47, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x74, 0x65, 0x6d, + 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0xe4, 0x01, 0x0a, + 0x08, 0x55, 0x73, 0x65, 0x72, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, + 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, + 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, + 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x64, 0x69, + 0x73, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x45, 0x78, + 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x71, 0x75, + 0x6f, 0x74, 0x61, 0x45, 0x78, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x62, + 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x62, 0x61, + 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x22, 0xa8, 0x01, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x61, + 0x6c, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x75, + 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, + 0x65, 0x72, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x70, + 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x22, 0x16, + 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x57, 0x61, 0x6c, + 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0x70, 0x0a, 0x11, 0x47, 0x65, + 0x74, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, + 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, + 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x57, 0x0a, 0x14, + 0x47, 0x65, 0x74, 0x44, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x70, 0x61, 0x67, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x43, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x44, 0x65, 0x64, 0x75, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, + 0x0a, 0x0a, 0x64, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x44, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, + 0x64, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x4b, 0x0a, 0x22, 0x47, 0x65, + 0x74, 0x44, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x79, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, - 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, - 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, - 0x72, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x06, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x22, 0x16, 0x0a, 0x14, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x22, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0x70, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x57, 0x61, 0x6c, - 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, - 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, - 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x18, - 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x57, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x44, - 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, - 0x65, 0x22, 0x43, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x44, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x0a, 0x64, 0x65, - 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, - 0x2e, 0x44, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x64, 0x65, 0x64, 0x75, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x4b, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x44, 0x65, 0x64, - 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xac, 0x01, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x44, + 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x92, 0x01, 0x0a, 0x09, 0x44, 0x65, 0x64, 0x75, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, + 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x61, + 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x91, 0x01, 0x0a, 0x15, + 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x20, + 0x0a, 0x0c, 0x6f, 0x75, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x6e, 0x6f, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x4e, 0x6f, + 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x61, 0x79, 0x6d, + 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0d, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, + 0x18, 0x0a, 0x16, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x57, 0x61, 0x6c, 0x6c, 0x65, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5b, 0x0a, 0x0f, 0x52, 0x65, 0x63, + 0x68, 0x61, 0x72, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, + 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, + 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, + 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x61, + 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x4b, 0x0a, 0x10, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, + 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x04, 0x6c, 0x69, + 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x52, 0x65, 0x63, 0x68, 0x61, + 0x72, 0x67, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, + 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x22, 0xfd, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, + 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x25, 0x0a, + 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0c, 0x6f, 0x75, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x64, + 0x65, 0x5f, 0x6e, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x54, + 0x72, 0x61, 0x64, 0x65, 0x4e, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x25, + 0x0a, 0x0e, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, + 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x22, 0xe1, 0x01, 0x0a, 0x14, 0x41, 0x64, 0x64, 0x41, 0x70, 0x69, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x22, 0xac, 0x01, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x44, 0x65, 0x64, 0x75, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, - 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, - 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, - 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x41, 0x74, 0x22, 0x92, 0x01, 0x0a, 0x09, 0x44, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x91, 0x01, 0x0a, 0x15, 0x52, 0x65, 0x63, 0x68, - 0x61, 0x72, 0x67, 0x65, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0c, 0x6f, 0x75, - 0x74, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x6e, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x4e, 0x6f, 0x12, 0x16, 0x0a, 0x06, - 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x6d, - 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, - 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x70, 0x61, - 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0x18, 0x0a, 0x16, 0x52, - 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5b, 0x0a, 0x0f, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, - 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, - 0x7a, 0x65, 0x22, 0x4b, 0x0a, 0x10, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x49, - 0x74, 0x65, 0x6d, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, - 0xfd, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x49, 0x74, 0x65, 0x6d, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x12, 0x20, 0x0a, 0x0c, 0x6f, 0x75, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x6e, 0x6f, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, - 0x4e, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x02, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x61, - 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x0d, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, - 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, - 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, - 0xe1, 0x01, 0x0a, 0x14, 0x41, 0x64, 0x64, 0x41, 0x70, 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, - 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x73, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x73, 0x12, 0x16, 0x0a, - 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, - 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x22, 0x31, 0x0a, 0x15, 0x41, 0x64, 0x64, 0x41, 0x70, 0x69, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, - 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x58, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x70, 0x69, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, - 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, - 0x22, 0x48, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, 0x70, 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x0c, 0x61, 0x70, - 0x69, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x0b, 0x2e, 0x41, 0x70, 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0b, 0x61, - 0x70, 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x22, 0xe7, 0x01, 0x0a, 0x0a, 0x41, - 0x70, 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, - 0x64, 0x75, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x73, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x73, 0x12, 0x16, - 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x22, 0x4c, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x41, 0x70, 0x69, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x64, 0x22, 0x81, 0x02, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x41, 0x70, 0x69, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x42, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x70, - 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, - 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x73, - 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x32, 0xcf, 0x01, 0x0a, 0x0a, 0x45, 0x6e, 0x74, 0x65, 0x72, - 0x70, 0x72, 0x69, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x50, 0x65, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x12, 0x18, 0x2e, - 0x47, 0x65, 0x74, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, - 0x72, 0x69, 0x73, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x65, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x38, 0x0a, 0x10, 0x52, 0x65, 0x76, 0x69, 0x65, 0x77, 0x45, 0x6e, 0x74, 0x65, - 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x12, 0x14, 0x2e, 0x52, 0x65, 0x76, 0x69, 0x65, 0x77, 0x45, - 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x14, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, - 0x41, 0x75, 0x74, 0x68, 0x12, 0x12, 0x2e, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, - 0x65, 0x41, 0x75, 0x74, 0x68, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x86, 0x01, 0x0a, 0x04, 0x41, 0x75, 0x74, - 0x68, 0x12, 0x2c, 0x0a, 0x0c, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, - 0x72, 0x12, 0x0c, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, - 0x0e, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x22, 0x0a, 0x09, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x12, 0x09, 0x2e, 0x4c, - 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x0a, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x2c, 0x0a, 0x0e, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x67, 0x69, - 0x6e, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0e, 0x2e, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x67, - 0x69, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x0a, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x32, 0xb4, 0x01, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x08, 0x55, 0x73, - 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0c, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x0d, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x2d, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, - 0x66, 0x6f, 0x12, 0x0c, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, - 0x1a, 0x10, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x54, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, - 0x69, 0x73, 0x65, 0x41, 0x75, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x2e, - 0x47, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x41, 0x75, 0x74, - 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x47, 0x65, 0x74, - 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x41, 0x75, 0x74, 0x68, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x32, 0xa5, 0x03, 0x0a, 0x0d, 0x57, 0x61, 0x6c, - 0x6c, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x3b, 0x0a, 0x0c, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x12, 0x14, 0x2e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x15, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x57, 0x61, - 0x6c, 0x6c, 0x65, 0x74, 0x12, 0x11, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x6c, - 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0d, 0x47, - 0x65, 0x74, 0x44, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x15, 0x2e, 0x47, - 0x65, 0x74, 0x44, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x68, 0x0a, 0x1b, 0x47, - 0x65, 0x74, 0x44, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x79, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x23, 0x2e, 0x47, 0x65, 0x74, - 0x44, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x24, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x79, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x0e, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, - 0x65, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x12, 0x16, 0x2e, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, - 0x67, 0x65, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x17, 0x2e, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x52, - 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x10, 0x2e, 0x52, 0x65, - 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, - 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x32, 0x83, 0x02, 0x0a, 0x11, 0x41, 0x70, 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x3e, 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x41, 0x70, 0x69, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x70, 0x69, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, - 0x2e, 0x41, 0x64, 0x64, 0x41, 0x70, 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x69, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x16, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, - 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x17, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6b, 0x0a, 0x1c, 0x47, 0x65, 0x74, - 0x41, 0x70, 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x79, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x24, 0x2e, 0x47, 0x65, 0x74, 0x41, + 0x6e, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, + 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x72, 0x67, + 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, + 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x31, 0x0a, 0x15, 0x41, 0x64, 0x64, 0x41, 0x70, + 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x58, 0x0a, 0x15, 0x47, 0x65, + 0x74, 0x41, 0x70, 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, + 0x73, 0x69, 0x7a, 0x65, 0x22, 0x48, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, 0x70, 0x69, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, + 0x0a, 0x0c, 0x61, 0x70, 0x69, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x41, 0x70, 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x52, 0x0b, 0x61, 0x70, 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x22, 0xe7, + 0x01, 0x0a, 0x0a, 0x41, 0x70, 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x25, 0x0a, + 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x21, 0x0a, + 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x72, + 0x67, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x63, 0x68, 0x61, 0x72, 0x67, + 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x4c, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x41, 0x70, 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x25, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, - 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x08, 0x5a, 0x06, 0x2e, 0x2f, 0x75, 0x73, 0x65, 0x72, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x25, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x81, 0x02, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x41, 0x70, + 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x25, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, + 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x6f, + 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x68, + 0x61, 0x72, 0x67, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x63, 0x68, 0x61, + 0x72, 0x67, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x1c, 0x0a, 0x09, + 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x32, 0xcf, 0x01, 0x0a, 0x0a, 0x45, + 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x14, 0x47, 0x65, 0x74, + 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, + 0x65, 0x12, 0x18, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x6e, + 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x47, 0x65, + 0x74, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, + 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x38, 0x0a, 0x10, 0x52, 0x65, 0x76, 0x69, 0x65, 0x77, + 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x12, 0x14, 0x2e, 0x52, 0x65, 0x76, + 0x69, 0x65, 0x77, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x52, 0x65, 0x71, + 0x1a, 0x0e, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x3a, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, + 0x72, 0x69, 0x73, 0x65, 0x41, 0x75, 0x74, 0x68, 0x12, 0x12, 0x2e, 0x45, 0x6e, 0x74, 0x65, 0x72, + 0x70, 0x72, 0x69, 0x73, 0x65, 0x41, 0x75, 0x74, 0x68, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x86, 0x01, 0x0a, + 0x04, 0x41, 0x75, 0x74, 0x68, 0x12, 0x2c, 0x0a, 0x0c, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, + 0x72, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0c, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, + 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x22, 0x0a, 0x09, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, + 0x12, 0x09, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x0a, 0x2e, 0x4c, 0x6f, + 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2c, 0x0a, 0x0e, 0x50, 0x68, 0x6f, 0x6e, 0x65, + 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0e, 0x2e, 0x50, 0x68, 0x6f, 0x6e, + 0x65, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x0a, 0x2e, 0x4c, 0x6f, 0x67, 0x69, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x32, 0xe8, 0x01, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x27, + 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0c, 0x2e, 0x55, 0x73, 0x65, + 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x0d, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2d, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x55, 0x73, + 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0c, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x54, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x74, + 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x41, 0x75, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x1b, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, + 0x65, 0x41, 0x75, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1c, + 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x41, 0x75, + 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x32, 0x0a, 0x0b, + 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x10, 0x2e, 0x55, 0x73, + 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, + 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x32, 0xa5, 0x03, 0x0a, 0x0d, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x12, 0x3b, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x61, 0x6c, 0x6c, + 0x65, 0x74, 0x12, 0x14, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x61, 0x6c, 0x6c, 0x65, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x32, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x12, 0x11, 0x2e, 0x47, + 0x65, 0x74, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x12, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x44, 0x65, 0x64, 0x75, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x15, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x64, 0x75, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x47, 0x65, + 0x74, 0x44, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x68, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x44, 0x65, 0x64, 0x75, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x42, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x12, 0x23, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x42, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x64, + 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, + 0x0e, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x12, + 0x16, 0x2e, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, + 0x67, 0x65, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x36, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x4c, + 0x69, 0x73, 0x74, 0x12, 0x10, 0x2e, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x83, 0x02, 0x0a, 0x11, 0x41, 0x70, 0x69, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x3e, + 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x41, 0x70, 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x15, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x70, 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x70, 0x69, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, + 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, + 0x12, 0x16, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, + 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x6b, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x41, 0x70, 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x42, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x12, 0x24, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x42, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x69, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x08, + 0x5a, 0x06, 0x2e, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2752,7 +2991,7 @@ func file_user_proto_rawDescGZIP() []byte { return file_user_proto_rawDescData } -var file_user_proto_msgTypes = make([]protoimpl.MessageInfo, 36) +var file_user_proto_msgTypes = make([]protoimpl.MessageInfo, 39) var file_user_proto_goTypes = []any{ (*EmptyResponse)(nil), // 0: EmptyResponse (*GetPendingEnterpriseReq)(nil), // 1: GetPendingEnterpriseReq @@ -2769,74 +3008,80 @@ var file_user_proto_goTypes = []any{ (*GetUserInfoResp)(nil), // 12: GetUserInfoResp (*GetEnterpriseAuthStatusReq)(nil), // 13: GetEnterpriseAuthStatusReq (*GetEnterpriseAuthStatusResp)(nil), // 14: GetEnterpriseAuthStatusResp - (*UpdateWalletRequest)(nil), // 15: UpdateWalletRequest - (*UpdateWalletResponse)(nil), // 16: UpdateWalletResponse - (*GetWalletRequest)(nil), // 17: GetWalletRequest - (*GetWalletResponse)(nil), // 18: GetWalletResponse - (*GetDeductionsRequest)(nil), // 19: GetDeductionsRequest - (*GetDeductionsResponse)(nil), // 20: GetDeductionsResponse - (*GetDeductionByTransactionIdRequest)(nil), // 21: GetDeductionByTransactionIdRequest - (*GetDeductionByTransactionIdResponse)(nil), // 22: GetDeductionByTransactionIdResponse - (*Deduction)(nil), // 23: Deduction - (*RechargeWalletRequest)(nil), // 24: RechargeWalletRequest - (*RechargeWalletResponse)(nil), // 25: RechargeWalletResponse - (*RechargeRequest)(nil), // 26: RechargeRequest - (*RechargeResponse)(nil), // 27: RechargeResponse - (*RechargeItem)(nil), // 28: RechargeItem - (*AddApiRequestRequest)(nil), // 29: AddApiRequestRequest - (*AddApiRequestResponse)(nil), // 30: AddApiRequestResponse - (*GetApiRequestsRequest)(nil), // 31: GetApiRequestsRequest - (*GetApiRequestsResponse)(nil), // 32: GetApiRequestsResponse - (*ApiRequest)(nil), // 33: ApiRequest - (*GetApiRequestByTransactionIdRequest)(nil), // 34: GetApiRequestByTransactionIdRequest - (*GetApiRequestByTransactionIdResponse)(nil), // 35: GetApiRequestByTransactionIdResponse + (*UserListRequest)(nil), // 15: UserListRequest + (*UserListResponse)(nil), // 16: UserListResponse + (*UserItem)(nil), // 17: UserItem + (*UpdateWalletRequest)(nil), // 18: UpdateWalletRequest + (*UpdateWalletResponse)(nil), // 19: UpdateWalletResponse + (*GetWalletRequest)(nil), // 20: GetWalletRequest + (*GetWalletResponse)(nil), // 21: GetWalletResponse + (*GetDeductionsRequest)(nil), // 22: GetDeductionsRequest + (*GetDeductionsResponse)(nil), // 23: GetDeductionsResponse + (*GetDeductionByTransactionIdRequest)(nil), // 24: GetDeductionByTransactionIdRequest + (*GetDeductionByTransactionIdResponse)(nil), // 25: GetDeductionByTransactionIdResponse + (*Deduction)(nil), // 26: Deduction + (*RechargeWalletRequest)(nil), // 27: RechargeWalletRequest + (*RechargeWalletResponse)(nil), // 28: RechargeWalletResponse + (*RechargeRequest)(nil), // 29: RechargeRequest + (*RechargeResponse)(nil), // 30: RechargeResponse + (*RechargeItem)(nil), // 31: RechargeItem + (*AddApiRequestRequest)(nil), // 32: AddApiRequestRequest + (*AddApiRequestResponse)(nil), // 33: AddApiRequestResponse + (*GetApiRequestsRequest)(nil), // 34: GetApiRequestsRequest + (*GetApiRequestsResponse)(nil), // 35: GetApiRequestsResponse + (*ApiRequest)(nil), // 36: ApiRequest + (*GetApiRequestByTransactionIdRequest)(nil), // 37: GetApiRequestByTransactionIdRequest + (*GetApiRequestByTransactionIdResponse)(nil), // 38: GetApiRequestByTransactionIdResponse } var file_user_proto_depIdxs = []int32{ 2, // 0: GetPendingEnterpriseResp.list:type_name -> EnterpriseItem - 23, // 1: GetDeductionsResponse.deductions:type_name -> Deduction - 28, // 2: RechargeResponse.list:type_name -> RechargeItem - 33, // 3: GetApiRequestsResponse.api_requests:type_name -> ApiRequest - 1, // 4: Enterprise.GetPendingEnterprise:input_type -> GetPendingEnterpriseReq - 4, // 5: Enterprise.ReviewEnterprise:input_type -> ReviewEnterpriseReq - 5, // 6: Enterprise.CreateEnterpriseAuth:input_type -> EnterpriseAuthReq - 6, // 7: Auth.RegisterUser:input_type -> RegisterReq - 7, // 8: Auth.LoginUser:input_type -> LoginReq - 8, // 9: Auth.PhoneLoginUser:input_type -> PhoneLoginReq - 10, // 10: User.UserInfo:input_type -> UserInfoReq - 10, // 11: User.GetUserInfo:input_type -> UserInfoReq - 13, // 12: User.GetEnterpriseAuthStatus:input_type -> GetEnterpriseAuthStatusReq - 15, // 13: WalletService.UpdateWallet:input_type -> UpdateWalletRequest - 17, // 14: WalletService.GetWallet:input_type -> GetWalletRequest - 19, // 15: WalletService.GetDeductions:input_type -> GetDeductionsRequest - 21, // 16: WalletService.GetDeductionByTransactionId:input_type -> GetDeductionByTransactionIdRequest - 24, // 17: WalletService.RechargeWallet:input_type -> RechargeWalletRequest - 26, // 18: WalletService.GetRechargeList:input_type -> RechargeRequest - 29, // 19: ApiRequestService.AddApiRequest:input_type -> AddApiRequestRequest - 31, // 20: ApiRequestService.GetApiRequests:input_type -> GetApiRequestsRequest - 34, // 21: ApiRequestService.GetApiRequestByTransactionId:input_type -> GetApiRequestByTransactionIdRequest - 3, // 22: Enterprise.GetPendingEnterprise:output_type -> GetPendingEnterpriseResp - 0, // 23: Enterprise.ReviewEnterprise:output_type -> EmptyResponse - 0, // 24: Enterprise.CreateEnterpriseAuth:output_type -> EmptyResponse - 0, // 25: Auth.RegisterUser:output_type -> EmptyResponse - 9, // 26: Auth.LoginUser:output_type -> LoginResp - 9, // 27: Auth.PhoneLoginUser:output_type -> LoginResp - 11, // 28: User.UserInfo:output_type -> UserInfoResp - 12, // 29: User.GetUserInfo:output_type -> GetUserInfoResp - 14, // 30: User.GetEnterpriseAuthStatus:output_type -> GetEnterpriseAuthStatusResp - 16, // 31: WalletService.UpdateWallet:output_type -> UpdateWalletResponse - 18, // 32: WalletService.GetWallet:output_type -> GetWalletResponse - 20, // 33: WalletService.GetDeductions:output_type -> GetDeductionsResponse - 22, // 34: WalletService.GetDeductionByTransactionId:output_type -> GetDeductionByTransactionIdResponse - 25, // 35: WalletService.RechargeWallet:output_type -> RechargeWalletResponse - 27, // 36: WalletService.GetRechargeList:output_type -> RechargeResponse - 30, // 37: ApiRequestService.AddApiRequest:output_type -> AddApiRequestResponse - 32, // 38: ApiRequestService.GetApiRequests:output_type -> GetApiRequestsResponse - 35, // 39: ApiRequestService.GetApiRequestByTransactionId:output_type -> GetApiRequestByTransactionIdResponse - 22, // [22:40] is the sub-list for method output_type - 4, // [4:22] 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 + 17, // 1: UserListResponse.list:type_name -> UserItem + 26, // 2: GetDeductionsResponse.deductions:type_name -> Deduction + 31, // 3: RechargeResponse.list:type_name -> RechargeItem + 36, // 4: GetApiRequestsResponse.api_requests:type_name -> ApiRequest + 1, // 5: Enterprise.GetPendingEnterprise:input_type -> GetPendingEnterpriseReq + 4, // 6: Enterprise.ReviewEnterprise:input_type -> ReviewEnterpriseReq + 5, // 7: Enterprise.CreateEnterpriseAuth:input_type -> EnterpriseAuthReq + 6, // 8: Auth.RegisterUser:input_type -> RegisterReq + 7, // 9: Auth.LoginUser:input_type -> LoginReq + 8, // 10: Auth.PhoneLoginUser:input_type -> PhoneLoginReq + 10, // 11: User.UserInfo:input_type -> UserInfoReq + 10, // 12: User.GetUserInfo:input_type -> UserInfoReq + 13, // 13: User.GetEnterpriseAuthStatus:input_type -> GetEnterpriseAuthStatusReq + 15, // 14: User.GetUserList:input_type -> UserListRequest + 18, // 15: WalletService.UpdateWallet:input_type -> UpdateWalletRequest + 20, // 16: WalletService.GetWallet:input_type -> GetWalletRequest + 22, // 17: WalletService.GetDeductions:input_type -> GetDeductionsRequest + 24, // 18: WalletService.GetDeductionByTransactionId:input_type -> GetDeductionByTransactionIdRequest + 27, // 19: WalletService.RechargeWallet:input_type -> RechargeWalletRequest + 29, // 20: WalletService.GetRechargeList:input_type -> RechargeRequest + 32, // 21: ApiRequestService.AddApiRequest:input_type -> AddApiRequestRequest + 34, // 22: ApiRequestService.GetApiRequests:input_type -> GetApiRequestsRequest + 37, // 23: ApiRequestService.GetApiRequestByTransactionId:input_type -> GetApiRequestByTransactionIdRequest + 3, // 24: Enterprise.GetPendingEnterprise:output_type -> GetPendingEnterpriseResp + 0, // 25: Enterprise.ReviewEnterprise:output_type -> EmptyResponse + 0, // 26: Enterprise.CreateEnterpriseAuth:output_type -> EmptyResponse + 0, // 27: Auth.RegisterUser:output_type -> EmptyResponse + 9, // 28: Auth.LoginUser:output_type -> LoginResp + 9, // 29: Auth.PhoneLoginUser:output_type -> LoginResp + 11, // 30: User.UserInfo:output_type -> UserInfoResp + 12, // 31: User.GetUserInfo:output_type -> GetUserInfoResp + 14, // 32: User.GetEnterpriseAuthStatus:output_type -> GetEnterpriseAuthStatusResp + 16, // 33: User.GetUserList:output_type -> UserListResponse + 19, // 34: WalletService.UpdateWallet:output_type -> UpdateWalletResponse + 21, // 35: WalletService.GetWallet:output_type -> GetWalletResponse + 23, // 36: WalletService.GetDeductions:output_type -> GetDeductionsResponse + 25, // 37: WalletService.GetDeductionByTransactionId:output_type -> GetDeductionByTransactionIdResponse + 28, // 38: WalletService.RechargeWallet:output_type -> RechargeWalletResponse + 30, // 39: WalletService.GetRechargeList:output_type -> RechargeResponse + 33, // 40: ApiRequestService.AddApiRequest:output_type -> AddApiRequestResponse + 35, // 41: ApiRequestService.GetApiRequests:output_type -> GetApiRequestsResponse + 38, // 42: ApiRequestService.GetApiRequestByTransactionId:output_type -> GetApiRequestByTransactionIdResponse + 24, // [24:43] is the sub-list for method output_type + 5, // [5:24] is the sub-list for method input_type + 5, // [5:5] is the sub-list for extension type_name + 5, // [5:5] is the sub-list for extension extendee + 0, // [0:5] is the sub-list for field type_name } func init() { file_user_proto_init() } @@ -3026,7 +3271,7 @@ func file_user_proto_init() { } } file_user_proto_msgTypes[15].Exporter = func(v any, i int) any { - switch v := v.(*UpdateWalletRequest); i { + switch v := v.(*UserListRequest); i { case 0: return &v.state case 1: @@ -3038,7 +3283,7 @@ func file_user_proto_init() { } } file_user_proto_msgTypes[16].Exporter = func(v any, i int) any { - switch v := v.(*UpdateWalletResponse); i { + switch v := v.(*UserListResponse); i { case 0: return &v.state case 1: @@ -3050,7 +3295,7 @@ func file_user_proto_init() { } } file_user_proto_msgTypes[17].Exporter = func(v any, i int) any { - switch v := v.(*GetWalletRequest); i { + switch v := v.(*UserItem); i { case 0: return &v.state case 1: @@ -3062,7 +3307,7 @@ func file_user_proto_init() { } } file_user_proto_msgTypes[18].Exporter = func(v any, i int) any { - switch v := v.(*GetWalletResponse); i { + switch v := v.(*UpdateWalletRequest); i { case 0: return &v.state case 1: @@ -3074,7 +3319,7 @@ func file_user_proto_init() { } } file_user_proto_msgTypes[19].Exporter = func(v any, i int) any { - switch v := v.(*GetDeductionsRequest); i { + switch v := v.(*UpdateWalletResponse); i { case 0: return &v.state case 1: @@ -3086,7 +3331,7 @@ func file_user_proto_init() { } } file_user_proto_msgTypes[20].Exporter = func(v any, i int) any { - switch v := v.(*GetDeductionsResponse); i { + switch v := v.(*GetWalletRequest); i { case 0: return &v.state case 1: @@ -3098,7 +3343,7 @@ func file_user_proto_init() { } } file_user_proto_msgTypes[21].Exporter = func(v any, i int) any { - switch v := v.(*GetDeductionByTransactionIdRequest); i { + switch v := v.(*GetWalletResponse); i { case 0: return &v.state case 1: @@ -3110,7 +3355,7 @@ func file_user_proto_init() { } } file_user_proto_msgTypes[22].Exporter = func(v any, i int) any { - switch v := v.(*GetDeductionByTransactionIdResponse); i { + switch v := v.(*GetDeductionsRequest); i { case 0: return &v.state case 1: @@ -3122,7 +3367,7 @@ func file_user_proto_init() { } } file_user_proto_msgTypes[23].Exporter = func(v any, i int) any { - switch v := v.(*Deduction); i { + switch v := v.(*GetDeductionsResponse); i { case 0: return &v.state case 1: @@ -3134,7 +3379,7 @@ func file_user_proto_init() { } } file_user_proto_msgTypes[24].Exporter = func(v any, i int) any { - switch v := v.(*RechargeWalletRequest); i { + switch v := v.(*GetDeductionByTransactionIdRequest); i { case 0: return &v.state case 1: @@ -3146,7 +3391,7 @@ func file_user_proto_init() { } } file_user_proto_msgTypes[25].Exporter = func(v any, i int) any { - switch v := v.(*RechargeWalletResponse); i { + switch v := v.(*GetDeductionByTransactionIdResponse); i { case 0: return &v.state case 1: @@ -3158,7 +3403,7 @@ func file_user_proto_init() { } } file_user_proto_msgTypes[26].Exporter = func(v any, i int) any { - switch v := v.(*RechargeRequest); i { + switch v := v.(*Deduction); i { case 0: return &v.state case 1: @@ -3170,7 +3415,7 @@ func file_user_proto_init() { } } file_user_proto_msgTypes[27].Exporter = func(v any, i int) any { - switch v := v.(*RechargeResponse); i { + switch v := v.(*RechargeWalletRequest); i { case 0: return &v.state case 1: @@ -3182,7 +3427,7 @@ func file_user_proto_init() { } } file_user_proto_msgTypes[28].Exporter = func(v any, i int) any { - switch v := v.(*RechargeItem); i { + switch v := v.(*RechargeWalletResponse); i { case 0: return &v.state case 1: @@ -3194,7 +3439,7 @@ func file_user_proto_init() { } } file_user_proto_msgTypes[29].Exporter = func(v any, i int) any { - switch v := v.(*AddApiRequestRequest); i { + switch v := v.(*RechargeRequest); i { case 0: return &v.state case 1: @@ -3206,7 +3451,7 @@ func file_user_proto_init() { } } file_user_proto_msgTypes[30].Exporter = func(v any, i int) any { - switch v := v.(*AddApiRequestResponse); i { + switch v := v.(*RechargeResponse); i { case 0: return &v.state case 1: @@ -3218,7 +3463,7 @@ func file_user_proto_init() { } } file_user_proto_msgTypes[31].Exporter = func(v any, i int) any { - switch v := v.(*GetApiRequestsRequest); i { + switch v := v.(*RechargeItem); i { case 0: return &v.state case 1: @@ -3230,7 +3475,7 @@ func file_user_proto_init() { } } file_user_proto_msgTypes[32].Exporter = func(v any, i int) any { - switch v := v.(*GetApiRequestsResponse); i { + switch v := v.(*AddApiRequestRequest); i { case 0: return &v.state case 1: @@ -3242,7 +3487,7 @@ func file_user_proto_init() { } } file_user_proto_msgTypes[33].Exporter = func(v any, i int) any { - switch v := v.(*ApiRequest); i { + switch v := v.(*AddApiRequestResponse); i { case 0: return &v.state case 1: @@ -3254,7 +3499,7 @@ func file_user_proto_init() { } } file_user_proto_msgTypes[34].Exporter = func(v any, i int) any { - switch v := v.(*GetApiRequestByTransactionIdRequest); i { + switch v := v.(*GetApiRequestsRequest); i { case 0: return &v.state case 1: @@ -3266,6 +3511,42 @@ func file_user_proto_init() { } } file_user_proto_msgTypes[35].Exporter = func(v any, i int) any { + switch v := v.(*GetApiRequestsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_user_proto_msgTypes[36].Exporter = func(v any, i int) any { + switch v := v.(*ApiRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_user_proto_msgTypes[37].Exporter = func(v any, i int) any { + switch v := v.(*GetApiRequestByTransactionIdRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_user_proto_msgTypes[38].Exporter = func(v any, i int) any { switch v := v.(*GetApiRequestByTransactionIdResponse); i { case 0: return &v.state @@ -3284,7 +3565,7 @@ func file_user_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_user_proto_rawDesc, NumEnums: 0, - NumMessages: 36, + NumMessages: 39, NumExtensions: 0, NumServices: 5, }, diff --git a/apps/user/user/user_grpc.pb.go b/apps/user/user/user_grpc.pb.go index 837a500..7620319 100644 --- a/apps/user/user/user_grpc.pb.go +++ b/apps/user/user/user_grpc.pb.go @@ -376,6 +376,7 @@ const ( User_UserInfo_FullMethodName = "/User/UserInfo" User_GetUserInfo_FullMethodName = "/User/GetUserInfo" User_GetEnterpriseAuthStatus_FullMethodName = "/User/GetEnterpriseAuthStatus" + User_GetUserList_FullMethodName = "/User/GetUserList" ) // UserClient is the client API for User service. @@ -386,6 +387,7 @@ type UserClient interface { UserInfo(ctx context.Context, in *UserInfoReq, opts ...grpc.CallOption) (*UserInfoResp, error) GetUserInfo(ctx context.Context, in *UserInfoReq, opts ...grpc.CallOption) (*GetUserInfoResp, error) GetEnterpriseAuthStatus(ctx context.Context, in *GetEnterpriseAuthStatusReq, opts ...grpc.CallOption) (*GetEnterpriseAuthStatusResp, error) + GetUserList(ctx context.Context, in *UserListRequest, opts ...grpc.CallOption) (*UserListResponse, error) } type userClient struct { @@ -426,6 +428,16 @@ func (c *userClient) GetEnterpriseAuthStatus(ctx context.Context, in *GetEnterpr return out, nil } +func (c *userClient) GetUserList(ctx context.Context, in *UserListRequest, opts ...grpc.CallOption) (*UserListResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(UserListResponse) + err := c.cc.Invoke(ctx, User_GetUserList_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + // UserServer is the server API for User service. // All implementations must embed UnimplementedUserServer // for forward compatibility @@ -434,6 +446,7 @@ type UserServer interface { UserInfo(context.Context, *UserInfoReq) (*UserInfoResp, error) GetUserInfo(context.Context, *UserInfoReq) (*GetUserInfoResp, error) GetEnterpriseAuthStatus(context.Context, *GetEnterpriseAuthStatusReq) (*GetEnterpriseAuthStatusResp, error) + GetUserList(context.Context, *UserListRequest) (*UserListResponse, error) mustEmbedUnimplementedUserServer() } @@ -450,6 +463,9 @@ func (UnimplementedUserServer) GetUserInfo(context.Context, *UserInfoReq) (*GetU func (UnimplementedUserServer) GetEnterpriseAuthStatus(context.Context, *GetEnterpriseAuthStatusReq) (*GetEnterpriseAuthStatusResp, error) { return nil, status.Errorf(codes.Unimplemented, "method GetEnterpriseAuthStatus not implemented") } +func (UnimplementedUserServer) GetUserList(context.Context, *UserListRequest) (*UserListResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetUserList not implemented") +} func (UnimplementedUserServer) mustEmbedUnimplementedUserServer() {} // UnsafeUserServer may be embedded to opt out of forward compatibility for this service. @@ -517,6 +533,24 @@ func _User_GetEnterpriseAuthStatus_Handler(srv interface{}, ctx context.Context, return interceptor(ctx, in, info, handler) } +func _User_GetUserList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UserListRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(UserServer).GetUserList(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: User_GetUserList_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(UserServer).GetUserList(ctx, req.(*UserListRequest)) + } + return interceptor(ctx, in, info, handler) +} + // User_ServiceDesc is the grpc.ServiceDesc for User service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -536,6 +570,10 @@ var User_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetEnterpriseAuthStatus", Handler: _User_GetEnterpriseAuthStatus_Handler, }, + { + MethodName: "GetUserList", + Handler: _User_GetUserList_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "user.proto",