From 9ca6d94f518d56ba38350da16176baa6a8819dd5 Mon Sep 17 00:00:00 2001 From: Ryan SU <1137661202@qq.com> Date: Sun, 5 Feb 2023 10:44:53 +0800 Subject: [PATCH 1/2] feat: post management for ent --- pkg/ent/client.go | 160 + pkg/ent/config.go | 2 + pkg/ent/department.go | 22 +- pkg/ent/department/department.go | 14 +- pkg/ent/department/where.go | 90 +- pkg/ent/department_create.go | 38 +- pkg/ent/department_update.go | 92 +- pkg/ent/ent.go | 2 + pkg/ent/hook/hook.go | 12 + pkg/ent/menu.go | 24 +- pkg/ent/menu/menu.go | 10 +- pkg/ent/menu/where.go | 90 +- pkg/ent/menu_create.go | 50 +- pkg/ent/menu_update.go | 108 +- pkg/ent/migrate/schema.go | 67 +- pkg/ent/mutation.go | 1519 +++++- pkg/ent/pagination.go | 80 + pkg/ent/post.go | 194 + pkg/ent/post/post.go | 74 + pkg/ent/post/where.go | 515 ++ pkg/ent/post_create.go | 363 ++ pkg/ent/post_delete.go | 96 + pkg/ent/post_query.go | 608 +++ pkg/ent/post_update.go | 586 ++ pkg/ent/predicate/predicate.go | 3 + pkg/ent/runtime.go | 74 +- pkg/ent/schema/department.go | 4 +- pkg/ent/schema/menu.go | 2 +- pkg/ent/schema/mixins/sort.go | 21 + pkg/ent/schema/post.go | 47 + pkg/ent/schema/user.go | 2 + pkg/ent/tx.go | 3 + pkg/ent/user.go | 36 +- pkg/ent/user/user.go | 16 +- pkg/ent/user/where.go | 62 + pkg/ent/user_create.go | 44 + pkg/ent/user_query.go | 74 +- pkg/ent/user_update.go | 133 + rpc/core.proto | 503 +- rpc/coreclient/core.go | 35 + rpc/desc/post.proto | 43 + .../logic/post/batch_delete_post_logic.go | 46 + .../logic/post/create_or_update_post_logic.go | 76 + rpc/internal/logic/post/delete_post_logic.go | 45 + .../logic/post/get_post_list_logic.go | 58 + .../logic/post/update_post_status_logic.go | 45 + rpc/internal/server/core_server.go | 27 + rpc/types/core/core.pb.go | 4762 +++++++++-------- rpc/types/core/core_grpc.pb.go | 192 + 49 files changed, 8132 insertions(+), 3037 deletions(-) create mode 100644 pkg/ent/post.go create mode 100644 pkg/ent/post/post.go create mode 100644 pkg/ent/post/where.go create mode 100644 pkg/ent/post_create.go create mode 100644 pkg/ent/post_delete.go create mode 100644 pkg/ent/post_query.go create mode 100644 pkg/ent/post_update.go create mode 100644 pkg/ent/schema/mixins/sort.go create mode 100644 pkg/ent/schema/post.go create mode 100755 rpc/desc/post.proto create mode 100644 rpc/internal/logic/post/batch_delete_post_logic.go create mode 100644 rpc/internal/logic/post/create_or_update_post_logic.go create mode 100644 rpc/internal/logic/post/delete_post_logic.go create mode 100644 rpc/internal/logic/post/get_post_list_logic.go create mode 100644 rpc/internal/logic/post/update_post_status_logic.go diff --git a/pkg/ent/client.go b/pkg/ent/client.go index ffb38b3c..6257960b 100644 --- a/pkg/ent/client.go +++ b/pkg/ent/client.go @@ -18,6 +18,7 @@ import ( "github.com/suyuan32/simple-admin-core/pkg/ent/menu" "github.com/suyuan32/simple-admin-core/pkg/ent/menuparam" "github.com/suyuan32/simple-admin-core/pkg/ent/oauthprovider" + "github.com/suyuan32/simple-admin-core/pkg/ent/post" "github.com/suyuan32/simple-admin-core/pkg/ent/role" "github.com/suyuan32/simple-admin-core/pkg/ent/token" "github.com/suyuan32/simple-admin-core/pkg/ent/user" @@ -46,6 +47,8 @@ type Client struct { MenuParam *MenuParamClient // OauthProvider is the client for interacting with the OauthProvider builders. OauthProvider *OauthProviderClient + // Post is the client for interacting with the Post builders. + Post *PostClient // Role is the client for interacting with the Role builders. Role *RoleClient // Token is the client for interacting with the Token builders. @@ -72,6 +75,7 @@ func (c *Client) init() { c.Menu = NewMenuClient(c.config) c.MenuParam = NewMenuParamClient(c.config) c.OauthProvider = NewOauthProviderClient(c.config) + c.Post = NewPostClient(c.config) c.Role = NewRoleClient(c.config) c.Token = NewTokenClient(c.config) c.User = NewUserClient(c.config) @@ -115,6 +119,7 @@ func (c *Client) Tx(ctx context.Context) (*Tx, error) { Menu: NewMenuClient(cfg), MenuParam: NewMenuParamClient(cfg), OauthProvider: NewOauthProviderClient(cfg), + Post: NewPostClient(cfg), Role: NewRoleClient(cfg), Token: NewTokenClient(cfg), User: NewUserClient(cfg), @@ -144,6 +149,7 @@ func (c *Client) BeginTx(ctx context.Context, opts *sql.TxOptions) (*Tx, error) Menu: NewMenuClient(cfg), MenuParam: NewMenuParamClient(cfg), OauthProvider: NewOauthProviderClient(cfg), + Post: NewPostClient(cfg), Role: NewRoleClient(cfg), Token: NewTokenClient(cfg), User: NewUserClient(cfg), @@ -182,6 +188,7 @@ func (c *Client) Use(hooks ...Hook) { c.Menu.Use(hooks...) c.MenuParam.Use(hooks...) c.OauthProvider.Use(hooks...) + c.Post.Use(hooks...) c.Role.Use(hooks...) c.Token.Use(hooks...) c.User.Use(hooks...) @@ -197,6 +204,7 @@ func (c *Client) Intercept(interceptors ...Interceptor) { c.Menu.Intercept(interceptors...) c.MenuParam.Intercept(interceptors...) c.OauthProvider.Intercept(interceptors...) + c.Post.Intercept(interceptors...) c.Role.Intercept(interceptors...) c.Token.Intercept(interceptors...) c.User.Intercept(interceptors...) @@ -219,6 +227,8 @@ func (c *Client) Mutate(ctx context.Context, m Mutation) (Value, error) { return c.MenuParam.mutate(ctx, m) case *OauthProviderMutation: return c.OauthProvider.mutate(ctx, m) + case *PostMutation: + return c.Post.mutate(ctx, m) case *RoleMutation: return c.Role.mutate(ctx, m) case *TokenMutation: @@ -1216,6 +1226,140 @@ func (c *OauthProviderClient) mutate(ctx context.Context, m *OauthProviderMutati } } +// PostClient is a client for the Post schema. +type PostClient struct { + config +} + +// NewPostClient returns a client for the Post from the given config. +func NewPostClient(c config) *PostClient { + return &PostClient{config: c} +} + +// Use adds a list of mutation hooks to the hooks stack. +// A call to `Use(f, g, h)` equals to `post.Hooks(f(g(h())))`. +func (c *PostClient) Use(hooks ...Hook) { + c.hooks.Post = append(c.hooks.Post, hooks...) +} + +// Use adds a list of query interceptors to the interceptors stack. +// A call to `Intercept(f, g, h)` equals to `post.Intercept(f(g(h())))`. +func (c *PostClient) Intercept(interceptors ...Interceptor) { + c.inters.Post = append(c.inters.Post, interceptors...) +} + +// Create returns a builder for creating a Post entity. +func (c *PostClient) Create() *PostCreate { + mutation := newPostMutation(c.config, OpCreate) + return &PostCreate{config: c.config, hooks: c.Hooks(), mutation: mutation} +} + +// CreateBulk returns a builder for creating a bulk of Post entities. +func (c *PostClient) CreateBulk(builders ...*PostCreate) *PostCreateBulk { + return &PostCreateBulk{config: c.config, builders: builders} +} + +// Update returns an update builder for Post. +func (c *PostClient) Update() *PostUpdate { + mutation := newPostMutation(c.config, OpUpdate) + return &PostUpdate{config: c.config, hooks: c.Hooks(), mutation: mutation} +} + +// UpdateOne returns an update builder for the given entity. +func (c *PostClient) UpdateOne(po *Post) *PostUpdateOne { + mutation := newPostMutation(c.config, OpUpdateOne, withPost(po)) + return &PostUpdateOne{config: c.config, hooks: c.Hooks(), mutation: mutation} +} + +// UpdateOneID returns an update builder for the given id. +func (c *PostClient) UpdateOneID(id uint64) *PostUpdateOne { + mutation := newPostMutation(c.config, OpUpdateOne, withPostID(id)) + return &PostUpdateOne{config: c.config, hooks: c.Hooks(), mutation: mutation} +} + +// Delete returns a delete builder for Post. +func (c *PostClient) Delete() *PostDelete { + mutation := newPostMutation(c.config, OpDelete) + return &PostDelete{config: c.config, hooks: c.Hooks(), mutation: mutation} +} + +// DeleteOne returns a builder for deleting the given entity. +func (c *PostClient) DeleteOne(po *Post) *PostDeleteOne { + return c.DeleteOneID(po.ID) +} + +// DeleteOneID returns a builder for deleting the given entity by its id. +func (c *PostClient) DeleteOneID(id uint64) *PostDeleteOne { + builder := c.Delete().Where(post.ID(id)) + builder.mutation.id = &id + builder.mutation.op = OpDeleteOne + return &PostDeleteOne{builder} +} + +// Query returns a query builder for Post. +func (c *PostClient) Query() *PostQuery { + return &PostQuery{ + config: c.config, + ctx: &QueryContext{Type: TypePost}, + inters: c.Interceptors(), + } +} + +// Get returns a Post entity by its id. +func (c *PostClient) Get(ctx context.Context, id uint64) (*Post, error) { + return c.Query().Where(post.ID(id)).Only(ctx) +} + +// GetX is like Get, but panics if an error occurs. +func (c *PostClient) GetX(ctx context.Context, id uint64) *Post { + obj, err := c.Get(ctx, id) + if err != nil { + panic(err) + } + return obj +} + +// QueryUser queries the user edge of a Post. +func (c *PostClient) QueryUser(po *Post) *UserQuery { + query := (&UserClient{config: c.config}).Query() + query.path = func(context.Context) (fromV *sql.Selector, _ error) { + id := po.ID + step := sqlgraph.NewStep( + sqlgraph.From(post.Table, post.FieldID, id), + sqlgraph.To(user.Table, user.FieldID), + sqlgraph.Edge(sqlgraph.O2M, true, post.UserTable, post.UserColumn), + ) + fromV = sqlgraph.Neighbors(po.driver.Dialect(), step) + return fromV, nil + } + return query +} + +// Hooks returns the client hooks. +func (c *PostClient) Hooks() []Hook { + return c.hooks.Post +} + +// Interceptors returns the client interceptors. +func (c *PostClient) Interceptors() []Interceptor { + return c.inters.Post +} + +func (c *PostClient) mutate(ctx context.Context, m *PostMutation) (Value, error) { + switch m.Op() { + case OpCreate: + return (&PostCreate{config: c.config, hooks: c.Hooks(), mutation: m}).Save(ctx) + case OpUpdate: + return (&PostUpdate{config: c.config, hooks: c.Hooks(), mutation: m}).Save(ctx) + case OpUpdateOne: + return (&PostUpdateOne{config: c.config, hooks: c.Hooks(), mutation: m}).Save(ctx) + case OpDelete, OpDeleteOne: + return (&PostDelete{config: c.config, hooks: c.Hooks(), mutation: m}).Exec(ctx) + default: + return nil, fmt.Errorf("ent: unknown Post mutation op: %q", m.Op()) + } +} + // RoleClient is a client for the Role schema. type RoleClient struct { config @@ -1577,6 +1721,22 @@ func (c *UserClient) QueryDepartment(u *User) *DepartmentQuery { return query } +// QueryPost queries the post edge of a User. +func (c *UserClient) QueryPost(u *User) *PostQuery { + query := (&PostClient{config: c.config}).Query() + query.path = func(context.Context) (fromV *sql.Selector, _ error) { + id := u.ID + step := sqlgraph.NewStep( + sqlgraph.From(user.Table, user.FieldID, id), + sqlgraph.To(post.Table, post.FieldID), + sqlgraph.Edge(sqlgraph.M2O, false, user.PostTable, user.PostColumn), + ) + fromV = sqlgraph.Neighbors(u.driver.Dialect(), step) + return fromV, nil + } + return query +} + // Hooks returns the client hooks. func (c *UserClient) Hooks() []Hook { return c.hooks.User diff --git a/pkg/ent/config.go b/pkg/ent/config.go index 1ff78dea..39ebfe24 100644 --- a/pkg/ent/config.go +++ b/pkg/ent/config.go @@ -34,6 +34,7 @@ type ( Menu []ent.Hook MenuParam []ent.Hook OauthProvider []ent.Hook + Post []ent.Hook Role []ent.Hook Token []ent.Hook User []ent.Hook @@ -46,6 +47,7 @@ type ( Menu []ent.Interceptor MenuParam []ent.Interceptor OauthProvider []ent.Interceptor + Post []ent.Interceptor Role []ent.Interceptor Token []ent.Interceptor User []ent.Interceptor diff --git a/pkg/ent/department.go b/pkg/ent/department.go index 6776bb4d..a505b411 100644 --- a/pkg/ent/department.go +++ b/pkg/ent/department.go @@ -22,6 +22,8 @@ type Department struct { UpdatedAt time.Time `json:"updated_at,omitempty"` // status 1 normal 0 ban | 状态 1 正常 0 禁用 Status uint8 `json:"status,omitempty"` + // Sort number | 排序编号 + Sort uint32 `json:"sort,omitempty"` // Department name | 部门名称 Name string `json:"name,omitempty"` // Parents' IDs | 父级列表 @@ -32,8 +34,6 @@ type Department struct { Phone string `json:"phone,omitempty"` // Leader's email | 部门负责人电子邮箱 Email string `json:"email,omitempty"` - // Sort number | 排序编号 - Sort uint32 `json:"sort,omitempty"` // Remark | 备注 Remark string `json:"remark,omitempty"` // Parent department ID | 父级部门ID @@ -137,6 +137,12 @@ func (d *Department) assignValues(columns []string, values []any) error { } else if value.Valid { d.Status = uint8(value.Int64) } + case department.FieldSort: + if value, ok := values[i].(*sql.NullInt64); !ok { + return fmt.Errorf("unexpected type %T for field sort", values[i]) + } else if value.Valid { + d.Sort = uint32(value.Int64) + } case department.FieldName: if value, ok := values[i].(*sql.NullString); !ok { return fmt.Errorf("unexpected type %T for field name", values[i]) @@ -167,12 +173,6 @@ func (d *Department) assignValues(columns []string, values []any) error { } else if value.Valid { d.Email = value.String } - case department.FieldSort: - if value, ok := values[i].(*sql.NullInt64); !ok { - return fmt.Errorf("unexpected type %T for field sort", values[i]) - } else if value.Valid { - d.Sort = uint32(value.Int64) - } case department.FieldRemark: if value, ok := values[i].(*sql.NullString); !ok { return fmt.Errorf("unexpected type %T for field remark", values[i]) @@ -237,6 +237,9 @@ func (d *Department) String() string { builder.WriteString("status=") builder.WriteString(fmt.Sprintf("%v", d.Status)) builder.WriteString(", ") + builder.WriteString("sort=") + builder.WriteString(fmt.Sprintf("%v", d.Sort)) + builder.WriteString(", ") builder.WriteString("name=") builder.WriteString(d.Name) builder.WriteString(", ") @@ -252,9 +255,6 @@ func (d *Department) String() string { builder.WriteString("email=") builder.WriteString(d.Email) builder.WriteString(", ") - builder.WriteString("sort=") - builder.WriteString(fmt.Sprintf("%v", d.Sort)) - builder.WriteString(", ") builder.WriteString("remark=") builder.WriteString(d.Remark) builder.WriteString(", ") diff --git a/pkg/ent/department/department.go b/pkg/ent/department/department.go index 91173b61..3948ffc7 100644 --- a/pkg/ent/department/department.go +++ b/pkg/ent/department/department.go @@ -17,6 +17,8 @@ const ( FieldUpdatedAt = "updated_at" // FieldStatus holds the string denoting the status field in the database. FieldStatus = "status" + // FieldSort holds the string denoting the sort field in the database. + FieldSort = "sort" // FieldName holds the string denoting the name field in the database. FieldName = "name" // FieldAncestors holds the string denoting the ancestors field in the database. @@ -27,8 +29,6 @@ const ( FieldPhone = "phone" // FieldEmail holds the string denoting the email field in the database. FieldEmail = "email" - // FieldSort holds the string denoting the sort field in the database. - FieldSort = "sort" // FieldRemark holds the string denoting the remark field in the database. FieldRemark = "remark" // FieldParentID holds the string denoting the parent_id field in the database. @@ -40,13 +40,13 @@ const ( // EdgeUser holds the string denoting the user edge name in mutations. EdgeUser = "user" // Table holds the table name of the department in the database. - Table = "sys_department" + Table = "sys_departments" // ParentTable is the table that holds the parent relation/edge. - ParentTable = "sys_department" + ParentTable = "sys_departments" // ParentColumn is the table column denoting the parent relation/edge. ParentColumn = "parent_id" // ChildrenTable is the table that holds the children relation/edge. - ChildrenTable = "sys_department" + ChildrenTable = "sys_departments" // ChildrenColumn is the table column denoting the children relation/edge. ChildrenColumn = "parent_id" // UserTable is the table that holds the user relation/edge. @@ -64,12 +64,12 @@ var Columns = []string{ FieldCreatedAt, FieldUpdatedAt, FieldStatus, + FieldSort, FieldName, FieldAncestors, FieldLeader, FieldPhone, FieldEmail, - FieldSort, FieldRemark, FieldParentID, } @@ -93,6 +93,8 @@ var ( UpdateDefaultUpdatedAt func() time.Time // DefaultStatus holds the default value on creation for the "status" field. DefaultStatus uint8 + // DefaultSort holds the default value on creation for the "sort" field. + DefaultSort uint32 // DefaultParentID holds the default value on creation for the "parent_id" field. DefaultParentID uint64 ) diff --git a/pkg/ent/department/where.go b/pkg/ent/department/where.go index 0efb793c..f2b1feef 100644 --- a/pkg/ent/department/where.go +++ b/pkg/ent/department/where.go @@ -70,6 +70,11 @@ func Status(v uint8) predicate.Department { return predicate.Department(sql.FieldEQ(FieldStatus, v)) } +// Sort applies equality check predicate on the "sort" field. It's identical to SortEQ. +func Sort(v uint32) predicate.Department { + return predicate.Department(sql.FieldEQ(FieldSort, v)) +} + // Name applies equality check predicate on the "name" field. It's identical to NameEQ. func Name(v string) predicate.Department { return predicate.Department(sql.FieldEQ(FieldName, v)) @@ -95,11 +100,6 @@ func Email(v string) predicate.Department { return predicate.Department(sql.FieldEQ(FieldEmail, v)) } -// Sort applies equality check predicate on the "sort" field. It's identical to SortEQ. -func Sort(v uint32) predicate.Department { - return predicate.Department(sql.FieldEQ(FieldSort, v)) -} - // Remark applies equality check predicate on the "remark" field. It's identical to RemarkEQ. func Remark(v string) predicate.Department { return predicate.Department(sql.FieldEQ(FieldRemark, v)) @@ -240,6 +240,46 @@ func StatusNotNil() predicate.Department { return predicate.Department(sql.FieldNotNull(FieldStatus)) } +// SortEQ applies the EQ predicate on the "sort" field. +func SortEQ(v uint32) predicate.Department { + return predicate.Department(sql.FieldEQ(FieldSort, v)) +} + +// SortNEQ applies the NEQ predicate on the "sort" field. +func SortNEQ(v uint32) predicate.Department { + return predicate.Department(sql.FieldNEQ(FieldSort, v)) +} + +// SortIn applies the In predicate on the "sort" field. +func SortIn(vs ...uint32) predicate.Department { + return predicate.Department(sql.FieldIn(FieldSort, vs...)) +} + +// SortNotIn applies the NotIn predicate on the "sort" field. +func SortNotIn(vs ...uint32) predicate.Department { + return predicate.Department(sql.FieldNotIn(FieldSort, vs...)) +} + +// SortGT applies the GT predicate on the "sort" field. +func SortGT(v uint32) predicate.Department { + return predicate.Department(sql.FieldGT(FieldSort, v)) +} + +// SortGTE applies the GTE predicate on the "sort" field. +func SortGTE(v uint32) predicate.Department { + return predicate.Department(sql.FieldGTE(FieldSort, v)) +} + +// SortLT applies the LT predicate on the "sort" field. +func SortLT(v uint32) predicate.Department { + return predicate.Department(sql.FieldLT(FieldSort, v)) +} + +// SortLTE applies the LTE predicate on the "sort" field. +func SortLTE(v uint32) predicate.Department { + return predicate.Department(sql.FieldLTE(FieldSort, v)) +} + // NameEQ applies the EQ predicate on the "name" field. func NameEQ(v string) predicate.Department { return predicate.Department(sql.FieldEQ(FieldName, v)) @@ -565,46 +605,6 @@ func EmailContainsFold(v string) predicate.Department { return predicate.Department(sql.FieldContainsFold(FieldEmail, v)) } -// SortEQ applies the EQ predicate on the "sort" field. -func SortEQ(v uint32) predicate.Department { - return predicate.Department(sql.FieldEQ(FieldSort, v)) -} - -// SortNEQ applies the NEQ predicate on the "sort" field. -func SortNEQ(v uint32) predicate.Department { - return predicate.Department(sql.FieldNEQ(FieldSort, v)) -} - -// SortIn applies the In predicate on the "sort" field. -func SortIn(vs ...uint32) predicate.Department { - return predicate.Department(sql.FieldIn(FieldSort, vs...)) -} - -// SortNotIn applies the NotIn predicate on the "sort" field. -func SortNotIn(vs ...uint32) predicate.Department { - return predicate.Department(sql.FieldNotIn(FieldSort, vs...)) -} - -// SortGT applies the GT predicate on the "sort" field. -func SortGT(v uint32) predicate.Department { - return predicate.Department(sql.FieldGT(FieldSort, v)) -} - -// SortGTE applies the GTE predicate on the "sort" field. -func SortGTE(v uint32) predicate.Department { - return predicate.Department(sql.FieldGTE(FieldSort, v)) -} - -// SortLT applies the LT predicate on the "sort" field. -func SortLT(v uint32) predicate.Department { - return predicate.Department(sql.FieldLT(FieldSort, v)) -} - -// SortLTE applies the LTE predicate on the "sort" field. -func SortLTE(v uint32) predicate.Department { - return predicate.Department(sql.FieldLTE(FieldSort, v)) -} - // RemarkEQ applies the EQ predicate on the "remark" field. func RemarkEQ(v string) predicate.Department { return predicate.Department(sql.FieldEQ(FieldRemark, v)) diff --git a/pkg/ent/department_create.go b/pkg/ent/department_create.go index 4cc08e45..676270ce 100644 --- a/pkg/ent/department_create.go +++ b/pkg/ent/department_create.go @@ -64,6 +64,20 @@ func (dc *DepartmentCreate) SetNillableStatus(u *uint8) *DepartmentCreate { return dc } +// SetSort sets the "sort" field. +func (dc *DepartmentCreate) SetSort(u uint32) *DepartmentCreate { + dc.mutation.SetSort(u) + return dc +} + +// SetNillableSort sets the "sort" field if the given value is not nil. +func (dc *DepartmentCreate) SetNillableSort(u *uint32) *DepartmentCreate { + if u != nil { + dc.SetSort(*u) + } + return dc +} + // SetName sets the "name" field. func (dc *DepartmentCreate) SetName(s string) *DepartmentCreate { dc.mutation.SetName(s) @@ -94,12 +108,6 @@ func (dc *DepartmentCreate) SetEmail(s string) *DepartmentCreate { return dc } -// SetSort sets the "sort" field. -func (dc *DepartmentCreate) SetSort(u uint32) *DepartmentCreate { - dc.mutation.SetSort(u) - return dc -} - // SetRemark sets the "remark" field. func (dc *DepartmentCreate) SetRemark(s string) *DepartmentCreate { dc.mutation.SetRemark(s) @@ -208,6 +216,10 @@ func (dc *DepartmentCreate) defaults() { v := department.DefaultStatus dc.mutation.SetStatus(v) } + if _, ok := dc.mutation.Sort(); !ok { + v := department.DefaultSort + dc.mutation.SetSort(v) + } if _, ok := dc.mutation.ParentID(); !ok { v := department.DefaultParentID dc.mutation.SetParentID(v) @@ -222,6 +234,9 @@ func (dc *DepartmentCreate) check() error { if _, ok := dc.mutation.UpdatedAt(); !ok { return &ValidationError{Name: "updated_at", err: errors.New(`ent: missing required field "Department.updated_at"`)} } + if _, ok := dc.mutation.Sort(); !ok { + return &ValidationError{Name: "sort", err: errors.New(`ent: missing required field "Department.sort"`)} + } if _, ok := dc.mutation.Name(); !ok { return &ValidationError{Name: "name", err: errors.New(`ent: missing required field "Department.name"`)} } @@ -237,9 +252,6 @@ func (dc *DepartmentCreate) check() error { if _, ok := dc.mutation.Email(); !ok { return &ValidationError{Name: "email", err: errors.New(`ent: missing required field "Department.email"`)} } - if _, ok := dc.mutation.Sort(); !ok { - return &ValidationError{Name: "sort", err: errors.New(`ent: missing required field "Department.sort"`)} - } if _, ok := dc.mutation.Remark(); !ok { return &ValidationError{Name: "remark", err: errors.New(`ent: missing required field "Department.remark"`)} } @@ -293,6 +305,10 @@ func (dc *DepartmentCreate) createSpec() (*Department, *sqlgraph.CreateSpec) { _spec.SetField(department.FieldStatus, field.TypeUint8, value) _node.Status = value } + if value, ok := dc.mutation.Sort(); ok { + _spec.SetField(department.FieldSort, field.TypeUint32, value) + _node.Sort = value + } if value, ok := dc.mutation.Name(); ok { _spec.SetField(department.FieldName, field.TypeString, value) _node.Name = value @@ -313,10 +329,6 @@ func (dc *DepartmentCreate) createSpec() (*Department, *sqlgraph.CreateSpec) { _spec.SetField(department.FieldEmail, field.TypeString, value) _node.Email = value } - if value, ok := dc.mutation.Sort(); ok { - _spec.SetField(department.FieldSort, field.TypeUint32, value) - _node.Sort = value - } if value, ok := dc.mutation.Remark(); ok { _spec.SetField(department.FieldRemark, field.TypeString, value) _node.Remark = value diff --git a/pkg/ent/department_update.go b/pkg/ent/department_update.go index aed2d1b6..5f4da4cb 100644 --- a/pkg/ent/department_update.go +++ b/pkg/ent/department_update.go @@ -63,6 +63,27 @@ func (du *DepartmentUpdate) ClearStatus() *DepartmentUpdate { return du } +// SetSort sets the "sort" field. +func (du *DepartmentUpdate) SetSort(u uint32) *DepartmentUpdate { + du.mutation.ResetSort() + du.mutation.SetSort(u) + return du +} + +// SetNillableSort sets the "sort" field if the given value is not nil. +func (du *DepartmentUpdate) SetNillableSort(u *uint32) *DepartmentUpdate { + if u != nil { + du.SetSort(*u) + } + return du +} + +// AddSort adds u to the "sort" field. +func (du *DepartmentUpdate) AddSort(u int32) *DepartmentUpdate { + du.mutation.AddSort(u) + return du +} + // SetName sets the "name" field. func (du *DepartmentUpdate) SetName(s string) *DepartmentUpdate { du.mutation.SetName(s) @@ -93,19 +114,6 @@ func (du *DepartmentUpdate) SetEmail(s string) *DepartmentUpdate { return du } -// SetSort sets the "sort" field. -func (du *DepartmentUpdate) SetSort(u uint32) *DepartmentUpdate { - du.mutation.ResetSort() - du.mutation.SetSort(u) - return du -} - -// AddSort adds u to the "sort" field. -func (du *DepartmentUpdate) AddSort(u int32) *DepartmentUpdate { - du.mutation.AddSort(u) - return du -} - // SetRemark sets the "remark" field. func (du *DepartmentUpdate) SetRemark(s string) *DepartmentUpdate { du.mutation.SetRemark(s) @@ -286,6 +294,12 @@ func (du *DepartmentUpdate) sqlSave(ctx context.Context) (n int, err error) { if du.mutation.StatusCleared() { _spec.ClearField(department.FieldStatus, field.TypeUint8) } + if value, ok := du.mutation.Sort(); ok { + _spec.SetField(department.FieldSort, field.TypeUint32, value) + } + if value, ok := du.mutation.AddedSort(); ok { + _spec.AddField(department.FieldSort, field.TypeUint32, value) + } if value, ok := du.mutation.Name(); ok { _spec.SetField(department.FieldName, field.TypeString, value) } @@ -301,12 +315,6 @@ func (du *DepartmentUpdate) sqlSave(ctx context.Context) (n int, err error) { if value, ok := du.mutation.Email(); ok { _spec.SetField(department.FieldEmail, field.TypeString, value) } - if value, ok := du.mutation.Sort(); ok { - _spec.SetField(department.FieldSort, field.TypeUint32, value) - } - if value, ok := du.mutation.AddedSort(); ok { - _spec.AddField(department.FieldSort, field.TypeUint32, value) - } if value, ok := du.mutation.Remark(); ok { _spec.SetField(department.FieldRemark, field.TypeString, value) } @@ -506,6 +514,27 @@ func (duo *DepartmentUpdateOne) ClearStatus() *DepartmentUpdateOne { return duo } +// SetSort sets the "sort" field. +func (duo *DepartmentUpdateOne) SetSort(u uint32) *DepartmentUpdateOne { + duo.mutation.ResetSort() + duo.mutation.SetSort(u) + return duo +} + +// SetNillableSort sets the "sort" field if the given value is not nil. +func (duo *DepartmentUpdateOne) SetNillableSort(u *uint32) *DepartmentUpdateOne { + if u != nil { + duo.SetSort(*u) + } + return duo +} + +// AddSort adds u to the "sort" field. +func (duo *DepartmentUpdateOne) AddSort(u int32) *DepartmentUpdateOne { + duo.mutation.AddSort(u) + return duo +} + // SetName sets the "name" field. func (duo *DepartmentUpdateOne) SetName(s string) *DepartmentUpdateOne { duo.mutation.SetName(s) @@ -536,19 +565,6 @@ func (duo *DepartmentUpdateOne) SetEmail(s string) *DepartmentUpdateOne { return duo } -// SetSort sets the "sort" field. -func (duo *DepartmentUpdateOne) SetSort(u uint32) *DepartmentUpdateOne { - duo.mutation.ResetSort() - duo.mutation.SetSort(u) - return duo -} - -// AddSort adds u to the "sort" field. -func (duo *DepartmentUpdateOne) AddSort(u int32) *DepartmentUpdateOne { - duo.mutation.AddSort(u) - return duo -} - // SetRemark sets the "remark" field. func (duo *DepartmentUpdateOne) SetRemark(s string) *DepartmentUpdateOne { duo.mutation.SetRemark(s) @@ -753,6 +769,12 @@ func (duo *DepartmentUpdateOne) sqlSave(ctx context.Context) (_node *Department, if duo.mutation.StatusCleared() { _spec.ClearField(department.FieldStatus, field.TypeUint8) } + if value, ok := duo.mutation.Sort(); ok { + _spec.SetField(department.FieldSort, field.TypeUint32, value) + } + if value, ok := duo.mutation.AddedSort(); ok { + _spec.AddField(department.FieldSort, field.TypeUint32, value) + } if value, ok := duo.mutation.Name(); ok { _spec.SetField(department.FieldName, field.TypeString, value) } @@ -768,12 +790,6 @@ func (duo *DepartmentUpdateOne) sqlSave(ctx context.Context) (_node *Department, if value, ok := duo.mutation.Email(); ok { _spec.SetField(department.FieldEmail, field.TypeString, value) } - if value, ok := duo.mutation.Sort(); ok { - _spec.SetField(department.FieldSort, field.TypeUint32, value) - } - if value, ok := duo.mutation.AddedSort(); ok { - _spec.AddField(department.FieldSort, field.TypeUint32, value) - } if value, ok := duo.mutation.Remark(); ok { _spec.SetField(department.FieldRemark, field.TypeString, value) } diff --git a/pkg/ent/ent.go b/pkg/ent/ent.go index 5f2891e7..64ab1ba9 100644 --- a/pkg/ent/ent.go +++ b/pkg/ent/ent.go @@ -18,6 +18,7 @@ import ( "github.com/suyuan32/simple-admin-core/pkg/ent/menu" "github.com/suyuan32/simple-admin-core/pkg/ent/menuparam" "github.com/suyuan32/simple-admin-core/pkg/ent/oauthprovider" + "github.com/suyuan32/simple-admin-core/pkg/ent/post" "github.com/suyuan32/simple-admin-core/pkg/ent/role" "github.com/suyuan32/simple-admin-core/pkg/ent/token" "github.com/suyuan32/simple-admin-core/pkg/ent/user" @@ -55,6 +56,7 @@ func columnChecker(table string) func(string) error { menu.Table: menu.ValidColumn, menuparam.Table: menuparam.ValidColumn, oauthprovider.Table: oauthprovider.ValidColumn, + post.Table: post.ValidColumn, role.Table: role.ValidColumn, token.Table: token.ValidColumn, user.Table: user.ValidColumn, diff --git a/pkg/ent/hook/hook.go b/pkg/ent/hook/hook.go index 946d6821..ecd5e446 100644 --- a/pkg/ent/hook/hook.go +++ b/pkg/ent/hook/hook.go @@ -93,6 +93,18 @@ func (f OauthProviderFunc) Mutate(ctx context.Context, m ent.Mutation) (ent.Valu return nil, fmt.Errorf("unexpected mutation type %T. expect *ent.OauthProviderMutation", m) } +// The PostFunc type is an adapter to allow the use of ordinary +// function as Post mutator. +type PostFunc func(context.Context, *ent.PostMutation) (ent.Value, error) + +// Mutate calls f(ctx, m). +func (f PostFunc) Mutate(ctx context.Context, m ent.Mutation) (ent.Value, error) { + if mv, ok := m.(*ent.PostMutation); ok { + return f(ctx, mv) + } + return nil, fmt.Errorf("unexpected mutation type %T. expect *ent.PostMutation", m) +} + // The RoleFunc type is an adapter to allow the use of ordinary // function as Role mutator. type RoleFunc func(context.Context, *ent.RoleMutation) (ent.Value, error) diff --git a/pkg/ent/menu.go b/pkg/ent/menu.go index 407dcf24..1f938f43 100644 --- a/pkg/ent/menu.go +++ b/pkg/ent/menu.go @@ -20,6 +20,8 @@ type Menu struct { CreatedAt time.Time `json:"created_at,omitempty"` // UpdatedAt holds the value of the "updated_at" field. UpdatedAt time.Time `json:"updated_at,omitempty"` + // Sort number | 排序编号 + Sort uint32 `json:"sort,omitempty"` // parent menu ID | 父菜单ID ParentID uint64 `json:"parent_id,omitempty"` // menu level | 菜单层级 @@ -34,8 +36,6 @@ type Menu struct { Redirect string `json:"redirect,omitempty"` // the path of vue file | 组件路径 Component string `json:"component,omitempty"` - // sorting numbers | 排序编号 - Sort uint32 `json:"sort,omitempty"` // disable status | 是否停用 Disabled bool `json:"disabled,omitempty"` // menu name | 菜单显示标题 @@ -131,7 +131,7 @@ func (*Menu) scanValues(columns []string) ([]any, error) { switch columns[i] { case menu.FieldDisabled, menu.FieldHideMenu, menu.FieldHideBreadcrumb, menu.FieldIgnoreKeepAlive, menu.FieldHideTab, menu.FieldCarryParam, menu.FieldHideChildrenInMenu, menu.FieldAffix: values[i] = new(sql.NullBool) - case menu.FieldID, menu.FieldParentID, menu.FieldMenuLevel, menu.FieldMenuType, menu.FieldSort, menu.FieldDynamicLevel: + case menu.FieldID, menu.FieldSort, menu.FieldParentID, menu.FieldMenuLevel, menu.FieldMenuType, menu.FieldDynamicLevel: values[i] = new(sql.NullInt64) case menu.FieldPath, menu.FieldName, menu.FieldRedirect, menu.FieldComponent, menu.FieldTitle, menu.FieldIcon, menu.FieldCurrentActiveMenu, menu.FieldFrameSrc, menu.FieldRealPath: values[i] = new(sql.NullString) @@ -170,6 +170,12 @@ func (m *Menu) assignValues(columns []string, values []any) error { } else if value.Valid { m.UpdatedAt = value.Time } + case menu.FieldSort: + if value, ok := values[i].(*sql.NullInt64); !ok { + return fmt.Errorf("unexpected type %T for field sort", values[i]) + } else if value.Valid { + m.Sort = uint32(value.Int64) + } case menu.FieldParentID: if value, ok := values[i].(*sql.NullInt64); !ok { return fmt.Errorf("unexpected type %T for field parent_id", values[i]) @@ -212,12 +218,6 @@ func (m *Menu) assignValues(columns []string, values []any) error { } else if value.Valid { m.Component = value.String } - case menu.FieldSort: - if value, ok := values[i].(*sql.NullInt64); !ok { - return fmt.Errorf("unexpected type %T for field sort", values[i]) - } else if value.Valid { - m.Sort = uint32(value.Int64) - } case menu.FieldDisabled: if value, ok := values[i].(*sql.NullBool); !ok { return fmt.Errorf("unexpected type %T for field disabled", values[i]) @@ -356,6 +356,9 @@ func (m *Menu) String() string { builder.WriteString("updated_at=") builder.WriteString(m.UpdatedAt.Format(time.ANSIC)) builder.WriteString(", ") + builder.WriteString("sort=") + builder.WriteString(fmt.Sprintf("%v", m.Sort)) + builder.WriteString(", ") builder.WriteString("parent_id=") builder.WriteString(fmt.Sprintf("%v", m.ParentID)) builder.WriteString(", ") @@ -377,9 +380,6 @@ func (m *Menu) String() string { builder.WriteString("component=") builder.WriteString(m.Component) builder.WriteString(", ") - builder.WriteString("sort=") - builder.WriteString(fmt.Sprintf("%v", m.Sort)) - builder.WriteString(", ") builder.WriteString("disabled=") builder.WriteString(fmt.Sprintf("%v", m.Disabled)) builder.WriteString(", ") diff --git a/pkg/ent/menu/menu.go b/pkg/ent/menu/menu.go index 1cae8cb8..25f00e49 100644 --- a/pkg/ent/menu/menu.go +++ b/pkg/ent/menu/menu.go @@ -15,6 +15,8 @@ const ( FieldCreatedAt = "created_at" // FieldUpdatedAt holds the string denoting the updated_at field in the database. FieldUpdatedAt = "updated_at" + // FieldSort holds the string denoting the sort field in the database. + FieldSort = "sort" // FieldParentID holds the string denoting the parent_id field in the database. FieldParentID = "parent_id" // FieldMenuLevel holds the string denoting the menu_level field in the database. @@ -29,8 +31,6 @@ const ( FieldRedirect = "redirect" // FieldComponent holds the string denoting the component field in the database. FieldComponent = "component" - // FieldSort holds the string denoting the sort field in the database. - FieldSort = "sort" // FieldDisabled holds the string denoting the disabled field in the database. FieldDisabled = "disabled" // FieldTitle holds the string denoting the title field in the database. @@ -96,6 +96,7 @@ var Columns = []string{ FieldID, FieldCreatedAt, FieldUpdatedAt, + FieldSort, FieldParentID, FieldMenuLevel, FieldMenuType, @@ -103,7 +104,6 @@ var Columns = []string{ FieldName, FieldRedirect, FieldComponent, - FieldSort, FieldDisabled, FieldTitle, FieldIcon, @@ -143,14 +143,14 @@ var ( DefaultUpdatedAt func() time.Time // UpdateDefaultUpdatedAt holds the default value on update for the "updated_at" field. UpdateDefaultUpdatedAt func() time.Time + // DefaultSort holds the default value on creation for the "sort" field. + DefaultSort uint32 // DefaultPath holds the default value on creation for the "path" field. DefaultPath string // DefaultRedirect holds the default value on creation for the "redirect" field. DefaultRedirect string // DefaultComponent holds the default value on creation for the "component" field. DefaultComponent string - // DefaultSort holds the default value on creation for the "sort" field. - DefaultSort uint32 // DefaultDisabled holds the default value on creation for the "disabled" field. DefaultDisabled bool // DefaultHideMenu holds the default value on creation for the "hide_menu" field. diff --git a/pkg/ent/menu/where.go b/pkg/ent/menu/where.go index 3380eb5c..2dc33144 100644 --- a/pkg/ent/menu/where.go +++ b/pkg/ent/menu/where.go @@ -65,6 +65,11 @@ func UpdatedAt(v time.Time) predicate.Menu { return predicate.Menu(sql.FieldEQ(FieldUpdatedAt, v)) } +// Sort applies equality check predicate on the "sort" field. It's identical to SortEQ. +func Sort(v uint32) predicate.Menu { + return predicate.Menu(sql.FieldEQ(FieldSort, v)) +} + // ParentID applies equality check predicate on the "parent_id" field. It's identical to ParentIDEQ. func ParentID(v uint64) predicate.Menu { return predicate.Menu(sql.FieldEQ(FieldParentID, v)) @@ -100,11 +105,6 @@ func Component(v string) predicate.Menu { return predicate.Menu(sql.FieldEQ(FieldComponent, v)) } -// Sort applies equality check predicate on the "sort" field. It's identical to SortEQ. -func Sort(v uint32) predicate.Menu { - return predicate.Menu(sql.FieldEQ(FieldSort, v)) -} - // Disabled applies equality check predicate on the "disabled" field. It's identical to DisabledEQ. func Disabled(v bool) predicate.Menu { return predicate.Menu(sql.FieldEQ(FieldDisabled, v)) @@ -255,6 +255,46 @@ func UpdatedAtLTE(v time.Time) predicate.Menu { return predicate.Menu(sql.FieldLTE(FieldUpdatedAt, v)) } +// SortEQ applies the EQ predicate on the "sort" field. +func SortEQ(v uint32) predicate.Menu { + return predicate.Menu(sql.FieldEQ(FieldSort, v)) +} + +// SortNEQ applies the NEQ predicate on the "sort" field. +func SortNEQ(v uint32) predicate.Menu { + return predicate.Menu(sql.FieldNEQ(FieldSort, v)) +} + +// SortIn applies the In predicate on the "sort" field. +func SortIn(vs ...uint32) predicate.Menu { + return predicate.Menu(sql.FieldIn(FieldSort, vs...)) +} + +// SortNotIn applies the NotIn predicate on the "sort" field. +func SortNotIn(vs ...uint32) predicate.Menu { + return predicate.Menu(sql.FieldNotIn(FieldSort, vs...)) +} + +// SortGT applies the GT predicate on the "sort" field. +func SortGT(v uint32) predicate.Menu { + return predicate.Menu(sql.FieldGT(FieldSort, v)) +} + +// SortGTE applies the GTE predicate on the "sort" field. +func SortGTE(v uint32) predicate.Menu { + return predicate.Menu(sql.FieldGTE(FieldSort, v)) +} + +// SortLT applies the LT predicate on the "sort" field. +func SortLT(v uint32) predicate.Menu { + return predicate.Menu(sql.FieldLT(FieldSort, v)) +} + +// SortLTE applies the LTE predicate on the "sort" field. +func SortLTE(v uint32) predicate.Menu { + return predicate.Menu(sql.FieldLTE(FieldSort, v)) +} + // ParentIDEQ applies the EQ predicate on the "parent_id" field. func ParentIDEQ(v uint64) predicate.Menu { return predicate.Menu(sql.FieldEQ(FieldParentID, v)) @@ -655,46 +695,6 @@ func ComponentContainsFold(v string) predicate.Menu { return predicate.Menu(sql.FieldContainsFold(FieldComponent, v)) } -// SortEQ applies the EQ predicate on the "sort" field. -func SortEQ(v uint32) predicate.Menu { - return predicate.Menu(sql.FieldEQ(FieldSort, v)) -} - -// SortNEQ applies the NEQ predicate on the "sort" field. -func SortNEQ(v uint32) predicate.Menu { - return predicate.Menu(sql.FieldNEQ(FieldSort, v)) -} - -// SortIn applies the In predicate on the "sort" field. -func SortIn(vs ...uint32) predicate.Menu { - return predicate.Menu(sql.FieldIn(FieldSort, vs...)) -} - -// SortNotIn applies the NotIn predicate on the "sort" field. -func SortNotIn(vs ...uint32) predicate.Menu { - return predicate.Menu(sql.FieldNotIn(FieldSort, vs...)) -} - -// SortGT applies the GT predicate on the "sort" field. -func SortGT(v uint32) predicate.Menu { - return predicate.Menu(sql.FieldGT(FieldSort, v)) -} - -// SortGTE applies the GTE predicate on the "sort" field. -func SortGTE(v uint32) predicate.Menu { - return predicate.Menu(sql.FieldGTE(FieldSort, v)) -} - -// SortLT applies the LT predicate on the "sort" field. -func SortLT(v uint32) predicate.Menu { - return predicate.Menu(sql.FieldLT(FieldSort, v)) -} - -// SortLTE applies the LTE predicate on the "sort" field. -func SortLTE(v uint32) predicate.Menu { - return predicate.Menu(sql.FieldLTE(FieldSort, v)) -} - // DisabledEQ applies the EQ predicate on the "disabled" field. func DisabledEQ(v bool) predicate.Menu { return predicate.Menu(sql.FieldEQ(FieldDisabled, v)) diff --git a/pkg/ent/menu_create.go b/pkg/ent/menu_create.go index a2429159..0075369d 100644 --- a/pkg/ent/menu_create.go +++ b/pkg/ent/menu_create.go @@ -50,6 +50,20 @@ func (mc *MenuCreate) SetNillableUpdatedAt(t *time.Time) *MenuCreate { return mc } +// SetSort sets the "sort" field. +func (mc *MenuCreate) SetSort(u uint32) *MenuCreate { + mc.mutation.SetSort(u) + return mc +} + +// SetNillableSort sets the "sort" field if the given value is not nil. +func (mc *MenuCreate) SetNillableSort(u *uint32) *MenuCreate { + if u != nil { + mc.SetSort(*u) + } + return mc +} + // SetParentID sets the "parent_id" field. func (mc *MenuCreate) SetParentID(u uint64) *MenuCreate { mc.mutation.SetParentID(u) @@ -124,20 +138,6 @@ func (mc *MenuCreate) SetNillableComponent(s *string) *MenuCreate { return mc } -// SetSort sets the "sort" field. -func (mc *MenuCreate) SetSort(u uint32) *MenuCreate { - mc.mutation.SetSort(u) - return mc -} - -// SetNillableSort sets the "sort" field if the given value is not nil. -func (mc *MenuCreate) SetNillableSort(u *uint32) *MenuCreate { - if u != nil { - mc.SetSort(*u) - } - return mc -} - // SetDisabled sets the "disabled" field. func (mc *MenuCreate) SetDisabled(b bool) *MenuCreate { mc.mutation.SetDisabled(b) @@ -417,6 +417,10 @@ func (mc *MenuCreate) defaults() { v := menu.DefaultUpdatedAt() mc.mutation.SetUpdatedAt(v) } + if _, ok := mc.mutation.Sort(); !ok { + v := menu.DefaultSort + mc.mutation.SetSort(v) + } if _, ok := mc.mutation.Path(); !ok { v := menu.DefaultPath mc.mutation.SetPath(v) @@ -429,10 +433,6 @@ func (mc *MenuCreate) defaults() { v := menu.DefaultComponent mc.mutation.SetComponent(v) } - if _, ok := mc.mutation.Sort(); !ok { - v := menu.DefaultSort - mc.mutation.SetSort(v) - } if _, ok := mc.mutation.Disabled(); !ok { v := menu.DefaultDisabled mc.mutation.SetDisabled(v) @@ -491,6 +491,9 @@ func (mc *MenuCreate) check() error { if _, ok := mc.mutation.UpdatedAt(); !ok { return &ValidationError{Name: "updated_at", err: errors.New(`ent: missing required field "Menu.updated_at"`)} } + if _, ok := mc.mutation.Sort(); !ok { + return &ValidationError{Name: "sort", err: errors.New(`ent: missing required field "Menu.sort"`)} + } if _, ok := mc.mutation.MenuLevel(); !ok { return &ValidationError{Name: "menu_level", err: errors.New(`ent: missing required field "Menu.menu_level"`)} } @@ -500,9 +503,6 @@ func (mc *MenuCreate) check() error { if _, ok := mc.mutation.Name(); !ok { return &ValidationError{Name: "name", err: errors.New(`ent: missing required field "Menu.name"`)} } - if _, ok := mc.mutation.Sort(); !ok { - return &ValidationError{Name: "sort", err: errors.New(`ent: missing required field "Menu.sort"`)} - } if _, ok := mc.mutation.Title(); !ok { return &ValidationError{Name: "title", err: errors.New(`ent: missing required field "Menu.title"`)} } @@ -555,6 +555,10 @@ func (mc *MenuCreate) createSpec() (*Menu, *sqlgraph.CreateSpec) { _spec.SetField(menu.FieldUpdatedAt, field.TypeTime, value) _node.UpdatedAt = value } + if value, ok := mc.mutation.Sort(); ok { + _spec.SetField(menu.FieldSort, field.TypeUint32, value) + _node.Sort = value + } if value, ok := mc.mutation.MenuLevel(); ok { _spec.SetField(menu.FieldMenuLevel, field.TypeUint32, value) _node.MenuLevel = value @@ -579,10 +583,6 @@ func (mc *MenuCreate) createSpec() (*Menu, *sqlgraph.CreateSpec) { _spec.SetField(menu.FieldComponent, field.TypeString, value) _node.Component = value } - if value, ok := mc.mutation.Sort(); ok { - _spec.SetField(menu.FieldSort, field.TypeUint32, value) - _node.Sort = value - } if value, ok := mc.mutation.Disabled(); ok { _spec.SetField(menu.FieldDisabled, field.TypeBool, value) _node.Disabled = value diff --git a/pkg/ent/menu_update.go b/pkg/ent/menu_update.go index 7ac444f4..07021035 100644 --- a/pkg/ent/menu_update.go +++ b/pkg/ent/menu_update.go @@ -36,6 +36,27 @@ func (mu *MenuUpdate) SetUpdatedAt(t time.Time) *MenuUpdate { return mu } +// SetSort sets the "sort" field. +func (mu *MenuUpdate) SetSort(u uint32) *MenuUpdate { + mu.mutation.ResetSort() + mu.mutation.SetSort(u) + return mu +} + +// SetNillableSort sets the "sort" field if the given value is not nil. +func (mu *MenuUpdate) SetNillableSort(u *uint32) *MenuUpdate { + if u != nil { + mu.SetSort(*u) + } + return mu +} + +// AddSort adds u to the "sort" field. +func (mu *MenuUpdate) AddSort(u int32) *MenuUpdate { + mu.mutation.AddSort(u) + return mu +} + // SetParentID sets the "parent_id" field. func (mu *MenuUpdate) SetParentID(u uint64) *MenuUpdate { mu.mutation.SetParentID(u) @@ -148,27 +169,6 @@ func (mu *MenuUpdate) ClearComponent() *MenuUpdate { return mu } -// SetSort sets the "sort" field. -func (mu *MenuUpdate) SetSort(u uint32) *MenuUpdate { - mu.mutation.ResetSort() - mu.mutation.SetSort(u) - return mu -} - -// SetNillableSort sets the "sort" field if the given value is not nil. -func (mu *MenuUpdate) SetNillableSort(u *uint32) *MenuUpdate { - if u != nil { - mu.SetSort(*u) - } - return mu -} - -// AddSort adds u to the "sort" field. -func (mu *MenuUpdate) AddSort(u int32) *MenuUpdate { - mu.mutation.AddSort(u) - return mu -} - // SetDisabled sets the "disabled" field. func (mu *MenuUpdate) SetDisabled(b bool) *MenuUpdate { mu.mutation.SetDisabled(b) @@ -609,6 +609,12 @@ func (mu *MenuUpdate) sqlSave(ctx context.Context) (n int, err error) { if value, ok := mu.mutation.UpdatedAt(); ok { _spec.SetField(menu.FieldUpdatedAt, field.TypeTime, value) } + if value, ok := mu.mutation.Sort(); ok { + _spec.SetField(menu.FieldSort, field.TypeUint32, value) + } + if value, ok := mu.mutation.AddedSort(); ok { + _spec.AddField(menu.FieldSort, field.TypeUint32, value) + } if value, ok := mu.mutation.MenuLevel(); ok { _spec.SetField(menu.FieldMenuLevel, field.TypeUint32, value) } @@ -642,12 +648,6 @@ func (mu *MenuUpdate) sqlSave(ctx context.Context) (n int, err error) { if mu.mutation.ComponentCleared() { _spec.ClearField(menu.FieldComponent, field.TypeString) } - if value, ok := mu.mutation.Sort(); ok { - _spec.SetField(menu.FieldSort, field.TypeUint32, value) - } - if value, ok := mu.mutation.AddedSort(); ok { - _spec.AddField(menu.FieldSort, field.TypeUint32, value) - } if value, ok := mu.mutation.Disabled(); ok { _spec.SetField(menu.FieldDisabled, field.TypeBool, value) } @@ -952,6 +952,27 @@ func (muo *MenuUpdateOne) SetUpdatedAt(t time.Time) *MenuUpdateOne { return muo } +// SetSort sets the "sort" field. +func (muo *MenuUpdateOne) SetSort(u uint32) *MenuUpdateOne { + muo.mutation.ResetSort() + muo.mutation.SetSort(u) + return muo +} + +// SetNillableSort sets the "sort" field if the given value is not nil. +func (muo *MenuUpdateOne) SetNillableSort(u *uint32) *MenuUpdateOne { + if u != nil { + muo.SetSort(*u) + } + return muo +} + +// AddSort adds u to the "sort" field. +func (muo *MenuUpdateOne) AddSort(u int32) *MenuUpdateOne { + muo.mutation.AddSort(u) + return muo +} + // SetParentID sets the "parent_id" field. func (muo *MenuUpdateOne) SetParentID(u uint64) *MenuUpdateOne { muo.mutation.SetParentID(u) @@ -1064,27 +1085,6 @@ func (muo *MenuUpdateOne) ClearComponent() *MenuUpdateOne { return muo } -// SetSort sets the "sort" field. -func (muo *MenuUpdateOne) SetSort(u uint32) *MenuUpdateOne { - muo.mutation.ResetSort() - muo.mutation.SetSort(u) - return muo -} - -// SetNillableSort sets the "sort" field if the given value is not nil. -func (muo *MenuUpdateOne) SetNillableSort(u *uint32) *MenuUpdateOne { - if u != nil { - muo.SetSort(*u) - } - return muo -} - -// AddSort adds u to the "sort" field. -func (muo *MenuUpdateOne) AddSort(u int32) *MenuUpdateOne { - muo.mutation.AddSort(u) - return muo -} - // SetDisabled sets the "disabled" field. func (muo *MenuUpdateOne) SetDisabled(b bool) *MenuUpdateOne { muo.mutation.SetDisabled(b) @@ -1549,6 +1549,12 @@ func (muo *MenuUpdateOne) sqlSave(ctx context.Context) (_node *Menu, err error) if value, ok := muo.mutation.UpdatedAt(); ok { _spec.SetField(menu.FieldUpdatedAt, field.TypeTime, value) } + if value, ok := muo.mutation.Sort(); ok { + _spec.SetField(menu.FieldSort, field.TypeUint32, value) + } + if value, ok := muo.mutation.AddedSort(); ok { + _spec.AddField(menu.FieldSort, field.TypeUint32, value) + } if value, ok := muo.mutation.MenuLevel(); ok { _spec.SetField(menu.FieldMenuLevel, field.TypeUint32, value) } @@ -1582,12 +1588,6 @@ func (muo *MenuUpdateOne) sqlSave(ctx context.Context) (_node *Menu, err error) if muo.mutation.ComponentCleared() { _spec.ClearField(menu.FieldComponent, field.TypeString) } - if value, ok := muo.mutation.Sort(); ok { - _spec.SetField(menu.FieldSort, field.TypeUint32, value) - } - if value, ok := muo.mutation.AddedSort(); ok { - _spec.AddField(menu.FieldSort, field.TypeUint32, value) - } if value, ok := muo.mutation.Disabled(); ok { _spec.SetField(menu.FieldDisabled, field.TypeBool, value) } diff --git a/pkg/ent/migrate/schema.go b/pkg/ent/migrate/schema.go index 779efb8a..2862243e 100644 --- a/pkg/ent/migrate/schema.go +++ b/pkg/ent/migrate/schema.go @@ -32,31 +32,31 @@ var ( }, }, } - // SysDepartmentColumns holds the columns for the "sys_department" table. - SysDepartmentColumns = []*schema.Column{ + // SysDepartmentsColumns holds the columns for the "sys_departments" table. + SysDepartmentsColumns = []*schema.Column{ {Name: "id", Type: field.TypeUint64, Increment: true}, {Name: "created_at", Type: field.TypeTime}, {Name: "updated_at", Type: field.TypeTime}, {Name: "status", Type: field.TypeUint8, Nullable: true, Default: 1}, + {Name: "sort", Type: field.TypeUint32, Default: 1}, {Name: "name", Type: field.TypeString}, {Name: "ancestors", Type: field.TypeString}, {Name: "leader", Type: field.TypeString}, {Name: "phone", Type: field.TypeString}, {Name: "email", Type: field.TypeString}, - {Name: "sort", Type: field.TypeUint32}, {Name: "remark", Type: field.TypeString}, {Name: "parent_id", Type: field.TypeUint64, Nullable: true, Default: 0}, } - // SysDepartmentTable holds the schema information for the "sys_department" table. - SysDepartmentTable = &schema.Table{ - Name: "sys_department", - Columns: SysDepartmentColumns, - PrimaryKey: []*schema.Column{SysDepartmentColumns[0]}, + // SysDepartmentsTable holds the schema information for the "sys_departments" table. + SysDepartmentsTable = &schema.Table{ + Name: "sys_departments", + Columns: SysDepartmentsColumns, + PrimaryKey: []*schema.Column{SysDepartmentsColumns[0]}, ForeignKeys: []*schema.ForeignKey{ { - Symbol: "sys_department_sys_department_children", - Columns: []*schema.Column{SysDepartmentColumns[11]}, - RefColumns: []*schema.Column{SysDepartmentColumns[0]}, + Symbol: "sys_departments_sys_departments_children", + Columns: []*schema.Column{SysDepartmentsColumns[11]}, + RefColumns: []*schema.Column{SysDepartmentsColumns[0]}, OnDelete: schema.SetNull, }, }, @@ -107,13 +107,13 @@ var ( {Name: "id", Type: field.TypeUint64, Increment: true}, {Name: "created_at", Type: field.TypeTime}, {Name: "updated_at", Type: field.TypeTime}, + {Name: "sort", Type: field.TypeUint32, Default: 1}, {Name: "menu_level", Type: field.TypeUint32}, {Name: "menu_type", Type: field.TypeUint32}, {Name: "path", Type: field.TypeString, Nullable: true, Default: ""}, {Name: "name", Type: field.TypeString}, {Name: "redirect", Type: field.TypeString, Nullable: true, Default: ""}, {Name: "component", Type: field.TypeString, Nullable: true, Default: ""}, - {Name: "sort", Type: field.TypeUint32, Default: 0}, {Name: "disabled", Type: field.TypeBool, Nullable: true, Default: false}, {Name: "title", Type: field.TypeString}, {Name: "icon", Type: field.TypeString}, @@ -189,6 +189,23 @@ var ( Columns: SysOauthProvidersColumns, PrimaryKey: []*schema.Column{SysOauthProvidersColumns[0]}, } + // SysPostsColumns holds the columns for the "sys_posts" table. + SysPostsColumns = []*schema.Column{ + {Name: "id", Type: field.TypeUint64, Increment: true}, + {Name: "created_at", Type: field.TypeTime}, + {Name: "updated_at", Type: field.TypeTime}, + {Name: "status", Type: field.TypeUint8, Nullable: true, Default: 1}, + {Name: "sort", Type: field.TypeUint32, Default: 1}, + {Name: "name", Type: field.TypeString}, + {Name: "code", Type: field.TypeString}, + {Name: "remark", Type: field.TypeString}, + } + // SysPostsTable holds the schema information for the "sys_posts" table. + SysPostsTable = &schema.Table{ + Name: "sys_posts", + Columns: SysPostsColumns, + PrimaryKey: []*schema.Column{SysPostsColumns[0]}, + } // SysRolesColumns holds the columns for the "sys_roles" table. SysRolesColumns = []*schema.Column{ {Name: "id", Type: field.TypeUint64, Increment: true}, @@ -252,6 +269,7 @@ var ( {Name: "email", Type: field.TypeString, Nullable: true}, {Name: "avatar", Type: field.TypeString, Nullable: true, Default: "", SchemaType: map[string]string{"mysql": "varchar(512)"}}, {Name: "department_id", Type: field.TypeUint64, Nullable: true, Default: 1}, + {Name: "post_id", Type: field.TypeUint64, Nullable: true, Default: 1}, } // SysUsersTable holds the schema information for the "sys_users" table. SysUsersTable = &schema.Table{ @@ -260,9 +278,15 @@ var ( PrimaryKey: []*schema.Column{SysUsersColumns[0]}, ForeignKeys: []*schema.ForeignKey{ { - Symbol: "sys_users_sys_department_department", + Symbol: "sys_users_sys_departments_department", Columns: []*schema.Column{SysUsersColumns[13]}, - RefColumns: []*schema.Column{SysDepartmentColumns[0]}, + RefColumns: []*schema.Column{SysDepartmentsColumns[0]}, + OnDelete: schema.SetNull, + }, + { + Symbol: "sys_users_sys_posts_post", + Columns: []*schema.Column{SysUsersColumns[14]}, + RefColumns: []*schema.Column{SysPostsColumns[0]}, OnDelete: schema.SetNull, }, }, @@ -302,12 +326,13 @@ var ( // Tables holds all the tables in the schema. Tables = []*schema.Table{ SysApisTable, - SysDepartmentTable, + SysDepartmentsTable, SysDictionariesTable, SysDictionaryDetailsTable, SysMenusTable, SysMenuParamsTable, SysOauthProvidersTable, + SysPostsTable, SysRolesTable, SysTokensTable, SysUsersTable, @@ -319,9 +344,9 @@ func init() { SysApisTable.Annotation = &entsql.Annotation{ Table: "sys_apis", } - SysDepartmentTable.ForeignKeys[0].RefTable = SysDepartmentTable - SysDepartmentTable.Annotation = &entsql.Annotation{ - Table: "sys_department", + SysDepartmentsTable.ForeignKeys[0].RefTable = SysDepartmentsTable + SysDepartmentsTable.Annotation = &entsql.Annotation{ + Table: "sys_departments", } SysDictionariesTable.Annotation = &entsql.Annotation{ Table: "sys_dictionaries", @@ -341,13 +366,17 @@ func init() { SysOauthProvidersTable.Annotation = &entsql.Annotation{ Table: "sys_oauth_providers", } + SysPostsTable.Annotation = &entsql.Annotation{ + Table: "sys_posts", + } SysRolesTable.Annotation = &entsql.Annotation{ Table: "sys_roles", } SysTokensTable.Annotation = &entsql.Annotation{ Table: "sys_tokens", } - SysUsersTable.ForeignKeys[0].RefTable = SysDepartmentTable + SysUsersTable.ForeignKeys[0].RefTable = SysDepartmentsTable + SysUsersTable.ForeignKeys[1].RefTable = SysPostsTable SysUsersTable.Annotation = &entsql.Annotation{ Table: "sys_users", } diff --git a/pkg/ent/mutation.go b/pkg/ent/mutation.go index 546c0b6e..c763c775 100644 --- a/pkg/ent/mutation.go +++ b/pkg/ent/mutation.go @@ -17,6 +17,7 @@ import ( "github.com/suyuan32/simple-admin-core/pkg/ent/menu" "github.com/suyuan32/simple-admin-core/pkg/ent/menuparam" "github.com/suyuan32/simple-admin-core/pkg/ent/oauthprovider" + "github.com/suyuan32/simple-admin-core/pkg/ent/post" "github.com/suyuan32/simple-admin-core/pkg/ent/predicate" "github.com/suyuan32/simple-admin-core/pkg/ent/role" "github.com/suyuan32/simple-admin-core/pkg/ent/token" @@ -42,6 +43,7 @@ const ( TypeMenu = "Menu" TypeMenuParam = "MenuParam" TypeOauthProvider = "OauthProvider" + TypePost = "Post" TypeRole = "Role" TypeToken = "Token" TypeUser = "User" @@ -659,13 +661,13 @@ type DepartmentMutation struct { updated_at *time.Time status *uint8 addstatus *int8 + sort *uint32 + addsort *int32 name *string ancestors *string leader *string phone *string email *string - sort *uint32 - addsort *int32 remark *string clearedFields map[string]struct{} parent *uint64 @@ -927,6 +929,62 @@ func (m *DepartmentMutation) ResetStatus() { delete(m.clearedFields, department.FieldStatus) } +// SetSort sets the "sort" field. +func (m *DepartmentMutation) SetSort(u uint32) { + m.sort = &u + m.addsort = nil +} + +// Sort returns the value of the "sort" field in the mutation. +func (m *DepartmentMutation) Sort() (r uint32, exists bool) { + v := m.sort + if v == nil { + return + } + return *v, true +} + +// OldSort returns the old "sort" field's value of the Department entity. +// If the Department object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *DepartmentMutation) OldSort(ctx context.Context) (v uint32, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldSort is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldSort requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldSort: %w", err) + } + return oldValue.Sort, nil +} + +// AddSort adds u to the "sort" field. +func (m *DepartmentMutation) AddSort(u int32) { + if m.addsort != nil { + *m.addsort += u + } else { + m.addsort = &u + } +} + +// AddedSort returns the value that was added to the "sort" field in this mutation. +func (m *DepartmentMutation) AddedSort() (r int32, exists bool) { + v := m.addsort + if v == nil { + return + } + return *v, true +} + +// ResetSort resets all changes to the "sort" field. +func (m *DepartmentMutation) ResetSort() { + m.sort = nil + m.addsort = nil +} + // SetName sets the "name" field. func (m *DepartmentMutation) SetName(s string) { m.name = &s @@ -1107,62 +1165,6 @@ func (m *DepartmentMutation) ResetEmail() { m.email = nil } -// SetSort sets the "sort" field. -func (m *DepartmentMutation) SetSort(u uint32) { - m.sort = &u - m.addsort = nil -} - -// Sort returns the value of the "sort" field in the mutation. -func (m *DepartmentMutation) Sort() (r uint32, exists bool) { - v := m.sort - if v == nil { - return - } - return *v, true -} - -// OldSort returns the old "sort" field's value of the Department entity. -// If the Department object wasn't provided to the builder, the object is fetched from the database. -// An error is returned if the mutation operation is not UpdateOne, or the database query fails. -func (m *DepartmentMutation) OldSort(ctx context.Context) (v uint32, err error) { - if !m.op.Is(OpUpdateOne) { - return v, errors.New("OldSort is only allowed on UpdateOne operations") - } - if m.id == nil || m.oldValue == nil { - return v, errors.New("OldSort requires an ID field in the mutation") - } - oldValue, err := m.oldValue(ctx) - if err != nil { - return v, fmt.Errorf("querying old value for OldSort: %w", err) - } - return oldValue.Sort, nil -} - -// AddSort adds u to the "sort" field. -func (m *DepartmentMutation) AddSort(u int32) { - if m.addsort != nil { - *m.addsort += u - } else { - m.addsort = &u - } -} - -// AddedSort returns the value that was added to the "sort" field in this mutation. -func (m *DepartmentMutation) AddedSort() (r int32, exists bool) { - v := m.addsort - if v == nil { - return - } - return *v, true -} - -// ResetSort resets all changes to the "sort" field. -func (m *DepartmentMutation) ResetSort() { - m.sort = nil - m.addsort = nil -} - // SetRemark sets the "remark" field. func (m *DepartmentMutation) SetRemark(s string) { m.remark = &s @@ -1426,6 +1428,9 @@ func (m *DepartmentMutation) Fields() []string { if m.status != nil { fields = append(fields, department.FieldStatus) } + if m.sort != nil { + fields = append(fields, department.FieldSort) + } if m.name != nil { fields = append(fields, department.FieldName) } @@ -1441,9 +1446,6 @@ func (m *DepartmentMutation) Fields() []string { if m.email != nil { fields = append(fields, department.FieldEmail) } - if m.sort != nil { - fields = append(fields, department.FieldSort) - } if m.remark != nil { fields = append(fields, department.FieldRemark) } @@ -1464,6 +1466,8 @@ func (m *DepartmentMutation) Field(name string) (ent.Value, bool) { return m.UpdatedAt() case department.FieldStatus: return m.Status() + case department.FieldSort: + return m.Sort() case department.FieldName: return m.Name() case department.FieldAncestors: @@ -1474,8 +1478,6 @@ func (m *DepartmentMutation) Field(name string) (ent.Value, bool) { return m.Phone() case department.FieldEmail: return m.Email() - case department.FieldSort: - return m.Sort() case department.FieldRemark: return m.Remark() case department.FieldParentID: @@ -1495,6 +1497,8 @@ func (m *DepartmentMutation) OldField(ctx context.Context, name string) (ent.Val return m.OldUpdatedAt(ctx) case department.FieldStatus: return m.OldStatus(ctx) + case department.FieldSort: + return m.OldSort(ctx) case department.FieldName: return m.OldName(ctx) case department.FieldAncestors: @@ -1505,8 +1509,6 @@ func (m *DepartmentMutation) OldField(ctx context.Context, name string) (ent.Val return m.OldPhone(ctx) case department.FieldEmail: return m.OldEmail(ctx) - case department.FieldSort: - return m.OldSort(ctx) case department.FieldRemark: return m.OldRemark(ctx) case department.FieldParentID: @@ -1541,6 +1543,13 @@ func (m *DepartmentMutation) SetField(name string, value ent.Value) error { } m.SetStatus(v) return nil + case department.FieldSort: + v, ok := value.(uint32) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetSort(v) + return nil case department.FieldName: v, ok := value.(string) if !ok { @@ -1576,13 +1585,6 @@ func (m *DepartmentMutation) SetField(name string, value ent.Value) error { } m.SetEmail(v) return nil - case department.FieldSort: - v, ok := value.(uint32) - if !ok { - return fmt.Errorf("unexpected type %T for field %s", value, name) - } - m.SetSort(v) - return nil case department.FieldRemark: v, ok := value.(string) if !ok { @@ -1697,6 +1699,9 @@ func (m *DepartmentMutation) ResetField(name string) error { case department.FieldStatus: m.ResetStatus() return nil + case department.FieldSort: + m.ResetSort() + return nil case department.FieldName: m.ResetName() return nil @@ -1712,9 +1717,6 @@ func (m *DepartmentMutation) ResetField(name string) error { case department.FieldEmail: m.ResetEmail() return nil - case department.FieldSort: - m.ResetSort() - return nil case department.FieldRemark: m.ResetRemark() return nil @@ -3343,6 +3345,8 @@ type MenuMutation struct { id *uint64 created_at *time.Time updated_at *time.Time + sort *uint32 + addsort *int32 menu_level *uint32 addmenu_level *int32 menu_type *uint32 @@ -3351,8 +3355,6 @@ type MenuMutation struct { name *string redirect *string component *string - sort *uint32 - addsort *int32 disabled *bool title *string icon *string @@ -3561,6 +3563,62 @@ func (m *MenuMutation) ResetUpdatedAt() { m.updated_at = nil } +// SetSort sets the "sort" field. +func (m *MenuMutation) SetSort(u uint32) { + m.sort = &u + m.addsort = nil +} + +// Sort returns the value of the "sort" field in the mutation. +func (m *MenuMutation) Sort() (r uint32, exists bool) { + v := m.sort + if v == nil { + return + } + return *v, true +} + +// OldSort returns the old "sort" field's value of the Menu entity. +// If the Menu object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *MenuMutation) OldSort(ctx context.Context) (v uint32, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldSort is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldSort requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldSort: %w", err) + } + return oldValue.Sort, nil +} + +// AddSort adds u to the "sort" field. +func (m *MenuMutation) AddSort(u int32) { + if m.addsort != nil { + *m.addsort += u + } else { + m.addsort = &u + } +} + +// AddedSort returns the value that was added to the "sort" field in this mutation. +func (m *MenuMutation) AddedSort() (r int32, exists bool) { + v := m.addsort + if v == nil { + return + } + return *v, true +} + +// ResetSort resets all changes to the "sort" field. +func (m *MenuMutation) ResetSort() { + m.sort = nil + m.addsort = nil +} + // SetParentID sets the "parent_id" field. func (m *MenuMutation) SetParentID(u uint64) { m.parent = &u @@ -3905,97 +3963,41 @@ func (m *MenuMutation) ResetComponent() { delete(m.clearedFields, menu.FieldComponent) } -// SetSort sets the "sort" field. -func (m *MenuMutation) SetSort(u uint32) { - m.sort = &u - m.addsort = nil +// SetDisabled sets the "disabled" field. +func (m *MenuMutation) SetDisabled(b bool) { + m.disabled = &b } -// Sort returns the value of the "sort" field in the mutation. -func (m *MenuMutation) Sort() (r uint32, exists bool) { - v := m.sort +// Disabled returns the value of the "disabled" field in the mutation. +func (m *MenuMutation) Disabled() (r bool, exists bool) { + v := m.disabled if v == nil { return } return *v, true } -// OldSort returns the old "sort" field's value of the Menu entity. +// OldDisabled returns the old "disabled" field's value of the Menu entity. // If the Menu object wasn't provided to the builder, the object is fetched from the database. // An error is returned if the mutation operation is not UpdateOne, or the database query fails. -func (m *MenuMutation) OldSort(ctx context.Context) (v uint32, err error) { +func (m *MenuMutation) OldDisabled(ctx context.Context) (v bool, err error) { if !m.op.Is(OpUpdateOne) { - return v, errors.New("OldSort is only allowed on UpdateOne operations") + return v, errors.New("OldDisabled is only allowed on UpdateOne operations") } if m.id == nil || m.oldValue == nil { - return v, errors.New("OldSort requires an ID field in the mutation") + return v, errors.New("OldDisabled requires an ID field in the mutation") } oldValue, err := m.oldValue(ctx) if err != nil { - return v, fmt.Errorf("querying old value for OldSort: %w", err) - } - return oldValue.Sort, nil -} - -// AddSort adds u to the "sort" field. -func (m *MenuMutation) AddSort(u int32) { - if m.addsort != nil { - *m.addsort += u - } else { - m.addsort = &u + return v, fmt.Errorf("querying old value for OldDisabled: %w", err) } + return oldValue.Disabled, nil } -// AddedSort returns the value that was added to the "sort" field in this mutation. -func (m *MenuMutation) AddedSort() (r int32, exists bool) { - v := m.addsort - if v == nil { - return - } - return *v, true -} - -// ResetSort resets all changes to the "sort" field. -func (m *MenuMutation) ResetSort() { - m.sort = nil - m.addsort = nil -} - -// SetDisabled sets the "disabled" field. -func (m *MenuMutation) SetDisabled(b bool) { - m.disabled = &b -} - -// Disabled returns the value of the "disabled" field in the mutation. -func (m *MenuMutation) Disabled() (r bool, exists bool) { - v := m.disabled - if v == nil { - return - } - return *v, true -} - -// OldDisabled returns the old "disabled" field's value of the Menu entity. -// If the Menu object wasn't provided to the builder, the object is fetched from the database. -// An error is returned if the mutation operation is not UpdateOne, or the database query fails. -func (m *MenuMutation) OldDisabled(ctx context.Context) (v bool, err error) { - if !m.op.Is(OpUpdateOne) { - return v, errors.New("OldDisabled is only allowed on UpdateOne operations") - } - if m.id == nil || m.oldValue == nil { - return v, errors.New("OldDisabled requires an ID field in the mutation") - } - oldValue, err := m.oldValue(ctx) - if err != nil { - return v, fmt.Errorf("querying old value for OldDisabled: %w", err) - } - return oldValue.Disabled, nil -} - -// ClearDisabled clears the value of the "disabled" field. -func (m *MenuMutation) ClearDisabled() { - m.disabled = nil - m.clearedFields[menu.FieldDisabled] = struct{}{} +// ClearDisabled clears the value of the "disabled" field. +func (m *MenuMutation) ClearDisabled() { + m.disabled = nil + m.clearedFields[menu.FieldDisabled] = struct{}{} } // DisabledCleared returns if the "disabled" field was cleared in this mutation. @@ -4871,6 +4873,9 @@ func (m *MenuMutation) Fields() []string { if m.updated_at != nil { fields = append(fields, menu.FieldUpdatedAt) } + if m.sort != nil { + fields = append(fields, menu.FieldSort) + } if m.parent != nil { fields = append(fields, menu.FieldParentID) } @@ -4892,9 +4897,6 @@ func (m *MenuMutation) Fields() []string { if m.component != nil { fields = append(fields, menu.FieldComponent) } - if m.sort != nil { - fields = append(fields, menu.FieldSort) - } if m.disabled != nil { fields = append(fields, menu.FieldDisabled) } @@ -4949,6 +4951,8 @@ func (m *MenuMutation) Field(name string) (ent.Value, bool) { return m.CreatedAt() case menu.FieldUpdatedAt: return m.UpdatedAt() + case menu.FieldSort: + return m.Sort() case menu.FieldParentID: return m.ParentID() case menu.FieldMenuLevel: @@ -4963,8 +4967,6 @@ func (m *MenuMutation) Field(name string) (ent.Value, bool) { return m.Redirect() case menu.FieldComponent: return m.Component() - case menu.FieldSort: - return m.Sort() case menu.FieldDisabled: return m.Disabled() case menu.FieldTitle: @@ -5006,6 +5008,8 @@ func (m *MenuMutation) OldField(ctx context.Context, name string) (ent.Value, er return m.OldCreatedAt(ctx) case menu.FieldUpdatedAt: return m.OldUpdatedAt(ctx) + case menu.FieldSort: + return m.OldSort(ctx) case menu.FieldParentID: return m.OldParentID(ctx) case menu.FieldMenuLevel: @@ -5020,8 +5024,6 @@ func (m *MenuMutation) OldField(ctx context.Context, name string) (ent.Value, er return m.OldRedirect(ctx) case menu.FieldComponent: return m.OldComponent(ctx) - case menu.FieldSort: - return m.OldSort(ctx) case menu.FieldDisabled: return m.OldDisabled(ctx) case menu.FieldTitle: @@ -5073,6 +5075,13 @@ func (m *MenuMutation) SetField(name string, value ent.Value) error { } m.SetUpdatedAt(v) return nil + case menu.FieldSort: + v, ok := value.(uint32) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetSort(v) + return nil case menu.FieldParentID: v, ok := value.(uint64) if !ok { @@ -5122,13 +5131,6 @@ func (m *MenuMutation) SetField(name string, value ent.Value) error { } m.SetComponent(v) return nil - case menu.FieldSort: - v, ok := value.(uint32) - if !ok { - return fmt.Errorf("unexpected type %T for field %s", value, name) - } - m.SetSort(v) - return nil case menu.FieldDisabled: v, ok := value.(bool) if !ok { @@ -5235,15 +5237,15 @@ func (m *MenuMutation) SetField(name string, value ent.Value) error { // this mutation. func (m *MenuMutation) AddedFields() []string { var fields []string + if m.addsort != nil { + fields = append(fields, menu.FieldSort) + } if m.addmenu_level != nil { fields = append(fields, menu.FieldMenuLevel) } if m.addmenu_type != nil { fields = append(fields, menu.FieldMenuType) } - if m.addsort != nil { - fields = append(fields, menu.FieldSort) - } if m.adddynamic_level != nil { fields = append(fields, menu.FieldDynamicLevel) } @@ -5255,12 +5257,12 @@ func (m *MenuMutation) AddedFields() []string { // was not set, or was not defined in the schema. func (m *MenuMutation) AddedField(name string) (ent.Value, bool) { switch name { + case menu.FieldSort: + return m.AddedSort() case menu.FieldMenuLevel: return m.AddedMenuLevel() case menu.FieldMenuType: return m.AddedMenuType() - case menu.FieldSort: - return m.AddedSort() case menu.FieldDynamicLevel: return m.AddedDynamicLevel() } @@ -5272,26 +5274,26 @@ func (m *MenuMutation) AddedField(name string) (ent.Value, bool) { // type. func (m *MenuMutation) AddField(name string, value ent.Value) error { switch name { - case menu.FieldMenuLevel: + case menu.FieldSort: v, ok := value.(int32) if !ok { return fmt.Errorf("unexpected type %T for field %s", value, name) } - m.AddMenuLevel(v) + m.AddSort(v) return nil - case menu.FieldMenuType: + case menu.FieldMenuLevel: v, ok := value.(int32) if !ok { return fmt.Errorf("unexpected type %T for field %s", value, name) } - m.AddMenuType(v) + m.AddMenuLevel(v) return nil - case menu.FieldSort: + case menu.FieldMenuType: v, ok := value.(int32) if !ok { return fmt.Errorf("unexpected type %T for field %s", value, name) } - m.AddSort(v) + m.AddMenuType(v) return nil case menu.FieldDynamicLevel: v, ok := value.(int32) @@ -5432,6 +5434,9 @@ func (m *MenuMutation) ResetField(name string) error { case menu.FieldUpdatedAt: m.ResetUpdatedAt() return nil + case menu.FieldSort: + m.ResetSort() + return nil case menu.FieldParentID: m.ResetParentID() return nil @@ -5453,9 +5458,6 @@ func (m *MenuMutation) ResetField(name string) error { case menu.FieldComponent: m.ResetComponent() return nil - case menu.FieldSort: - m.ResetSort() - return nil case menu.FieldDisabled: m.ResetDisabled() return nil @@ -7179,42 +7181,41 @@ func (m *OauthProviderMutation) ResetEdge(name string) error { return fmt.Errorf("unknown OauthProvider edge %s", name) } -// RoleMutation represents an operation that mutates the Role nodes in the graph. -type RoleMutation struct { +// PostMutation represents an operation that mutates the Post nodes in the graph. +type PostMutation struct { config - op Op - typ string - id *uint64 - created_at *time.Time - updated_at *time.Time - status *uint8 - addstatus *int8 - name *string - value *string - default_router *string - remark *string - sort *uint32 - addsort *int32 - clearedFields map[string]struct{} - menus map[uint64]struct{} - removedmenus map[uint64]struct{} - clearedmenus bool - done bool - oldValue func(context.Context) (*Role, error) - predicates []predicate.Role + op Op + typ string + id *uint64 + created_at *time.Time + updated_at *time.Time + status *uint8 + addstatus *int8 + sort *uint32 + addsort *int32 + name *string + code *string + remark *string + clearedFields map[string]struct{} + user map[uuid.UUID]struct{} + removeduser map[uuid.UUID]struct{} + cleareduser bool + done bool + oldValue func(context.Context) (*Post, error) + predicates []predicate.Post } -var _ ent.Mutation = (*RoleMutation)(nil) +var _ ent.Mutation = (*PostMutation)(nil) -// roleOption allows management of the mutation configuration using functional options. -type roleOption func(*RoleMutation) +// postOption allows management of the mutation configuration using functional options. +type postOption func(*PostMutation) -// newRoleMutation creates new mutation for the Role entity. -func newRoleMutation(c config, op Op, opts ...roleOption) *RoleMutation { - m := &RoleMutation{ +// newPostMutation creates new mutation for the Post entity. +func newPostMutation(c config, op Op, opts ...postOption) *PostMutation { + m := &PostMutation{ config: c, op: op, - typ: TypeRole, + typ: TypePost, clearedFields: make(map[string]struct{}), } for _, opt := range opts { @@ -7223,20 +7224,20 @@ func newRoleMutation(c config, op Op, opts ...roleOption) *RoleMutation { return m } -// withRoleID sets the ID field of the mutation. -func withRoleID(id uint64) roleOption { - return func(m *RoleMutation) { +// withPostID sets the ID field of the mutation. +func withPostID(id uint64) postOption { + return func(m *PostMutation) { var ( err error once sync.Once - value *Role + value *Post ) - m.oldValue = func(ctx context.Context) (*Role, error) { + m.oldValue = func(ctx context.Context) (*Post, error) { once.Do(func() { if m.done { err = errors.New("querying old values post mutation is not allowed") } else { - value, err = m.Client().Role.Get(ctx, id) + value, err = m.Client().Post.Get(ctx, id) } }) return value, err @@ -7245,10 +7246,10 @@ func withRoleID(id uint64) roleOption { } } -// withRole sets the old Role of the mutation. -func withRole(node *Role) roleOption { - return func(m *RoleMutation) { - m.oldValue = func(context.Context) (*Role, error) { +// withPost sets the old Post of the mutation. +func withPost(node *Post) postOption { + return func(m *PostMutation) { + m.oldValue = func(context.Context) (*Post, error) { return node, nil } m.id = &node.ID @@ -7257,7 +7258,7 @@ func withRole(node *Role) roleOption { // Client returns a new `ent.Client` from the mutation. If the mutation was // executed in a transaction (ent.Tx), a transactional client is returned. -func (m RoleMutation) Client() *Client { +func (m PostMutation) Client() *Client { client := &Client{config: m.config} client.init() return client @@ -7265,7 +7266,7 @@ func (m RoleMutation) Client() *Client { // Tx returns an `ent.Tx` for mutations that were executed in transactions; // it returns an error otherwise. -func (m RoleMutation) Tx() (*Tx, error) { +func (m PostMutation) Tx() (*Tx, error) { if _, ok := m.driver.(*txDriver); !ok { return nil, errors.New("ent: mutation is not running in a transaction") } @@ -7275,14 +7276,14 @@ func (m RoleMutation) Tx() (*Tx, error) { } // SetID sets the value of the id field. Note that this -// operation is only accepted on creation of Role entities. -func (m *RoleMutation) SetID(id uint64) { +// operation is only accepted on creation of Post entities. +func (m *PostMutation) SetID(id uint64) { m.id = &id } // ID returns the ID value in the mutation. Note that the ID is only available // if it was provided to the builder or after it was returned from the database. -func (m *RoleMutation) ID() (id uint64, exists bool) { +func (m *PostMutation) ID() (id uint64, exists bool) { if m.id == nil { return } @@ -7293,7 +7294,7 @@ func (m *RoleMutation) ID() (id uint64, exists bool) { // That means, if the mutation is applied within a transaction with an isolation level such // as sql.LevelSerializable, the returned ids match the ids of the rows that will be updated // or updated by the mutation. -func (m *RoleMutation) IDs(ctx context.Context) ([]uint64, error) { +func (m *PostMutation) IDs(ctx context.Context) ([]uint64, error) { switch { case m.op.Is(OpUpdateOne | OpDeleteOne): id, exists := m.ID() @@ -7302,19 +7303,19 @@ func (m *RoleMutation) IDs(ctx context.Context) ([]uint64, error) { } fallthrough case m.op.Is(OpUpdate | OpDelete): - return m.Client().Role.Query().Where(m.predicates...).IDs(ctx) + return m.Client().Post.Query().Where(m.predicates...).IDs(ctx) default: return nil, fmt.Errorf("IDs is not allowed on %s operations", m.op) } } // SetCreatedAt sets the "created_at" field. -func (m *RoleMutation) SetCreatedAt(t time.Time) { +func (m *PostMutation) SetCreatedAt(t time.Time) { m.created_at = &t } // CreatedAt returns the value of the "created_at" field in the mutation. -func (m *RoleMutation) CreatedAt() (r time.Time, exists bool) { +func (m *PostMutation) CreatedAt() (r time.Time, exists bool) { v := m.created_at if v == nil { return @@ -7322,10 +7323,10 @@ func (m *RoleMutation) CreatedAt() (r time.Time, exists bool) { return *v, true } -// OldCreatedAt returns the old "created_at" field's value of the Role entity. -// If the Role object wasn't provided to the builder, the object is fetched from the database. +// OldCreatedAt returns the old "created_at" field's value of the Post entity. +// If the Post object wasn't provided to the builder, the object is fetched from the database. // An error is returned if the mutation operation is not UpdateOne, or the database query fails. -func (m *RoleMutation) OldCreatedAt(ctx context.Context) (v time.Time, err error) { +func (m *PostMutation) OldCreatedAt(ctx context.Context) (v time.Time, err error) { if !m.op.Is(OpUpdateOne) { return v, errors.New("OldCreatedAt is only allowed on UpdateOne operations") } @@ -7340,17 +7341,17 @@ func (m *RoleMutation) OldCreatedAt(ctx context.Context) (v time.Time, err error } // ResetCreatedAt resets all changes to the "created_at" field. -func (m *RoleMutation) ResetCreatedAt() { +func (m *PostMutation) ResetCreatedAt() { m.created_at = nil } // SetUpdatedAt sets the "updated_at" field. -func (m *RoleMutation) SetUpdatedAt(t time.Time) { +func (m *PostMutation) SetUpdatedAt(t time.Time) { m.updated_at = &t } // UpdatedAt returns the value of the "updated_at" field in the mutation. -func (m *RoleMutation) UpdatedAt() (r time.Time, exists bool) { +func (m *PostMutation) UpdatedAt() (r time.Time, exists bool) { v := m.updated_at if v == nil { return @@ -7358,10 +7359,10 @@ func (m *RoleMutation) UpdatedAt() (r time.Time, exists bool) { return *v, true } -// OldUpdatedAt returns the old "updated_at" field's value of the Role entity. -// If the Role object wasn't provided to the builder, the object is fetched from the database. +// OldUpdatedAt returns the old "updated_at" field's value of the Post entity. +// If the Post object wasn't provided to the builder, the object is fetched from the database. // An error is returned if the mutation operation is not UpdateOne, or the database query fails. -func (m *RoleMutation) OldUpdatedAt(ctx context.Context) (v time.Time, err error) { +func (m *PostMutation) OldUpdatedAt(ctx context.Context) (v time.Time, err error) { if !m.op.Is(OpUpdateOne) { return v, errors.New("OldUpdatedAt is only allowed on UpdateOne operations") } @@ -7376,18 +7377,18 @@ func (m *RoleMutation) OldUpdatedAt(ctx context.Context) (v time.Time, err error } // ResetUpdatedAt resets all changes to the "updated_at" field. -func (m *RoleMutation) ResetUpdatedAt() { +func (m *PostMutation) ResetUpdatedAt() { m.updated_at = nil } // SetStatus sets the "status" field. -func (m *RoleMutation) SetStatus(u uint8) { +func (m *PostMutation) SetStatus(u uint8) { m.status = &u m.addstatus = nil } // Status returns the value of the "status" field in the mutation. -func (m *RoleMutation) Status() (r uint8, exists bool) { +func (m *PostMutation) Status() (r uint8, exists bool) { v := m.status if v == nil { return @@ -7395,10 +7396,10 @@ func (m *RoleMutation) Status() (r uint8, exists bool) { return *v, true } -// OldStatus returns the old "status" field's value of the Role entity. -// If the Role object wasn't provided to the builder, the object is fetched from the database. +// OldStatus returns the old "status" field's value of the Post entity. +// If the Post object wasn't provided to the builder, the object is fetched from the database. // An error is returned if the mutation operation is not UpdateOne, or the database query fails. -func (m *RoleMutation) OldStatus(ctx context.Context) (v uint8, err error) { +func (m *PostMutation) OldStatus(ctx context.Context) (v uint8, err error) { if !m.op.Is(OpUpdateOne) { return v, errors.New("OldStatus is only allowed on UpdateOne operations") } @@ -7413,7 +7414,7 @@ func (m *RoleMutation) OldStatus(ctx context.Context) (v uint8, err error) { } // AddStatus adds u to the "status" field. -func (m *RoleMutation) AddStatus(u int8) { +func (m *PostMutation) AddStatus(u int8) { if m.addstatus != nil { *m.addstatus += u } else { @@ -7422,7 +7423,7 @@ func (m *RoleMutation) AddStatus(u int8) { } // AddedStatus returns the value that was added to the "status" field in this mutation. -func (m *RoleMutation) AddedStatus() (r int8, exists bool) { +func (m *PostMutation) AddedStatus() (r int8, exists bool) { v := m.addstatus if v == nil { return @@ -7431,32 +7432,88 @@ func (m *RoleMutation) AddedStatus() (r int8, exists bool) { } // ClearStatus clears the value of the "status" field. -func (m *RoleMutation) ClearStatus() { +func (m *PostMutation) ClearStatus() { m.status = nil m.addstatus = nil - m.clearedFields[role.FieldStatus] = struct{}{} + m.clearedFields[post.FieldStatus] = struct{}{} } // StatusCleared returns if the "status" field was cleared in this mutation. -func (m *RoleMutation) StatusCleared() bool { - _, ok := m.clearedFields[role.FieldStatus] +func (m *PostMutation) StatusCleared() bool { + _, ok := m.clearedFields[post.FieldStatus] return ok } // ResetStatus resets all changes to the "status" field. -func (m *RoleMutation) ResetStatus() { +func (m *PostMutation) ResetStatus() { m.status = nil m.addstatus = nil - delete(m.clearedFields, role.FieldStatus) + delete(m.clearedFields, post.FieldStatus) +} + +// SetSort sets the "sort" field. +func (m *PostMutation) SetSort(u uint32) { + m.sort = &u + m.addsort = nil +} + +// Sort returns the value of the "sort" field in the mutation. +func (m *PostMutation) Sort() (r uint32, exists bool) { + v := m.sort + if v == nil { + return + } + return *v, true +} + +// OldSort returns the old "sort" field's value of the Post entity. +// If the Post object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *PostMutation) OldSort(ctx context.Context) (v uint32, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldSort is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldSort requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldSort: %w", err) + } + return oldValue.Sort, nil +} + +// AddSort adds u to the "sort" field. +func (m *PostMutation) AddSort(u int32) { + if m.addsort != nil { + *m.addsort += u + } else { + m.addsort = &u + } +} + +// AddedSort returns the value that was added to the "sort" field in this mutation. +func (m *PostMutation) AddedSort() (r int32, exists bool) { + v := m.addsort + if v == nil { + return + } + return *v, true +} + +// ResetSort resets all changes to the "sort" field. +func (m *PostMutation) ResetSort() { + m.sort = nil + m.addsort = nil } // SetName sets the "name" field. -func (m *RoleMutation) SetName(s string) { +func (m *PostMutation) SetName(s string) { m.name = &s } // Name returns the value of the "name" field in the mutation. -func (m *RoleMutation) Name() (r string, exists bool) { +func (m *PostMutation) Name() (r string, exists bool) { v := m.name if v == nil { return @@ -7464,10 +7521,10 @@ func (m *RoleMutation) Name() (r string, exists bool) { return *v, true } -// OldName returns the old "name" field's value of the Role entity. -// If the Role object wasn't provided to the builder, the object is fetched from the database. +// OldName returns the old "name" field's value of the Post entity. +// If the Post object wasn't provided to the builder, the object is fetched from the database. // An error is returned if the mutation operation is not UpdateOne, or the database query fails. -func (m *RoleMutation) OldName(ctx context.Context) (v string, err error) { +func (m *PostMutation) OldName(ctx context.Context) (v string, err error) { if !m.op.Is(OpUpdateOne) { return v, errors.New("OldName is only allowed on UpdateOne operations") } @@ -7482,53 +7539,839 @@ func (m *RoleMutation) OldName(ctx context.Context) (v string, err error) { } // ResetName resets all changes to the "name" field. -func (m *RoleMutation) ResetName() { +func (m *PostMutation) ResetName() { m.name = nil } -// SetValue sets the "value" field. -func (m *RoleMutation) SetValue(s string) { - m.value = &s +// SetCode sets the "code" field. +func (m *PostMutation) SetCode(s string) { + m.code = &s } -// Value returns the value of the "value" field in the mutation. -func (m *RoleMutation) Value() (r string, exists bool) { - v := m.value +// Code returns the value of the "code" field in the mutation. +func (m *PostMutation) Code() (r string, exists bool) { + v := m.code if v == nil { return } return *v, true } -// OldValue returns the old "value" field's value of the Role entity. -// If the Role object wasn't provided to the builder, the object is fetched from the database. +// OldCode returns the old "code" field's value of the Post entity. +// If the Post object wasn't provided to the builder, the object is fetched from the database. // An error is returned if the mutation operation is not UpdateOne, or the database query fails. -func (m *RoleMutation) OldValue(ctx context.Context) (v string, err error) { +func (m *PostMutation) OldCode(ctx context.Context) (v string, err error) { if !m.op.Is(OpUpdateOne) { - return v, errors.New("OldValue is only allowed on UpdateOne operations") + return v, errors.New("OldCode is only allowed on UpdateOne operations") } if m.id == nil || m.oldValue == nil { - return v, errors.New("OldValue requires an ID field in the mutation") + return v, errors.New("OldCode requires an ID field in the mutation") } oldValue, err := m.oldValue(ctx) if err != nil { - return v, fmt.Errorf("querying old value for OldValue: %w", err) + return v, fmt.Errorf("querying old value for OldCode: %w", err) } - return oldValue.Value, nil + return oldValue.Code, nil } -// ResetValue resets all changes to the "value" field. -func (m *RoleMutation) ResetValue() { - m.value = nil +// ResetCode resets all changes to the "code" field. +func (m *PostMutation) ResetCode() { + m.code = nil } -// SetDefaultRouter sets the "default_router" field. -func (m *RoleMutation) SetDefaultRouter(s string) { - m.default_router = &s +// SetRemark sets the "remark" field. +func (m *PostMutation) SetRemark(s string) { + m.remark = &s } -// DefaultRouter returns the value of the "default_router" field in the mutation. -func (m *RoleMutation) DefaultRouter() (r string, exists bool) { +// Remark returns the value of the "remark" field in the mutation. +func (m *PostMutation) Remark() (r string, exists bool) { + v := m.remark + if v == nil { + return + } + return *v, true +} + +// OldRemark returns the old "remark" field's value of the Post entity. +// If the Post object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *PostMutation) OldRemark(ctx context.Context) (v string, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldRemark is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldRemark requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldRemark: %w", err) + } + return oldValue.Remark, nil +} + +// ResetRemark resets all changes to the "remark" field. +func (m *PostMutation) ResetRemark() { + m.remark = nil +} + +// AddUserIDs adds the "user" edge to the User entity by ids. +func (m *PostMutation) AddUserIDs(ids ...uuid.UUID) { + if m.user == nil { + m.user = make(map[uuid.UUID]struct{}) + } + for i := range ids { + m.user[ids[i]] = struct{}{} + } +} + +// ClearUser clears the "user" edge to the User entity. +func (m *PostMutation) ClearUser() { + m.cleareduser = true +} + +// UserCleared reports if the "user" edge to the User entity was cleared. +func (m *PostMutation) UserCleared() bool { + return m.cleareduser +} + +// RemoveUserIDs removes the "user" edge to the User entity by IDs. +func (m *PostMutation) RemoveUserIDs(ids ...uuid.UUID) { + if m.removeduser == nil { + m.removeduser = make(map[uuid.UUID]struct{}) + } + for i := range ids { + delete(m.user, ids[i]) + m.removeduser[ids[i]] = struct{}{} + } +} + +// RemovedUser returns the removed IDs of the "user" edge to the User entity. +func (m *PostMutation) RemovedUserIDs() (ids []uuid.UUID) { + for id := range m.removeduser { + ids = append(ids, id) + } + return +} + +// UserIDs returns the "user" edge IDs in the mutation. +func (m *PostMutation) UserIDs() (ids []uuid.UUID) { + for id := range m.user { + ids = append(ids, id) + } + return +} + +// ResetUser resets all changes to the "user" edge. +func (m *PostMutation) ResetUser() { + m.user = nil + m.cleareduser = false + m.removeduser = nil +} + +// Where appends a list predicates to the PostMutation builder. +func (m *PostMutation) Where(ps ...predicate.Post) { + m.predicates = append(m.predicates, ps...) +} + +// WhereP appends storage-level predicates to the PostMutation builder. Using this method, +// users can use type-assertion to append predicates that do not depend on any generated package. +func (m *PostMutation) WhereP(ps ...func(*sql.Selector)) { + p := make([]predicate.Post, len(ps)) + for i := range ps { + p[i] = ps[i] + } + m.Where(p...) +} + +// Op returns the operation name. +func (m *PostMutation) Op() Op { + return m.op +} + +// SetOp allows setting the mutation operation. +func (m *PostMutation) SetOp(op Op) { + m.op = op +} + +// Type returns the node type of this mutation (Post). +func (m *PostMutation) Type() string { + return m.typ +} + +// Fields returns all fields that were changed during this mutation. Note that in +// order to get all numeric fields that were incremented/decremented, call +// AddedFields(). +func (m *PostMutation) Fields() []string { + fields := make([]string, 0, 7) + if m.created_at != nil { + fields = append(fields, post.FieldCreatedAt) + } + if m.updated_at != nil { + fields = append(fields, post.FieldUpdatedAt) + } + if m.status != nil { + fields = append(fields, post.FieldStatus) + } + if m.sort != nil { + fields = append(fields, post.FieldSort) + } + if m.name != nil { + fields = append(fields, post.FieldName) + } + if m.code != nil { + fields = append(fields, post.FieldCode) + } + if m.remark != nil { + fields = append(fields, post.FieldRemark) + } + return fields +} + +// Field returns the value of a field with the given name. The second boolean +// return value indicates that this field was not set, or was not defined in the +// schema. +func (m *PostMutation) Field(name string) (ent.Value, bool) { + switch name { + case post.FieldCreatedAt: + return m.CreatedAt() + case post.FieldUpdatedAt: + return m.UpdatedAt() + case post.FieldStatus: + return m.Status() + case post.FieldSort: + return m.Sort() + case post.FieldName: + return m.Name() + case post.FieldCode: + return m.Code() + case post.FieldRemark: + return m.Remark() + } + return nil, false +} + +// OldField returns the old value of the field from the database. An error is +// returned if the mutation operation is not UpdateOne, or the query to the +// database failed. +func (m *PostMutation) OldField(ctx context.Context, name string) (ent.Value, error) { + switch name { + case post.FieldCreatedAt: + return m.OldCreatedAt(ctx) + case post.FieldUpdatedAt: + return m.OldUpdatedAt(ctx) + case post.FieldStatus: + return m.OldStatus(ctx) + case post.FieldSort: + return m.OldSort(ctx) + case post.FieldName: + return m.OldName(ctx) + case post.FieldCode: + return m.OldCode(ctx) + case post.FieldRemark: + return m.OldRemark(ctx) + } + return nil, fmt.Errorf("unknown Post field %s", name) +} + +// SetField sets the value of a field with the given name. It returns an error if +// the field is not defined in the schema, or if the type mismatched the field +// type. +func (m *PostMutation) SetField(name string, value ent.Value) error { + switch name { + case post.FieldCreatedAt: + v, ok := value.(time.Time) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetCreatedAt(v) + return nil + case post.FieldUpdatedAt: + v, ok := value.(time.Time) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetUpdatedAt(v) + return nil + case post.FieldStatus: + v, ok := value.(uint8) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetStatus(v) + return nil + case post.FieldSort: + v, ok := value.(uint32) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetSort(v) + return nil + case post.FieldName: + v, ok := value.(string) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetName(v) + return nil + case post.FieldCode: + v, ok := value.(string) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetCode(v) + return nil + case post.FieldRemark: + v, ok := value.(string) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetRemark(v) + return nil + } + return fmt.Errorf("unknown Post field %s", name) +} + +// AddedFields returns all numeric fields that were incremented/decremented during +// this mutation. +func (m *PostMutation) AddedFields() []string { + var fields []string + if m.addstatus != nil { + fields = append(fields, post.FieldStatus) + } + if m.addsort != nil { + fields = append(fields, post.FieldSort) + } + return fields +} + +// AddedField returns the numeric value that was incremented/decremented on a field +// with the given name. The second boolean return value indicates that this field +// was not set, or was not defined in the schema. +func (m *PostMutation) AddedField(name string) (ent.Value, bool) { + switch name { + case post.FieldStatus: + return m.AddedStatus() + case post.FieldSort: + return m.AddedSort() + } + return nil, false +} + +// AddField adds the value to the field with the given name. It returns an error if +// the field is not defined in the schema, or if the type mismatched the field +// type. +func (m *PostMutation) AddField(name string, value ent.Value) error { + switch name { + case post.FieldStatus: + v, ok := value.(int8) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.AddStatus(v) + return nil + case post.FieldSort: + v, ok := value.(int32) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.AddSort(v) + return nil + } + return fmt.Errorf("unknown Post numeric field %s", name) +} + +// ClearedFields returns all nullable fields that were cleared during this +// mutation. +func (m *PostMutation) ClearedFields() []string { + var fields []string + if m.FieldCleared(post.FieldStatus) { + fields = append(fields, post.FieldStatus) + } + return fields +} + +// FieldCleared returns a boolean indicating if a field with the given name was +// cleared in this mutation. +func (m *PostMutation) FieldCleared(name string) bool { + _, ok := m.clearedFields[name] + return ok +} + +// ClearField clears the value of the field with the given name. It returns an +// error if the field is not defined in the schema. +func (m *PostMutation) ClearField(name string) error { + switch name { + case post.FieldStatus: + m.ClearStatus() + return nil + } + return fmt.Errorf("unknown Post nullable field %s", name) +} + +// ResetField resets all changes in the mutation for the field with the given name. +// It returns an error if the field is not defined in the schema. +func (m *PostMutation) ResetField(name string) error { + switch name { + case post.FieldCreatedAt: + m.ResetCreatedAt() + return nil + case post.FieldUpdatedAt: + m.ResetUpdatedAt() + return nil + case post.FieldStatus: + m.ResetStatus() + return nil + case post.FieldSort: + m.ResetSort() + return nil + case post.FieldName: + m.ResetName() + return nil + case post.FieldCode: + m.ResetCode() + return nil + case post.FieldRemark: + m.ResetRemark() + return nil + } + return fmt.Errorf("unknown Post field %s", name) +} + +// AddedEdges returns all edge names that were set/added in this mutation. +func (m *PostMutation) AddedEdges() []string { + edges := make([]string, 0, 1) + if m.user != nil { + edges = append(edges, post.EdgeUser) + } + return edges +} + +// AddedIDs returns all IDs (to other nodes) that were added for the given edge +// name in this mutation. +func (m *PostMutation) AddedIDs(name string) []ent.Value { + switch name { + case post.EdgeUser: + ids := make([]ent.Value, 0, len(m.user)) + for id := range m.user { + ids = append(ids, id) + } + return ids + } + return nil +} + +// RemovedEdges returns all edge names that were removed in this mutation. +func (m *PostMutation) RemovedEdges() []string { + edges := make([]string, 0, 1) + if m.removeduser != nil { + edges = append(edges, post.EdgeUser) + } + return edges +} + +// RemovedIDs returns all IDs (to other nodes) that were removed for the edge with +// the given name in this mutation. +func (m *PostMutation) RemovedIDs(name string) []ent.Value { + switch name { + case post.EdgeUser: + ids := make([]ent.Value, 0, len(m.removeduser)) + for id := range m.removeduser { + ids = append(ids, id) + } + return ids + } + return nil +} + +// ClearedEdges returns all edge names that were cleared in this mutation. +func (m *PostMutation) ClearedEdges() []string { + edges := make([]string, 0, 1) + if m.cleareduser { + edges = append(edges, post.EdgeUser) + } + return edges +} + +// EdgeCleared returns a boolean which indicates if the edge with the given name +// was cleared in this mutation. +func (m *PostMutation) EdgeCleared(name string) bool { + switch name { + case post.EdgeUser: + return m.cleareduser + } + return false +} + +// ClearEdge clears the value of the edge with the given name. It returns an error +// if that edge is not defined in the schema. +func (m *PostMutation) ClearEdge(name string) error { + switch name { + } + return fmt.Errorf("unknown Post unique edge %s", name) +} + +// ResetEdge resets all changes to the edge with the given name in this mutation. +// It returns an error if the edge is not defined in the schema. +func (m *PostMutation) ResetEdge(name string) error { + switch name { + case post.EdgeUser: + m.ResetUser() + return nil + } + return fmt.Errorf("unknown Post edge %s", name) +} + +// RoleMutation represents an operation that mutates the Role nodes in the graph. +type RoleMutation struct { + config + op Op + typ string + id *uint64 + created_at *time.Time + updated_at *time.Time + status *uint8 + addstatus *int8 + name *string + value *string + default_router *string + remark *string + sort *uint32 + addsort *int32 + clearedFields map[string]struct{} + menus map[uint64]struct{} + removedmenus map[uint64]struct{} + clearedmenus bool + done bool + oldValue func(context.Context) (*Role, error) + predicates []predicate.Role +} + +var _ ent.Mutation = (*RoleMutation)(nil) + +// roleOption allows management of the mutation configuration using functional options. +type roleOption func(*RoleMutation) + +// newRoleMutation creates new mutation for the Role entity. +func newRoleMutation(c config, op Op, opts ...roleOption) *RoleMutation { + m := &RoleMutation{ + config: c, + op: op, + typ: TypeRole, + clearedFields: make(map[string]struct{}), + } + for _, opt := range opts { + opt(m) + } + return m +} + +// withRoleID sets the ID field of the mutation. +func withRoleID(id uint64) roleOption { + return func(m *RoleMutation) { + var ( + err error + once sync.Once + value *Role + ) + m.oldValue = func(ctx context.Context) (*Role, error) { + once.Do(func() { + if m.done { + err = errors.New("querying old values post mutation is not allowed") + } else { + value, err = m.Client().Role.Get(ctx, id) + } + }) + return value, err + } + m.id = &id + } +} + +// withRole sets the old Role of the mutation. +func withRole(node *Role) roleOption { + return func(m *RoleMutation) { + m.oldValue = func(context.Context) (*Role, error) { + return node, nil + } + m.id = &node.ID + } +} + +// Client returns a new `ent.Client` from the mutation. If the mutation was +// executed in a transaction (ent.Tx), a transactional client is returned. +func (m RoleMutation) Client() *Client { + client := &Client{config: m.config} + client.init() + return client +} + +// Tx returns an `ent.Tx` for mutations that were executed in transactions; +// it returns an error otherwise. +func (m RoleMutation) Tx() (*Tx, error) { + if _, ok := m.driver.(*txDriver); !ok { + return nil, errors.New("ent: mutation is not running in a transaction") + } + tx := &Tx{config: m.config} + tx.init() + return tx, nil +} + +// SetID sets the value of the id field. Note that this +// operation is only accepted on creation of Role entities. +func (m *RoleMutation) SetID(id uint64) { + m.id = &id +} + +// ID returns the ID value in the mutation. Note that the ID is only available +// if it was provided to the builder or after it was returned from the database. +func (m *RoleMutation) ID() (id uint64, exists bool) { + if m.id == nil { + return + } + return *m.id, true +} + +// IDs queries the database and returns the entity ids that match the mutation's predicate. +// That means, if the mutation is applied within a transaction with an isolation level such +// as sql.LevelSerializable, the returned ids match the ids of the rows that will be updated +// or updated by the mutation. +func (m *RoleMutation) IDs(ctx context.Context) ([]uint64, error) { + switch { + case m.op.Is(OpUpdateOne | OpDeleteOne): + id, exists := m.ID() + if exists { + return []uint64{id}, nil + } + fallthrough + case m.op.Is(OpUpdate | OpDelete): + return m.Client().Role.Query().Where(m.predicates...).IDs(ctx) + default: + return nil, fmt.Errorf("IDs is not allowed on %s operations", m.op) + } +} + +// SetCreatedAt sets the "created_at" field. +func (m *RoleMutation) SetCreatedAt(t time.Time) { + m.created_at = &t +} + +// CreatedAt returns the value of the "created_at" field in the mutation. +func (m *RoleMutation) CreatedAt() (r time.Time, exists bool) { + v := m.created_at + if v == nil { + return + } + return *v, true +} + +// OldCreatedAt returns the old "created_at" field's value of the Role entity. +// If the Role object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *RoleMutation) OldCreatedAt(ctx context.Context) (v time.Time, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldCreatedAt is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldCreatedAt requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldCreatedAt: %w", err) + } + return oldValue.CreatedAt, nil +} + +// ResetCreatedAt resets all changes to the "created_at" field. +func (m *RoleMutation) ResetCreatedAt() { + m.created_at = nil +} + +// SetUpdatedAt sets the "updated_at" field. +func (m *RoleMutation) SetUpdatedAt(t time.Time) { + m.updated_at = &t +} + +// UpdatedAt returns the value of the "updated_at" field in the mutation. +func (m *RoleMutation) UpdatedAt() (r time.Time, exists bool) { + v := m.updated_at + if v == nil { + return + } + return *v, true +} + +// OldUpdatedAt returns the old "updated_at" field's value of the Role entity. +// If the Role object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *RoleMutation) OldUpdatedAt(ctx context.Context) (v time.Time, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldUpdatedAt is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldUpdatedAt requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldUpdatedAt: %w", err) + } + return oldValue.UpdatedAt, nil +} + +// ResetUpdatedAt resets all changes to the "updated_at" field. +func (m *RoleMutation) ResetUpdatedAt() { + m.updated_at = nil +} + +// SetStatus sets the "status" field. +func (m *RoleMutation) SetStatus(u uint8) { + m.status = &u + m.addstatus = nil +} + +// Status returns the value of the "status" field in the mutation. +func (m *RoleMutation) Status() (r uint8, exists bool) { + v := m.status + if v == nil { + return + } + return *v, true +} + +// OldStatus returns the old "status" field's value of the Role entity. +// If the Role object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *RoleMutation) OldStatus(ctx context.Context) (v uint8, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldStatus is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldStatus requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldStatus: %w", err) + } + return oldValue.Status, nil +} + +// AddStatus adds u to the "status" field. +func (m *RoleMutation) AddStatus(u int8) { + if m.addstatus != nil { + *m.addstatus += u + } else { + m.addstatus = &u + } +} + +// AddedStatus returns the value that was added to the "status" field in this mutation. +func (m *RoleMutation) AddedStatus() (r int8, exists bool) { + v := m.addstatus + if v == nil { + return + } + return *v, true +} + +// ClearStatus clears the value of the "status" field. +func (m *RoleMutation) ClearStatus() { + m.status = nil + m.addstatus = nil + m.clearedFields[role.FieldStatus] = struct{}{} +} + +// StatusCleared returns if the "status" field was cleared in this mutation. +func (m *RoleMutation) StatusCleared() bool { + _, ok := m.clearedFields[role.FieldStatus] + return ok +} + +// ResetStatus resets all changes to the "status" field. +func (m *RoleMutation) ResetStatus() { + m.status = nil + m.addstatus = nil + delete(m.clearedFields, role.FieldStatus) +} + +// SetName sets the "name" field. +func (m *RoleMutation) SetName(s string) { + m.name = &s +} + +// Name returns the value of the "name" field in the mutation. +func (m *RoleMutation) Name() (r string, exists bool) { + v := m.name + if v == nil { + return + } + return *v, true +} + +// OldName returns the old "name" field's value of the Role entity. +// If the Role object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *RoleMutation) OldName(ctx context.Context) (v string, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldName is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldName requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldName: %w", err) + } + return oldValue.Name, nil +} + +// ResetName resets all changes to the "name" field. +func (m *RoleMutation) ResetName() { + m.name = nil +} + +// SetValue sets the "value" field. +func (m *RoleMutation) SetValue(s string) { + m.value = &s +} + +// Value returns the value of the "value" field in the mutation. +func (m *RoleMutation) Value() (r string, exists bool) { + v := m.value + if v == nil { + return + } + return *v, true +} + +// OldValue returns the old "value" field's value of the Role entity. +// If the Role object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *RoleMutation) OldValue(ctx context.Context) (v string, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldValue is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldValue requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldValue: %w", err) + } + return oldValue.Value, nil +} + +// ResetValue resets all changes to the "value" field. +func (m *RoleMutation) ResetValue() { + m.value = nil +} + +// SetDefaultRouter sets the "default_router" field. +func (m *RoleMutation) SetDefaultRouter(s string) { + m.default_router = &s +} + +// DefaultRouter returns the value of the "default_router" field in the mutation. +func (m *RoleMutation) DefaultRouter() (r string, exists bool) { v := m.default_router if v == nil { return @@ -8812,6 +9655,8 @@ type UserMutation struct { clearedFields map[string]struct{} department *uint64 cleareddepartment bool + post *uint64 + clearedpost bool done bool oldValue func(context.Context) (*User, error) predicates []predicate.User @@ -9522,6 +10367,55 @@ func (m *UserMutation) ResetDepartmentID() { delete(m.clearedFields, user.FieldDepartmentID) } +// SetPostID sets the "post_id" field. +func (m *UserMutation) SetPostID(u uint64) { + m.post = &u +} + +// PostID returns the value of the "post_id" field in the mutation. +func (m *UserMutation) PostID() (r uint64, exists bool) { + v := m.post + if v == nil { + return + } + return *v, true +} + +// OldPostID returns the old "post_id" field's value of the User entity. +// If the User object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *UserMutation) OldPostID(ctx context.Context) (v uint64, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldPostID is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldPostID requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldPostID: %w", err) + } + return oldValue.PostID, nil +} + +// ClearPostID clears the value of the "post_id" field. +func (m *UserMutation) ClearPostID() { + m.post = nil + m.clearedFields[user.FieldPostID] = struct{}{} +} + +// PostIDCleared returns if the "post_id" field was cleared in this mutation. +func (m *UserMutation) PostIDCleared() bool { + _, ok := m.clearedFields[user.FieldPostID] + return ok +} + +// ResetPostID resets all changes to the "post_id" field. +func (m *UserMutation) ResetPostID() { + m.post = nil + delete(m.clearedFields, user.FieldPostID) +} + // ClearDepartment clears the "department" edge to the Department entity. func (m *UserMutation) ClearDepartment() { m.cleareddepartment = true @@ -9548,6 +10442,32 @@ func (m *UserMutation) ResetDepartment() { m.cleareddepartment = false } +// ClearPost clears the "post" edge to the Post entity. +func (m *UserMutation) ClearPost() { + m.clearedpost = true +} + +// PostCleared reports if the "post" edge to the Post entity was cleared. +func (m *UserMutation) PostCleared() bool { + return m.PostIDCleared() || m.clearedpost +} + +// PostIDs returns the "post" edge IDs in the mutation. +// Note that IDs always returns len(IDs) <= 1 for unique edges, and you should use +// PostID instead. It exists only for internal usage by the builders. +func (m *UserMutation) PostIDs() (ids []uint64) { + if id := m.post; id != nil { + ids = append(ids, *id) + } + return +} + +// ResetPost resets all changes to the "post" edge. +func (m *UserMutation) ResetPost() { + m.post = nil + m.clearedpost = false +} + // Where appends a list predicates to the UserMutation builder. func (m *UserMutation) Where(ps ...predicate.User) { m.predicates = append(m.predicates, ps...) @@ -9582,7 +10502,7 @@ func (m *UserMutation) Type() string { // order to get all numeric fields that were incremented/decremented, call // AddedFields(). func (m *UserMutation) Fields() []string { - fields := make([]string, 0, 13) + fields := make([]string, 0, 14) if m.created_at != nil { fields = append(fields, user.FieldCreatedAt) } @@ -9622,6 +10542,9 @@ func (m *UserMutation) Fields() []string { if m.department != nil { fields = append(fields, user.FieldDepartmentID) } + if m.post != nil { + fields = append(fields, user.FieldPostID) + } return fields } @@ -9656,6 +10579,8 @@ func (m *UserMutation) Field(name string) (ent.Value, bool) { return m.Avatar() case user.FieldDepartmentID: return m.DepartmentID() + case user.FieldPostID: + return m.PostID() } return nil, false } @@ -9691,6 +10616,8 @@ func (m *UserMutation) OldField(ctx context.Context, name string) (ent.Value, er return m.OldAvatar(ctx) case user.FieldDepartmentID: return m.OldDepartmentID(ctx) + case user.FieldPostID: + return m.OldPostID(ctx) } return nil, fmt.Errorf("unknown User field %s", name) } @@ -9791,6 +10718,13 @@ func (m *UserMutation) SetField(name string, value ent.Value) error { } m.SetDepartmentID(v) return nil + case user.FieldPostID: + v, ok := value.(uint64) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetPostID(v) + return nil } return fmt.Errorf("unknown User field %s", name) } @@ -9869,6 +10803,9 @@ func (m *UserMutation) ClearedFields() []string { if m.FieldCleared(user.FieldDepartmentID) { fields = append(fields, user.FieldDepartmentID) } + if m.FieldCleared(user.FieldPostID) { + fields = append(fields, user.FieldPostID) + } return fields } @@ -9904,6 +10841,9 @@ func (m *UserMutation) ClearField(name string) error { case user.FieldDepartmentID: m.ClearDepartmentID() return nil + case user.FieldPostID: + m.ClearPostID() + return nil } return fmt.Errorf("unknown User nullable field %s", name) } @@ -9951,16 +10891,22 @@ func (m *UserMutation) ResetField(name string) error { case user.FieldDepartmentID: m.ResetDepartmentID() return nil + case user.FieldPostID: + m.ResetPostID() + return nil } return fmt.Errorf("unknown User field %s", name) } // AddedEdges returns all edge names that were set/added in this mutation. func (m *UserMutation) AddedEdges() []string { - edges := make([]string, 0, 1) + edges := make([]string, 0, 2) if m.department != nil { edges = append(edges, user.EdgeDepartment) } + if m.post != nil { + edges = append(edges, user.EdgePost) + } return edges } @@ -9972,13 +10918,17 @@ func (m *UserMutation) AddedIDs(name string) []ent.Value { if id := m.department; id != nil { return []ent.Value{*id} } + case user.EdgePost: + if id := m.post; id != nil { + return []ent.Value{*id} + } } return nil } // RemovedEdges returns all edge names that were removed in this mutation. func (m *UserMutation) RemovedEdges() []string { - edges := make([]string, 0, 1) + edges := make([]string, 0, 2) return edges } @@ -9990,10 +10940,13 @@ func (m *UserMutation) RemovedIDs(name string) []ent.Value { // ClearedEdges returns all edge names that were cleared in this mutation. func (m *UserMutation) ClearedEdges() []string { - edges := make([]string, 0, 1) + edges := make([]string, 0, 2) if m.cleareddepartment { edges = append(edges, user.EdgeDepartment) } + if m.clearedpost { + edges = append(edges, user.EdgePost) + } return edges } @@ -10003,6 +10956,8 @@ func (m *UserMutation) EdgeCleared(name string) bool { switch name { case user.EdgeDepartment: return m.cleareddepartment + case user.EdgePost: + return m.clearedpost } return false } @@ -10014,6 +10969,9 @@ func (m *UserMutation) ClearEdge(name string) error { case user.EdgeDepartment: m.ClearDepartment() return nil + case user.EdgePost: + m.ClearPost() + return nil } return fmt.Errorf("unknown User unique edge %s", name) } @@ -10025,6 +10983,9 @@ func (m *UserMutation) ResetEdge(name string) error { case user.EdgeDepartment: m.ResetDepartment() return nil + case user.EdgePost: + m.ResetPost() + return nil } return fmt.Errorf("unknown User edge %s", name) } diff --git a/pkg/ent/pagination.go b/pkg/ent/pagination.go index ea096b77..a4be44df 100644 --- a/pkg/ent/pagination.go +++ b/pkg/ent/pagination.go @@ -13,6 +13,7 @@ import ( "github.com/suyuan32/simple-admin-core/pkg/ent/menu" "github.com/suyuan32/simple-admin-core/pkg/ent/menuparam" "github.com/suyuan32/simple-admin-core/pkg/ent/oauthprovider" + "github.com/suyuan32/simple-admin-core/pkg/ent/post" "github.com/suyuan32/simple-admin-core/pkg/ent/role" "github.com/suyuan32/simple-admin-core/pkg/ent/token" "github.com/suyuan32/simple-admin-core/pkg/ent/user" @@ -617,6 +618,85 @@ func (op *OauthProviderQuery) Page( return ret, nil } +type PostPager struct { + Order OrderFunc + Filter func(*PostQuery) (*PostQuery, error) +} + +// PostPaginateOption enables pagination customization. +type PostPaginateOption func(*PostPager) + +// DefaultPostOrder is the default ordering of Post. +var DefaultPostOrder = Asc(post.FieldID) + +func newPostPager(opts []PostPaginateOption) (*PostPager, error) { + pager := &PostPager{} + for _, opt := range opts { + opt(pager) + } + if pager.Order == nil { + pager.Order = DefaultPostOrder + } + return pager, nil +} + +func (p *PostPager) ApplyFilter(query *PostQuery) (*PostQuery, error) { + if p.Filter != nil { + return p.Filter(query) + } + return query, nil +} + +// PostPageList is Post PageList result. +type PostPageList struct { + List []*Post `json:"list"` + PageDetails *PageDetails `json:"pageDetails"` +} + +func (po *PostQuery) Page( + ctx context.Context, pageNum uint64, pageSize uint64, opts ...PostPaginateOption, +) (*PostPageList, error) { + + pager, err := newPostPager(opts) + if err != nil { + return nil, err + } + + if po, err = pager.ApplyFilter(po); err != nil { + return nil, err + } + + ret := &PostPageList{} + + ret.PageDetails = &PageDetails{ + Page: pageNum, + Size: pageSize, + } + + count, err := po.Clone().Count(ctx) + + if err != nil { + return nil, err + } + + ret.PageDetails.Total = uint64(count) + + if pager.Order != nil { + po = po.Order(pager.Order) + } else { + po = po.Order(DefaultPostOrder) + } + + po = po.Offset(int((pageNum - 1) * pageSize)).Limit(int(pageSize)) + list, err := po.All(ctx) + if err != nil { + return nil, err + } + ret.List = list + + return ret, nil +} + type RolePager struct { Order OrderFunc Filter func(*RoleQuery) (*RoleQuery, error) diff --git a/pkg/ent/post.go b/pkg/ent/post.go new file mode 100644 index 00000000..945ab3e9 --- /dev/null +++ b/pkg/ent/post.go @@ -0,0 +1,194 @@ +// Code generated by ent, DO NOT EDIT. + +package ent + +import ( + "fmt" + "strings" + "time" + + "entgo.io/ent/dialect/sql" + "github.com/suyuan32/simple-admin-core/pkg/ent/post" +) + +// Post is the model entity for the Post schema. +type Post struct { + config `json:"-"` + // ID of the ent. + ID uint64 `json:"id,omitempty"` + // CreatedAt holds the value of the "created_at" field. + CreatedAt time.Time `json:"created_at,omitempty"` + // UpdatedAt holds the value of the "updated_at" field. + UpdatedAt time.Time `json:"updated_at,omitempty"` + // status 1 normal 0 ban | 状态 1 正常 0 禁用 + Status uint8 `json:"status,omitempty"` + // Sort number | 排序编号 + Sort uint32 `json:"sort,omitempty"` + // Post Name | 岗位名称 + Name string `json:"name,omitempty"` + // The code of post | 岗位编码 + Code string `json:"code,omitempty"` + // Remark | 备注 + Remark string `json:"remark,omitempty"` + // Edges holds the relations/edges for other nodes in the graph. + // The values are being populated by the PostQuery when eager-loading is set. + Edges PostEdges `json:"edges"` +} + +// PostEdges holds the relations/edges for other nodes in the graph. +type PostEdges struct { + // User holds the value of the user edge. + User []*User `json:"user,omitempty"` + // loadedTypes holds the information for reporting if a + // type was loaded (or requested) in eager-loading or not. + loadedTypes [1]bool +} + +// UserOrErr returns the User value or an error if the edge +// was not loaded in eager-loading. +func (e PostEdges) UserOrErr() ([]*User, error) { + if e.loadedTypes[0] { + return e.User, nil + } + return nil, &NotLoadedError{edge: "user"} +} + +// scanValues returns the types for scanning values from sql.Rows. +func (*Post) scanValues(columns []string) ([]any, error) { + values := make([]any, len(columns)) + for i := range columns { + switch columns[i] { + case post.FieldID, post.FieldStatus, post.FieldSort: + values[i] = new(sql.NullInt64) + case post.FieldName, post.FieldCode, post.FieldRemark: + values[i] = new(sql.NullString) + case post.FieldCreatedAt, post.FieldUpdatedAt: + values[i] = new(sql.NullTime) + default: + return nil, fmt.Errorf("unexpected column %q for type Post", columns[i]) + } + } + return values, nil +} + +// assignValues assigns the values that were returned from sql.Rows (after scanning) +// to the Post fields. +func (po *Post) assignValues(columns []string, values []any) error { + if m, n := len(values), len(columns); m < n { + return fmt.Errorf("mismatch number of scan values: %d != %d", m, n) + } + for i := range columns { + switch columns[i] { + case post.FieldID: + value, ok := values[i].(*sql.NullInt64) + if !ok { + return fmt.Errorf("unexpected type %T for field id", value) + } + po.ID = uint64(value.Int64) + case post.FieldCreatedAt: + if value, ok := values[i].(*sql.NullTime); !ok { + return fmt.Errorf("unexpected type %T for field created_at", values[i]) + } else if value.Valid { + po.CreatedAt = value.Time + } + case post.FieldUpdatedAt: + if value, ok := values[i].(*sql.NullTime); !ok { + return fmt.Errorf("unexpected type %T for field updated_at", values[i]) + } else if value.Valid { + po.UpdatedAt = value.Time + } + case post.FieldStatus: + if value, ok := values[i].(*sql.NullInt64); !ok { + return fmt.Errorf("unexpected type %T for field status", values[i]) + } else if value.Valid { + po.Status = uint8(value.Int64) + } + case post.FieldSort: + if value, ok := values[i].(*sql.NullInt64); !ok { + return fmt.Errorf("unexpected type %T for field sort", values[i]) + } else if value.Valid { + po.Sort = uint32(value.Int64) + } + case post.FieldName: + if value, ok := values[i].(*sql.NullString); !ok { + return fmt.Errorf("unexpected type %T for field name", values[i]) + } else if value.Valid { + po.Name = value.String + } + case post.FieldCode: + if value, ok := values[i].(*sql.NullString); !ok { + return fmt.Errorf("unexpected type %T for field code", values[i]) + } else if value.Valid { + po.Code = value.String + } + case post.FieldRemark: + if value, ok := values[i].(*sql.NullString); !ok { + return fmt.Errorf("unexpected type %T for field remark", values[i]) + } else if value.Valid { + po.Remark = value.String + } + } + } + return nil +} + +// QueryUser queries the "user" edge of the Post entity. +func (po *Post) QueryUser() *UserQuery { + return NewPostClient(po.config).QueryUser(po) +} + +// Update returns a builder for updating this Post. +// Note that you need to call Post.Unwrap() before calling this method if this Post +// was returned from a transaction, and the transaction was committed or rolled back. +func (po *Post) Update() *PostUpdateOne { + return NewPostClient(po.config).UpdateOne(po) +} + +// Unwrap unwraps the Post entity that was returned from a transaction after it was closed, +// so that all future queries will be executed through the driver which created the transaction. +func (po *Post) Unwrap() *Post { + _tx, ok := po.config.driver.(*txDriver) + if !ok { + panic("ent: Post is not a transactional entity") + } + po.config.driver = _tx.drv + return po +} + +// String implements the fmt.Stringer. +func (po *Post) String() string { + var builder strings.Builder + builder.WriteString("Post(") + builder.WriteString(fmt.Sprintf("id=%v, ", po.ID)) + builder.WriteString("created_at=") + builder.WriteString(po.CreatedAt.Format(time.ANSIC)) + builder.WriteString(", ") + builder.WriteString("updated_at=") + builder.WriteString(po.UpdatedAt.Format(time.ANSIC)) + builder.WriteString(", ") + builder.WriteString("status=") + builder.WriteString(fmt.Sprintf("%v", po.Status)) + builder.WriteString(", ") + builder.WriteString("sort=") + builder.WriteString(fmt.Sprintf("%v", po.Sort)) + builder.WriteString(", ") + builder.WriteString("name=") + builder.WriteString(po.Name) + builder.WriteString(", ") + builder.WriteString("code=") + builder.WriteString(po.Code) + builder.WriteString(", ") + builder.WriteString("remark=") + builder.WriteString(po.Remark) + builder.WriteByte(')') + return builder.String() +} + +// Posts is a parsable slice of Post. +type Posts []*Post + +func (po Posts) config(cfg config) { + for _i := range po { + po[_i].config = cfg + } +} diff --git a/pkg/ent/post/post.go b/pkg/ent/post/post.go new file mode 100644 index 00000000..54b92433 --- /dev/null +++ b/pkg/ent/post/post.go @@ -0,0 +1,74 @@ +// Code generated by ent, DO NOT EDIT. + +package post + +import ( + "time" +) + +const ( + // Label holds the string label denoting the post type in the database. + Label = "post" + // FieldID holds the string denoting the id field in the database. + FieldID = "id" + // FieldCreatedAt holds the string denoting the created_at field in the database. + FieldCreatedAt = "created_at" + // FieldUpdatedAt holds the string denoting the updated_at field in the database. + FieldUpdatedAt = "updated_at" + // FieldStatus holds the string denoting the status field in the database. + FieldStatus = "status" + // FieldSort holds the string denoting the sort field in the database. + FieldSort = "sort" + // FieldName holds the string denoting the name field in the database. + FieldName = "name" + // FieldCode holds the string denoting the code field in the database. + FieldCode = "code" + // FieldRemark holds the string denoting the remark field in the database. + FieldRemark = "remark" + // EdgeUser holds the string denoting the user edge name in mutations. + EdgeUser = "user" + // Table holds the table name of the post in the database. + Table = "sys_posts" + // UserTable is the table that holds the user relation/edge. + UserTable = "sys_users" + // UserInverseTable is the table name for the User entity. + // It exists in this package in order to avoid circular dependency with the "user" package. + UserInverseTable = "sys_users" + // UserColumn is the table column denoting the user relation/edge. + UserColumn = "post_id" +) + +// Columns holds all SQL columns for post fields. +var Columns = []string{ + FieldID, + FieldCreatedAt, + FieldUpdatedAt, + FieldStatus, + FieldSort, + FieldName, + FieldCode, + FieldRemark, +} + +// ValidColumn reports if the column name is valid (part of the table columns). +func ValidColumn(column string) bool { + for i := range Columns { + if column == Columns[i] { + return true + } + } + return false +} + +var ( + // DefaultCreatedAt holds the default value on creation for the "created_at" field. + DefaultCreatedAt func() time.Time + // DefaultUpdatedAt holds the default value on creation for the "updated_at" field. + DefaultUpdatedAt func() time.Time + // UpdateDefaultUpdatedAt holds the default value on update for the "updated_at" field. + UpdateDefaultUpdatedAt func() time.Time + // DefaultStatus holds the default value on creation for the "status" field. + DefaultStatus uint8 + // DefaultSort holds the default value on creation for the "sort" field. + DefaultSort uint32 +) diff --git a/pkg/ent/post/where.go b/pkg/ent/post/where.go new file mode 100644 index 00000000..28a2fc95 --- /dev/null +++ b/pkg/ent/post/where.go @@ -0,0 +1,515 @@ +// Code generated by ent, DO NOT EDIT. + +package post + +import ( + "time" + + "entgo.io/ent/dialect/sql" + "entgo.io/ent/dialect/sql/sqlgraph" + "github.com/suyuan32/simple-admin-core/pkg/ent/predicate" +) + +// ID filters vertices based on their ID field. +func ID(id uint64) predicate.Post { + return predicate.Post(sql.FieldEQ(FieldID, id)) +} + +// IDEQ applies the EQ predicate on the ID field. +func IDEQ(id uint64) predicate.Post { + return predicate.Post(sql.FieldEQ(FieldID, id)) +} + +// IDNEQ applies the NEQ predicate on the ID field. +func IDNEQ(id uint64) predicate.Post { + return predicate.Post(sql.FieldNEQ(FieldID, id)) +} + +// IDIn applies the In predicate on the ID field. +func IDIn(ids ...uint64) predicate.Post { + return predicate.Post(sql.FieldIn(FieldID, ids...)) +} + +// IDNotIn applies the NotIn predicate on the ID field. +func IDNotIn(ids ...uint64) predicate.Post { + return predicate.Post(sql.FieldNotIn(FieldID, ids...)) +} + +// IDGT applies the GT predicate on the ID field. +func IDGT(id uint64) predicate.Post { + return predicate.Post(sql.FieldGT(FieldID, id)) +} + +// IDGTE applies the GTE predicate on the ID field. +func IDGTE(id uint64) predicate.Post { + return predicate.Post(sql.FieldGTE(FieldID, id)) +} + +// IDLT applies the LT predicate on the ID field. +func IDLT(id uint64) predicate.Post { + return predicate.Post(sql.FieldLT(FieldID, id)) +} + +// IDLTE applies the LTE predicate on the ID field. +func IDLTE(id uint64) predicate.Post { + return predicate.Post(sql.FieldLTE(FieldID, id)) +} + +// CreatedAt applies equality check predicate on the "created_at" field. It's identical to CreatedAtEQ. +func CreatedAt(v time.Time) predicate.Post { + return predicate.Post(sql.FieldEQ(FieldCreatedAt, v)) +} + +// UpdatedAt applies equality check predicate on the "updated_at" field. It's identical to UpdatedAtEQ. +func UpdatedAt(v time.Time) predicate.Post { + return predicate.Post(sql.FieldEQ(FieldUpdatedAt, v)) +} + +// Status applies equality check predicate on the "status" field. It's identical to StatusEQ. +func Status(v uint8) predicate.Post { + return predicate.Post(sql.FieldEQ(FieldStatus, v)) +} + +// Sort applies equality check predicate on the "sort" field. It's identical to SortEQ. +func Sort(v uint32) predicate.Post { + return predicate.Post(sql.FieldEQ(FieldSort, v)) +} + +// Name applies equality check predicate on the "name" field. It's identical to NameEQ. +func Name(v string) predicate.Post { + return predicate.Post(sql.FieldEQ(FieldName, v)) +} + +// Code applies equality check predicate on the "code" field. It's identical to CodeEQ. +func Code(v string) predicate.Post { + return predicate.Post(sql.FieldEQ(FieldCode, v)) +} + +// Remark applies equality check predicate on the "remark" field. It's identical to RemarkEQ. +func Remark(v string) predicate.Post { + return predicate.Post(sql.FieldEQ(FieldRemark, v)) +} + +// CreatedAtEQ applies the EQ predicate on the "created_at" field. +func CreatedAtEQ(v time.Time) predicate.Post { + return predicate.Post(sql.FieldEQ(FieldCreatedAt, v)) +} + +// CreatedAtNEQ applies the NEQ predicate on the "created_at" field. +func CreatedAtNEQ(v time.Time) predicate.Post { + return predicate.Post(sql.FieldNEQ(FieldCreatedAt, v)) +} + +// CreatedAtIn applies the In predicate on the "created_at" field. +func CreatedAtIn(vs ...time.Time) predicate.Post { + return predicate.Post(sql.FieldIn(FieldCreatedAt, vs...)) +} + +// CreatedAtNotIn applies the NotIn predicate on the "created_at" field. +func CreatedAtNotIn(vs ...time.Time) predicate.Post { + return predicate.Post(sql.FieldNotIn(FieldCreatedAt, vs...)) +} + +// CreatedAtGT applies the GT predicate on the "created_at" field. +func CreatedAtGT(v time.Time) predicate.Post { + return predicate.Post(sql.FieldGT(FieldCreatedAt, v)) +} + +// CreatedAtGTE applies the GTE predicate on the "created_at" field. +func CreatedAtGTE(v time.Time) predicate.Post { + return predicate.Post(sql.FieldGTE(FieldCreatedAt, v)) +} + +// CreatedAtLT applies the LT predicate on the "created_at" field. +func CreatedAtLT(v time.Time) predicate.Post { + return predicate.Post(sql.FieldLT(FieldCreatedAt, v)) +} + +// CreatedAtLTE applies the LTE predicate on the "created_at" field. +func CreatedAtLTE(v time.Time) predicate.Post { + return predicate.Post(sql.FieldLTE(FieldCreatedAt, v)) +} + +// UpdatedAtEQ applies the EQ predicate on the "updated_at" field. +func UpdatedAtEQ(v time.Time) predicate.Post { + return predicate.Post(sql.FieldEQ(FieldUpdatedAt, v)) +} + +// UpdatedAtNEQ applies the NEQ predicate on the "updated_at" field. +func UpdatedAtNEQ(v time.Time) predicate.Post { + return predicate.Post(sql.FieldNEQ(FieldUpdatedAt, v)) +} + +// UpdatedAtIn applies the In predicate on the "updated_at" field. +func UpdatedAtIn(vs ...time.Time) predicate.Post { + return predicate.Post(sql.FieldIn(FieldUpdatedAt, vs...)) +} + +// UpdatedAtNotIn applies the NotIn predicate on the "updated_at" field. +func UpdatedAtNotIn(vs ...time.Time) predicate.Post { + return predicate.Post(sql.FieldNotIn(FieldUpdatedAt, vs...)) +} + +// UpdatedAtGT applies the GT predicate on the "updated_at" field. +func UpdatedAtGT(v time.Time) predicate.Post { + return predicate.Post(sql.FieldGT(FieldUpdatedAt, v)) +} + +// UpdatedAtGTE applies the GTE predicate on the "updated_at" field. +func UpdatedAtGTE(v time.Time) predicate.Post { + return predicate.Post(sql.FieldGTE(FieldUpdatedAt, v)) +} + +// UpdatedAtLT applies the LT predicate on the "updated_at" field. +func UpdatedAtLT(v time.Time) predicate.Post { + return predicate.Post(sql.FieldLT(FieldUpdatedAt, v)) +} + +// UpdatedAtLTE applies the LTE predicate on the "updated_at" field. +func UpdatedAtLTE(v time.Time) predicate.Post { + return predicate.Post(sql.FieldLTE(FieldUpdatedAt, v)) +} + +// StatusEQ applies the EQ predicate on the "status" field. +func StatusEQ(v uint8) predicate.Post { + return predicate.Post(sql.FieldEQ(FieldStatus, v)) +} + +// StatusNEQ applies the NEQ predicate on the "status" field. +func StatusNEQ(v uint8) predicate.Post { + return predicate.Post(sql.FieldNEQ(FieldStatus, v)) +} + +// StatusIn applies the In predicate on the "status" field. +func StatusIn(vs ...uint8) predicate.Post { + return predicate.Post(sql.FieldIn(FieldStatus, vs...)) +} + +// StatusNotIn applies the NotIn predicate on the "status" field. +func StatusNotIn(vs ...uint8) predicate.Post { + return predicate.Post(sql.FieldNotIn(FieldStatus, vs...)) +} + +// StatusGT applies the GT predicate on the "status" field. +func StatusGT(v uint8) predicate.Post { + return predicate.Post(sql.FieldGT(FieldStatus, v)) +} + +// StatusGTE applies the GTE predicate on the "status" field. +func StatusGTE(v uint8) predicate.Post { + return predicate.Post(sql.FieldGTE(FieldStatus, v)) +} + +// StatusLT applies the LT predicate on the "status" field. +func StatusLT(v uint8) predicate.Post { + return predicate.Post(sql.FieldLT(FieldStatus, v)) +} + +// StatusLTE applies the LTE predicate on the "status" field. +func StatusLTE(v uint8) predicate.Post { + return predicate.Post(sql.FieldLTE(FieldStatus, v)) +} + +// StatusIsNil applies the IsNil predicate on the "status" field. +func StatusIsNil() predicate.Post { + return predicate.Post(sql.FieldIsNull(FieldStatus)) +} + +// StatusNotNil applies the NotNil predicate on the "status" field. +func StatusNotNil() predicate.Post { + return predicate.Post(sql.FieldNotNull(FieldStatus)) +} + +// SortEQ applies the EQ predicate on the "sort" field. +func SortEQ(v uint32) predicate.Post { + return predicate.Post(sql.FieldEQ(FieldSort, v)) +} + +// SortNEQ applies the NEQ predicate on the "sort" field. +func SortNEQ(v uint32) predicate.Post { + return predicate.Post(sql.FieldNEQ(FieldSort, v)) +} + +// SortIn applies the In predicate on the "sort" field. +func SortIn(vs ...uint32) predicate.Post { + return predicate.Post(sql.FieldIn(FieldSort, vs...)) +} + +// SortNotIn applies the NotIn predicate on the "sort" field. +func SortNotIn(vs ...uint32) predicate.Post { + return predicate.Post(sql.FieldNotIn(FieldSort, vs...)) +} + +// SortGT applies the GT predicate on the "sort" field. +func SortGT(v uint32) predicate.Post { + return predicate.Post(sql.FieldGT(FieldSort, v)) +} + +// SortGTE applies the GTE predicate on the "sort" field. +func SortGTE(v uint32) predicate.Post { + return predicate.Post(sql.FieldGTE(FieldSort, v)) +} + +// SortLT applies the LT predicate on the "sort" field. +func SortLT(v uint32) predicate.Post { + return predicate.Post(sql.FieldLT(FieldSort, v)) +} + +// SortLTE applies the LTE predicate on the "sort" field. +func SortLTE(v uint32) predicate.Post { + return predicate.Post(sql.FieldLTE(FieldSort, v)) +} + +// NameEQ applies the EQ predicate on the "name" field. +func NameEQ(v string) predicate.Post { + return predicate.Post(sql.FieldEQ(FieldName, v)) +} + +// NameNEQ applies the NEQ predicate on the "name" field. +func NameNEQ(v string) predicate.Post { + return predicate.Post(sql.FieldNEQ(FieldName, v)) +} + +// NameIn applies the In predicate on the "name" field. +func NameIn(vs ...string) predicate.Post { + return predicate.Post(sql.FieldIn(FieldName, vs...)) +} + +// NameNotIn applies the NotIn predicate on the "name" field. +func NameNotIn(vs ...string) predicate.Post { + return predicate.Post(sql.FieldNotIn(FieldName, vs...)) +} + +// NameGT applies the GT predicate on the "name" field. +func NameGT(v string) predicate.Post { + return predicate.Post(sql.FieldGT(FieldName, v)) +} + +// NameGTE applies the GTE predicate on the "name" field. +func NameGTE(v string) predicate.Post { + return predicate.Post(sql.FieldGTE(FieldName, v)) +} + +// NameLT applies the LT predicate on the "name" field. +func NameLT(v string) predicate.Post { + return predicate.Post(sql.FieldLT(FieldName, v)) +} + +// NameLTE applies the LTE predicate on the "name" field. +func NameLTE(v string) predicate.Post { + return predicate.Post(sql.FieldLTE(FieldName, v)) +} + +// NameContains applies the Contains predicate on the "name" field. +func NameContains(v string) predicate.Post { + return predicate.Post(sql.FieldContains(FieldName, v)) +} + +// NameHasPrefix applies the HasPrefix predicate on the "name" field. +func NameHasPrefix(v string) predicate.Post { + return predicate.Post(sql.FieldHasPrefix(FieldName, v)) +} + +// NameHasSuffix applies the HasSuffix predicate on the "name" field. +func NameHasSuffix(v string) predicate.Post { + return predicate.Post(sql.FieldHasSuffix(FieldName, v)) +} + +// NameEqualFold applies the EqualFold predicate on the "name" field. +func NameEqualFold(v string) predicate.Post { + return predicate.Post(sql.FieldEqualFold(FieldName, v)) +} + +// NameContainsFold applies the ContainsFold predicate on the "name" field. +func NameContainsFold(v string) predicate.Post { + return predicate.Post(sql.FieldContainsFold(FieldName, v)) +} + +// CodeEQ applies the EQ predicate on the "code" field. +func CodeEQ(v string) predicate.Post { + return predicate.Post(sql.FieldEQ(FieldCode, v)) +} + +// CodeNEQ applies the NEQ predicate on the "code" field. +func CodeNEQ(v string) predicate.Post { + return predicate.Post(sql.FieldNEQ(FieldCode, v)) +} + +// CodeIn applies the In predicate on the "code" field. +func CodeIn(vs ...string) predicate.Post { + return predicate.Post(sql.FieldIn(FieldCode, vs...)) +} + +// CodeNotIn applies the NotIn predicate on the "code" field. +func CodeNotIn(vs ...string) predicate.Post { + return predicate.Post(sql.FieldNotIn(FieldCode, vs...)) +} + +// CodeGT applies the GT predicate on the "code" field. +func CodeGT(v string) predicate.Post { + return predicate.Post(sql.FieldGT(FieldCode, v)) +} + +// CodeGTE applies the GTE predicate on the "code" field. +func CodeGTE(v string) predicate.Post { + return predicate.Post(sql.FieldGTE(FieldCode, v)) +} + +// CodeLT applies the LT predicate on the "code" field. +func CodeLT(v string) predicate.Post { + return predicate.Post(sql.FieldLT(FieldCode, v)) +} + +// CodeLTE applies the LTE predicate on the "code" field. +func CodeLTE(v string) predicate.Post { + return predicate.Post(sql.FieldLTE(FieldCode, v)) +} + +// CodeContains applies the Contains predicate on the "code" field. +func CodeContains(v string) predicate.Post { + return predicate.Post(sql.FieldContains(FieldCode, v)) +} + +// CodeHasPrefix applies the HasPrefix predicate on the "code" field. +func CodeHasPrefix(v string) predicate.Post { + return predicate.Post(sql.FieldHasPrefix(FieldCode, v)) +} + +// CodeHasSuffix applies the HasSuffix predicate on the "code" field. +func CodeHasSuffix(v string) predicate.Post { + return predicate.Post(sql.FieldHasSuffix(FieldCode, v)) +} + +// CodeEqualFold applies the EqualFold predicate on the "code" field. +func CodeEqualFold(v string) predicate.Post { + return predicate.Post(sql.FieldEqualFold(FieldCode, v)) +} + +// CodeContainsFold applies the ContainsFold predicate on the "code" field. +func CodeContainsFold(v string) predicate.Post { + return predicate.Post(sql.FieldContainsFold(FieldCode, v)) +} + +// RemarkEQ applies the EQ predicate on the "remark" field. +func RemarkEQ(v string) predicate.Post { + return predicate.Post(sql.FieldEQ(FieldRemark, v)) +} + +// RemarkNEQ applies the NEQ predicate on the "remark" field. +func RemarkNEQ(v string) predicate.Post { + return predicate.Post(sql.FieldNEQ(FieldRemark, v)) +} + +// RemarkIn applies the In predicate on the "remark" field. +func RemarkIn(vs ...string) predicate.Post { + return predicate.Post(sql.FieldIn(FieldRemark, vs...)) +} + +// RemarkNotIn applies the NotIn predicate on the "remark" field. +func RemarkNotIn(vs ...string) predicate.Post { + return predicate.Post(sql.FieldNotIn(FieldRemark, vs...)) +} + +// RemarkGT applies the GT predicate on the "remark" field. +func RemarkGT(v string) predicate.Post { + return predicate.Post(sql.FieldGT(FieldRemark, v)) +} + +// RemarkGTE applies the GTE predicate on the "remark" field. +func RemarkGTE(v string) predicate.Post { + return predicate.Post(sql.FieldGTE(FieldRemark, v)) +} + +// RemarkLT applies the LT predicate on the "remark" field. +func RemarkLT(v string) predicate.Post { + return predicate.Post(sql.FieldLT(FieldRemark, v)) +} + +// RemarkLTE applies the LTE predicate on the "remark" field. +func RemarkLTE(v string) predicate.Post { + return predicate.Post(sql.FieldLTE(FieldRemark, v)) +} + +// RemarkContains applies the Contains predicate on the "remark" field. +func RemarkContains(v string) predicate.Post { + return predicate.Post(sql.FieldContains(FieldRemark, v)) +} + +// RemarkHasPrefix applies the HasPrefix predicate on the "remark" field. +func RemarkHasPrefix(v string) predicate.Post { + return predicate.Post(sql.FieldHasPrefix(FieldRemark, v)) +} + +// RemarkHasSuffix applies the HasSuffix predicate on the "remark" field. +func RemarkHasSuffix(v string) predicate.Post { + return predicate.Post(sql.FieldHasSuffix(FieldRemark, v)) +} + +// RemarkEqualFold applies the EqualFold predicate on the "remark" field. +func RemarkEqualFold(v string) predicate.Post { + return predicate.Post(sql.FieldEqualFold(FieldRemark, v)) +} + +// RemarkContainsFold applies the ContainsFold predicate on the "remark" field. +func RemarkContainsFold(v string) predicate.Post { + return predicate.Post(sql.FieldContainsFold(FieldRemark, v)) +} + +// HasUser applies the HasEdge predicate on the "user" edge. +func HasUser() predicate.Post { + return predicate.Post(func(s *sql.Selector) { + step := sqlgraph.NewStep( + sqlgraph.From(Table, FieldID), + sqlgraph.Edge(sqlgraph.O2M, true, UserTable, UserColumn), + ) + sqlgraph.HasNeighbors(s, step) + }) +} + +// HasUserWith applies the HasEdge predicate on the "user" edge with a given conditions (other predicates). +func HasUserWith(preds ...predicate.User) predicate.Post { + return predicate.Post(func(s *sql.Selector) { + step := sqlgraph.NewStep( + sqlgraph.From(Table, FieldID), + sqlgraph.To(UserInverseTable, FieldID), + sqlgraph.Edge(sqlgraph.O2M, true, UserTable, UserColumn), + ) + sqlgraph.HasNeighborsWith(s, step, func(s *sql.Selector) { + for _, p := range preds { + p(s) + } + }) + }) +} + +// And groups predicates with the AND operator between them. +func And(predicates ...predicate.Post) predicate.Post { + return predicate.Post(func(s *sql.Selector) { + s1 := s.Clone().SetP(nil) + for _, p := range predicates { + p(s1) + } + s.Where(s1.P()) + }) +} + +// Or groups predicates with the OR operator between them. +func Or(predicates ...predicate.Post) predicate.Post { + return predicate.Post(func(s *sql.Selector) { + s1 := s.Clone().SetP(nil) + for i, p := range predicates { + if i > 0 { + s1.Or() + } + p(s1) + } + s.Where(s1.P()) + }) +} + +// Not applies the not operator on the given predicate. +func Not(p predicate.Post) predicate.Post { + return predicate.Post(func(s *sql.Selector) { + p(s.Not()) + }) +} diff --git a/pkg/ent/post_create.go b/pkg/ent/post_create.go new file mode 100644 index 00000000..b8feda4c --- /dev/null +++ b/pkg/ent/post_create.go @@ -0,0 +1,363 @@ +// Code generated by ent, DO NOT EDIT. + +package ent + +import ( + "context" + "errors" + "fmt" + "time" + + "entgo.io/ent/dialect/sql/sqlgraph" + "entgo.io/ent/schema/field" + "github.com/gofrs/uuid" + "github.com/suyuan32/simple-admin-core/pkg/ent/post" + "github.com/suyuan32/simple-admin-core/pkg/ent/user" +) + +// PostCreate is the builder for creating a Post entity. +type PostCreate struct { + config + mutation *PostMutation + hooks []Hook +} + +// SetCreatedAt sets the "created_at" field. +func (pc *PostCreate) SetCreatedAt(t time.Time) *PostCreate { + pc.mutation.SetCreatedAt(t) + return pc +} + +// SetNillableCreatedAt sets the "created_at" field if the given value is not nil. +func (pc *PostCreate) SetNillableCreatedAt(t *time.Time) *PostCreate { + if t != nil { + pc.SetCreatedAt(*t) + } + return pc +} + +// SetUpdatedAt sets the "updated_at" field. +func (pc *PostCreate) SetUpdatedAt(t time.Time) *PostCreate { + pc.mutation.SetUpdatedAt(t) + return pc +} + +// SetNillableUpdatedAt sets the "updated_at" field if the given value is not nil. +func (pc *PostCreate) SetNillableUpdatedAt(t *time.Time) *PostCreate { + if t != nil { + pc.SetUpdatedAt(*t) + } + return pc +} + +// SetStatus sets the "status" field. +func (pc *PostCreate) SetStatus(u uint8) *PostCreate { + pc.mutation.SetStatus(u) + return pc +} + +// SetNillableStatus sets the "status" field if the given value is not nil. +func (pc *PostCreate) SetNillableStatus(u *uint8) *PostCreate { + if u != nil { + pc.SetStatus(*u) + } + return pc +} + +// SetSort sets the "sort" field. +func (pc *PostCreate) SetSort(u uint32) *PostCreate { + pc.mutation.SetSort(u) + return pc +} + +// SetNillableSort sets the "sort" field if the given value is not nil. +func (pc *PostCreate) SetNillableSort(u *uint32) *PostCreate { + if u != nil { + pc.SetSort(*u) + } + return pc +} + +// SetName sets the "name" field. +func (pc *PostCreate) SetName(s string) *PostCreate { + pc.mutation.SetName(s) + return pc +} + +// SetCode sets the "code" field. +func (pc *PostCreate) SetCode(s string) *PostCreate { + pc.mutation.SetCode(s) + return pc +} + +// SetRemark sets the "remark" field. +func (pc *PostCreate) SetRemark(s string) *PostCreate { + pc.mutation.SetRemark(s) + return pc +} + +// SetID sets the "id" field. +func (pc *PostCreate) SetID(u uint64) *PostCreate { + pc.mutation.SetID(u) + return pc +} + +// AddUserIDs adds the "user" edge to the User entity by IDs. +func (pc *PostCreate) AddUserIDs(ids ...uuid.UUID) *PostCreate { + pc.mutation.AddUserIDs(ids...) + return pc +} + +// AddUser adds the "user" edges to the User entity. +func (pc *PostCreate) AddUser(u ...*User) *PostCreate { + ids := make([]uuid.UUID, len(u)) + for i := range u { + ids[i] = u[i].ID + } + return pc.AddUserIDs(ids...) +} + +// Mutation returns the PostMutation object of the builder. +func (pc *PostCreate) Mutation() *PostMutation { + return pc.mutation +} + +// Save creates the Post in the database. +func (pc *PostCreate) Save(ctx context.Context) (*Post, error) { + pc.defaults() + return withHooks[*Post, PostMutation](ctx, pc.sqlSave, pc.mutation, pc.hooks) +} + +// SaveX calls Save and panics if Save returns an error. +func (pc *PostCreate) SaveX(ctx context.Context) *Post { + v, err := pc.Save(ctx) + if err != nil { + panic(err) + } + return v +} + +// Exec executes the query. +func (pc *PostCreate) Exec(ctx context.Context) error { + _, err := pc.Save(ctx) + return err +} + +// ExecX is like Exec, but panics if an error occurs. +func (pc *PostCreate) ExecX(ctx context.Context) { + if err := pc.Exec(ctx); err != nil { + panic(err) + } +} + +// defaults sets the default values of the builder before save. +func (pc *PostCreate) defaults() { + if _, ok := pc.mutation.CreatedAt(); !ok { + v := post.DefaultCreatedAt() + pc.mutation.SetCreatedAt(v) + } + if _, ok := pc.mutation.UpdatedAt(); !ok { + v := post.DefaultUpdatedAt() + pc.mutation.SetUpdatedAt(v) + } + if _, ok := pc.mutation.Status(); !ok { + v := post.DefaultStatus + pc.mutation.SetStatus(v) + } + if _, ok := pc.mutation.Sort(); !ok { + v := post.DefaultSort + pc.mutation.SetSort(v) + } +} + +// check runs all checks and user-defined validators on the builder. +func (pc *PostCreate) check() error { + if _, ok := pc.mutation.CreatedAt(); !ok { + return &ValidationError{Name: "created_at", err: errors.New(`ent: missing required field "Post.created_at"`)} + } + if _, ok := pc.mutation.UpdatedAt(); !ok { + return &ValidationError{Name: "updated_at", err: errors.New(`ent: missing required field "Post.updated_at"`)} + } + if _, ok := pc.mutation.Sort(); !ok { + return &ValidationError{Name: "sort", err: errors.New(`ent: missing required field "Post.sort"`)} + } + if _, ok := pc.mutation.Name(); !ok { + return &ValidationError{Name: "name", err: errors.New(`ent: missing required field "Post.name"`)} + } + if _, ok := pc.mutation.Code(); !ok { + return &ValidationError{Name: "code", err: errors.New(`ent: missing required field "Post.code"`)} + } + if _, ok := pc.mutation.Remark(); !ok { + return &ValidationError{Name: "remark", err: errors.New(`ent: missing required field "Post.remark"`)} + } + return nil +} + +func (pc *PostCreate) sqlSave(ctx context.Context) (*Post, error) { + if err := pc.check(); err != nil { + return nil, err + } + _node, _spec := pc.createSpec() + if err := sqlgraph.CreateNode(ctx, pc.driver, _spec); err != nil { + if sqlgraph.IsConstraintError(err) { + err = &ConstraintError{msg: err.Error(), wrap: err} + } + return nil, err + } + if _spec.ID.Value != _node.ID { + id := _spec.ID.Value.(int64) + _node.ID = uint64(id) + } + pc.mutation.id = &_node.ID + pc.mutation.done = true + return _node, nil +} + +func (pc *PostCreate) createSpec() (*Post, *sqlgraph.CreateSpec) { + var ( + _node = &Post{config: pc.config} + _spec = &sqlgraph.CreateSpec{ + Table: post.Table, + ID: &sqlgraph.FieldSpec{ + Type: field.TypeUint64, + Column: post.FieldID, + }, + } + ) + if id, ok := pc.mutation.ID(); ok { + _node.ID = id + _spec.ID.Value = id + } + if value, ok := pc.mutation.CreatedAt(); ok { + _spec.SetField(post.FieldCreatedAt, field.TypeTime, value) + _node.CreatedAt = value + } + if value, ok := pc.mutation.UpdatedAt(); ok { + _spec.SetField(post.FieldUpdatedAt, field.TypeTime, value) + _node.UpdatedAt = value + } + if value, ok := pc.mutation.Status(); ok { + _spec.SetField(post.FieldStatus, field.TypeUint8, value) + _node.Status = value + } + if value, ok := pc.mutation.Sort(); ok { + _spec.SetField(post.FieldSort, field.TypeUint32, value) + _node.Sort = value + } + if value, ok := pc.mutation.Name(); ok { + _spec.SetField(post.FieldName, field.TypeString, value) + _node.Name = value + } + if value, ok := pc.mutation.Code(); ok { + _spec.SetField(post.FieldCode, field.TypeString, value) + _node.Code = value + } + if value, ok := pc.mutation.Remark(); ok { + _spec.SetField(post.FieldRemark, field.TypeString, value) + _node.Remark = value + } + if nodes := pc.mutation.UserIDs(); len(nodes) > 0 { + edge := &sqlgraph.EdgeSpec{ + Rel: sqlgraph.O2M, + Inverse: true, + Table: post.UserTable, + Columns: []string{post.UserColumn}, + Bidi: false, + Target: &sqlgraph.EdgeTarget{ + IDSpec: &sqlgraph.FieldSpec{ + Type: field.TypeUUID, + Column: user.FieldID, + }, + }, + } + for _, k := range nodes { + edge.Target.Nodes = append(edge.Target.Nodes, k) + } + _spec.Edges = append(_spec.Edges, edge) + } + return _node, _spec +} + +// PostCreateBulk is the builder for creating many Post entities in bulk. +type PostCreateBulk struct { + config + builders []*PostCreate +} + +// Save creates the Post entities in the database. +func (pcb *PostCreateBulk) Save(ctx context.Context) ([]*Post, error) { + specs := make([]*sqlgraph.CreateSpec, len(pcb.builders)) + nodes := make([]*Post, len(pcb.builders)) + mutators := make([]Mutator, len(pcb.builders)) + for i := range pcb.builders { + func(i int, root context.Context) { + builder := pcb.builders[i] + builder.defaults() + var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { + mutation, ok := m.(*PostMutation) + if !ok { + return nil, fmt.Errorf("unexpected mutation type %T", m) + } + if err := builder.check(); err != nil { + return nil, err + } + builder.mutation = mutation + nodes[i], specs[i] = builder.createSpec() + var err error + if i < len(mutators)-1 { + _, err = mutators[i+1].Mutate(root, pcb.builders[i+1].mutation) + } else { + spec := &sqlgraph.BatchCreateSpec{Nodes: specs} + // Invoke the actual operation on the latest mutation in the chain. + if err = sqlgraph.BatchCreate(ctx, pcb.driver, spec); err != nil { + if sqlgraph.IsConstraintError(err) { + err = &ConstraintError{msg: err.Error(), wrap: err} + } + } + } + if err != nil { + return nil, err + } + mutation.id = &nodes[i].ID + if specs[i].ID.Value != nil && nodes[i].ID == 0 { + id := specs[i].ID.Value.(int64) + nodes[i].ID = uint64(id) + } + mutation.done = true + return nodes[i], nil + }) + for i := len(builder.hooks) - 1; i >= 0; i-- { + mut = builder.hooks[i](mut) + } + mutators[i] = mut + }(i, ctx) + } + if len(mutators) > 0 { + if _, err := mutators[0].Mutate(ctx, pcb.builders[0].mutation); err != nil { + return nil, err + } + } + return nodes, nil +} + +// SaveX is like Save, but panics if an error occurs. +func (pcb *PostCreateBulk) SaveX(ctx context.Context) []*Post { + v, err := pcb.Save(ctx) + if err != nil { + panic(err) + } + return v +} + +// Exec executes the query. +func (pcb *PostCreateBulk) Exec(ctx context.Context) error { + _, err := pcb.Save(ctx) + return err +} + +// ExecX is like Exec, but panics if an error occurs. +func (pcb *PostCreateBulk) ExecX(ctx context.Context) { + if err := pcb.Exec(ctx); err != nil { + panic(err) + } +} diff --git a/pkg/ent/post_delete.go b/pkg/ent/post_delete.go new file mode 100644 index 00000000..61f24ff3 --- /dev/null +++ b/pkg/ent/post_delete.go @@ -0,0 +1,96 @@ +// Code generated by ent, DO NOT EDIT. + +package ent + +import ( + "context" + + "entgo.io/ent/dialect/sql" + "entgo.io/ent/dialect/sql/sqlgraph" + "entgo.io/ent/schema/field" + "github.com/suyuan32/simple-admin-core/pkg/ent/post" + "github.com/suyuan32/simple-admin-core/pkg/ent/predicate" +) + +// PostDelete is the builder for deleting a Post entity. +type PostDelete struct { + config + hooks []Hook + mutation *PostMutation +} + +// Where appends a list predicates to the PostDelete builder. +func (pd *PostDelete) Where(ps ...predicate.Post) *PostDelete { + pd.mutation.Where(ps...) + return pd +} + +// Exec executes the deletion query and returns how many vertices were deleted. +func (pd *PostDelete) Exec(ctx context.Context) (int, error) { + return withHooks[int, PostMutation](ctx, pd.sqlExec, pd.mutation, pd.hooks) +} + +// ExecX is like Exec, but panics if an error occurs. +func (pd *PostDelete) ExecX(ctx context.Context) int { + n, err := pd.Exec(ctx) + if err != nil { + panic(err) + } + return n +} + +func (pd *PostDelete) sqlExec(ctx context.Context) (int, error) { + _spec := &sqlgraph.DeleteSpec{ + Node: &sqlgraph.NodeSpec{ + Table: post.Table, + ID: &sqlgraph.FieldSpec{ + Type: field.TypeUint64, + Column: post.FieldID, + }, + }, + } + if ps := pd.mutation.predicates; len(ps) > 0 { + _spec.Predicate = func(selector *sql.Selector) { + for i := range ps { + ps[i](selector) + } + } + } + affected, err := sqlgraph.DeleteNodes(ctx, pd.driver, _spec) + if err != nil && sqlgraph.IsConstraintError(err) { + err = &ConstraintError{msg: err.Error(), wrap: err} + } + pd.mutation.done = true + return affected, err +} + +// PostDeleteOne is the builder for deleting a single Post entity. +type PostDeleteOne struct { + pd *PostDelete +} + +// Where appends a list predicates to the PostDelete builder. +func (pdo *PostDeleteOne) Where(ps ...predicate.Post) *PostDeleteOne { + pdo.pd.mutation.Where(ps...) + return pdo +} + +// Exec executes the deletion query. +func (pdo *PostDeleteOne) Exec(ctx context.Context) error { + n, err := pdo.pd.Exec(ctx) + switch { + case err != nil: + return err + case n == 0: + return &NotFoundError{post.Label} + default: + return nil + } +} + +// ExecX is like Exec, but panics if an error occurs. +func (pdo *PostDeleteOne) ExecX(ctx context.Context) { + if err := pdo.Exec(ctx); err != nil { + panic(err) + } +} diff --git a/pkg/ent/post_query.go b/pkg/ent/post_query.go new file mode 100644 index 00000000..c6d39f66 --- /dev/null +++ b/pkg/ent/post_query.go @@ -0,0 +1,608 @@ +// Code generated by ent, DO NOT EDIT. + +package ent + +import ( + "context" + "database/sql/driver" + "fmt" + "math" + + "entgo.io/ent/dialect/sql" + "entgo.io/ent/dialect/sql/sqlgraph" + "entgo.io/ent/schema/field" + "github.com/suyuan32/simple-admin-core/pkg/ent/post" + "github.com/suyuan32/simple-admin-core/pkg/ent/predicate" + "github.com/suyuan32/simple-admin-core/pkg/ent/user" +) + +// PostQuery is the builder for querying Post entities. +type PostQuery struct { + config + ctx *QueryContext + order []OrderFunc + inters []Interceptor + predicates []predicate.Post + withUser *UserQuery + // intermediate query (i.e. traversal path). + sql *sql.Selector + path func(context.Context) (*sql.Selector, error) +} + +// Where adds a new predicate for the PostQuery builder. +func (pq *PostQuery) Where(ps ...predicate.Post) *PostQuery { + pq.predicates = append(pq.predicates, ps...) + return pq +} + +// Limit the number of records to be returned by this query. +func (pq *PostQuery) Limit(limit int) *PostQuery { + pq.ctx.Limit = &limit + return pq +} + +// Offset to start from. +func (pq *PostQuery) Offset(offset int) *PostQuery { + pq.ctx.Offset = &offset + return pq +} + +// Unique configures the query builder to filter duplicate records on query. +// By default, unique is set to true, and can be disabled using this method. +func (pq *PostQuery) Unique(unique bool) *PostQuery { + pq.ctx.Unique = &unique + return pq +} + +// Order specifies how the records should be ordered. +func (pq *PostQuery) Order(o ...OrderFunc) *PostQuery { + pq.order = append(pq.order, o...) + return pq +} + +// QueryUser chains the current query on the "user" edge. +func (pq *PostQuery) QueryUser() *UserQuery { + query := (&UserClient{config: pq.config}).Query() + query.path = func(ctx context.Context) (fromU *sql.Selector, err error) { + if err := pq.prepareQuery(ctx); err != nil { + return nil, err + } + selector := pq.sqlQuery(ctx) + if err := selector.Err(); err != nil { + return nil, err + } + step := sqlgraph.NewStep( + sqlgraph.From(post.Table, post.FieldID, selector), + sqlgraph.To(user.Table, user.FieldID), + sqlgraph.Edge(sqlgraph.O2M, true, post.UserTable, post.UserColumn), + ) + fromU = sqlgraph.SetNeighbors(pq.driver.Dialect(), step) + return fromU, nil + } + return query +} + +// First returns the first Post entity from the query. +// Returns a *NotFoundError when no Post was found. +func (pq *PostQuery) First(ctx context.Context) (*Post, error) { + nodes, err := pq.Limit(1).All(setContextOp(ctx, pq.ctx, "First")) + if err != nil { + return nil, err + } + if len(nodes) == 0 { + return nil, &NotFoundError{post.Label} + } + return nodes[0], nil +} + +// FirstX is like First, but panics if an error occurs. +func (pq *PostQuery) FirstX(ctx context.Context) *Post { + node, err := pq.First(ctx) + if err != nil && !IsNotFound(err) { + panic(err) + } + return node +} + +// FirstID returns the first Post ID from the query. +// Returns a *NotFoundError when no Post ID was found. +func (pq *PostQuery) FirstID(ctx context.Context) (id uint64, err error) { + var ids []uint64 + if ids, err = pq.Limit(1).IDs(setContextOp(ctx, pq.ctx, "FirstID")); err != nil { + return + } + if len(ids) == 0 { + err = &NotFoundError{post.Label} + return + } + return ids[0], nil +} + +// FirstIDX is like FirstID, but panics if an error occurs. +func (pq *PostQuery) FirstIDX(ctx context.Context) uint64 { + id, err := pq.FirstID(ctx) + if err != nil && !IsNotFound(err) { + panic(err) + } + return id +} + +// Only returns a single Post entity found by the query, ensuring it only returns one. +// Returns a *NotSingularError when more than one Post entity is found. +// Returns a *NotFoundError when no Post entities are found. +func (pq *PostQuery) Only(ctx context.Context) (*Post, error) { + nodes, err := pq.Limit(2).All(setContextOp(ctx, pq.ctx, "Only")) + if err != nil { + return nil, err + } + switch len(nodes) { + case 1: + return nodes[0], nil + case 0: + return nil, &NotFoundError{post.Label} + default: + return nil, &NotSingularError{post.Label} + } +} + +// OnlyX is like Only, but panics if an error occurs. +func (pq *PostQuery) OnlyX(ctx context.Context) *Post { + node, err := pq.Only(ctx) + if err != nil { + panic(err) + } + return node +} + +// OnlyID is like Only, but returns the only Post ID in the query. +// Returns a *NotSingularError when more than one Post ID is found. +// Returns a *NotFoundError when no entities are found. +func (pq *PostQuery) OnlyID(ctx context.Context) (id uint64, err error) { + var ids []uint64 + if ids, err = pq.Limit(2).IDs(setContextOp(ctx, pq.ctx, "OnlyID")); err != nil { + return + } + switch len(ids) { + case 1: + id = ids[0] + case 0: + err = &NotFoundError{post.Label} + default: + err = &NotSingularError{post.Label} + } + return +} + +// OnlyIDX is like OnlyID, but panics if an error occurs. +func (pq *PostQuery) OnlyIDX(ctx context.Context) uint64 { + id, err := pq.OnlyID(ctx) + if err != nil { + panic(err) + } + return id +} + +// All executes the query and returns a list of Posts. +func (pq *PostQuery) All(ctx context.Context) ([]*Post, error) { + ctx = setContextOp(ctx, pq.ctx, "All") + if err := pq.prepareQuery(ctx); err != nil { + return nil, err + } + qr := querierAll[[]*Post, *PostQuery]() + return withInterceptors[[]*Post](ctx, pq, qr, pq.inters) +} + +// AllX is like All, but panics if an error occurs. +func (pq *PostQuery) AllX(ctx context.Context) []*Post { + nodes, err := pq.All(ctx) + if err != nil { + panic(err) + } + return nodes +} + +// IDs executes the query and returns a list of Post IDs. +func (pq *PostQuery) IDs(ctx context.Context) ([]uint64, error) { + var ids []uint64 + ctx = setContextOp(ctx, pq.ctx, "IDs") + if err := pq.Select(post.FieldID).Scan(ctx, &ids); err != nil { + return nil, err + } + return ids, nil +} + +// IDsX is like IDs, but panics if an error occurs. +func (pq *PostQuery) IDsX(ctx context.Context) []uint64 { + ids, err := pq.IDs(ctx) + if err != nil { + panic(err) + } + return ids +} + +// Count returns the count of the given query. +func (pq *PostQuery) Count(ctx context.Context) (int, error) { + ctx = setContextOp(ctx, pq.ctx, "Count") + if err := pq.prepareQuery(ctx); err != nil { + return 0, err + } + return withInterceptors[int](ctx, pq, querierCount[*PostQuery](), pq.inters) +} + +// CountX is like Count, but panics if an error occurs. +func (pq *PostQuery) CountX(ctx context.Context) int { + count, err := pq.Count(ctx) + if err != nil { + panic(err) + } + return count +} + +// Exist returns true if the query has elements in the graph. +func (pq *PostQuery) Exist(ctx context.Context) (bool, error) { + ctx = setContextOp(ctx, pq.ctx, "Exist") + switch _, err := pq.FirstID(ctx); { + case IsNotFound(err): + return false, nil + case err != nil: + return false, fmt.Errorf("ent: check existence: %w", err) + default: + return true, nil + } +} + +// ExistX is like Exist, but panics if an error occurs. +func (pq *PostQuery) ExistX(ctx context.Context) bool { + exist, err := pq.Exist(ctx) + if err != nil { + panic(err) + } + return exist +} + +// Clone returns a duplicate of the PostQuery builder, including all associated steps. It can be +// used to prepare common query builders and use them differently after the clone is made. +func (pq *PostQuery) Clone() *PostQuery { + if pq == nil { + return nil + } + return &PostQuery{ + config: pq.config, + ctx: pq.ctx.Clone(), + order: append([]OrderFunc{}, pq.order...), + inters: append([]Interceptor{}, pq.inters...), + predicates: append([]predicate.Post{}, pq.predicates...), + withUser: pq.withUser.Clone(), + // clone intermediate query. + sql: pq.sql.Clone(), + path: pq.path, + } +} + +// WithUser tells the query-builder to eager-load the nodes that are connected to +// the "user" edge. The optional arguments are used to configure the query builder of the edge. +func (pq *PostQuery) WithUser(opts ...func(*UserQuery)) *PostQuery { + query := (&UserClient{config: pq.config}).Query() + for _, opt := range opts { + opt(query) + } + pq.withUser = query + return pq +} + +// GroupBy is used to group vertices by one or more fields/columns. +// It is often used with aggregate functions, like: count, max, mean, min, sum. +// +// Example: +// +// var v []struct { +// CreatedAt time.Time `json:"created_at,omitempty"` +// Count int `json:"count,omitempty"` +// } +// +// client.Post.Query(). +// GroupBy(post.FieldCreatedAt). +// Aggregate(ent.Count()). +// Scan(ctx, &v) +func (pq *PostQuery) GroupBy(field string, fields ...string) *PostGroupBy { + pq.ctx.Fields = append([]string{field}, fields...) + grbuild := &PostGroupBy{build: pq} + grbuild.flds = &pq.ctx.Fields + grbuild.label = post.Label + grbuild.scan = grbuild.Scan + return grbuild +} + +// Select allows the selection one or more fields/columns for the given query, +// instead of selecting all fields in the entity. +// +// Example: +// +// var v []struct { +// CreatedAt time.Time `json:"created_at,omitempty"` +// } +// +// client.Post.Query(). +// Select(post.FieldCreatedAt). +// Scan(ctx, &v) +func (pq *PostQuery) Select(fields ...string) *PostSelect { + pq.ctx.Fields = append(pq.ctx.Fields, fields...) + sbuild := &PostSelect{PostQuery: pq} + sbuild.label = post.Label + sbuild.flds, sbuild.scan = &pq.ctx.Fields, sbuild.Scan + return sbuild +} + +// Aggregate returns a PostSelect configured with the given aggregations. +func (pq *PostQuery) Aggregate(fns ...AggregateFunc) *PostSelect { + return pq.Select().Aggregate(fns...) +} + +func (pq *PostQuery) prepareQuery(ctx context.Context) error { + for _, inter := range pq.inters { + if inter == nil { + return fmt.Errorf("ent: uninitialized interceptor (forgotten import ent/runtime?)") + } + if trv, ok := inter.(Traverser); ok { + if err := trv.Traverse(ctx, pq); err != nil { + return err + } + } + } + for _, f := range pq.ctx.Fields { + if !post.ValidColumn(f) { + return &ValidationError{Name: f, err: fmt.Errorf("ent: invalid field %q for query", f)} + } + } + if pq.path != nil { + prev, err := pq.path(ctx) + if err != nil { + return err + } + pq.sql = prev + } + return nil +} + +func (pq *PostQuery) sqlAll(ctx context.Context, hooks ...queryHook) ([]*Post, error) { + var ( + nodes = []*Post{} + _spec = pq.querySpec() + loadedTypes = [1]bool{ + pq.withUser != nil, + } + ) + _spec.ScanValues = func(columns []string) ([]any, error) { + return (*Post).scanValues(nil, columns) + } + _spec.Assign = func(columns []string, values []any) error { + node := &Post{config: pq.config} + nodes = append(nodes, node) + node.Edges.loadedTypes = loadedTypes + return node.assignValues(columns, values) + } + for i := range hooks { + hooks[i](ctx, _spec) + } + if err := sqlgraph.QueryNodes(ctx, pq.driver, _spec); err != nil { + return nil, err + } + if len(nodes) == 0 { + return nodes, nil + } + if query := pq.withUser; query != nil { + if err := pq.loadUser(ctx, query, nodes, + func(n *Post) { n.Edges.User = []*User{} }, + func(n *Post, e *User) { n.Edges.User = append(n.Edges.User, e) }); err != nil { + return nil, err + } + } + return nodes, nil +} + +func (pq *PostQuery) loadUser(ctx context.Context, query *UserQuery, nodes []*Post, init func(*Post), assign func(*Post, *User)) error { + fks := make([]driver.Value, 0, len(nodes)) + nodeids := make(map[uint64]*Post) + for i := range nodes { + fks = append(fks, nodes[i].ID) + nodeids[nodes[i].ID] = nodes[i] + if init != nil { + init(nodes[i]) + } + } + query.Where(predicate.User(func(s *sql.Selector) { + s.Where(sql.InValues(post.UserColumn, fks...)) + })) + neighbors, err := query.All(ctx) + if err != nil { + return err + } + for _, n := range neighbors { + fk := n.PostID + node, ok := nodeids[fk] + if !ok { + return fmt.Errorf(`unexpected foreign-key "post_id" returned %v for node %v`, fk, n.ID) + } + assign(node, n) + } + return nil +} + +func (pq *PostQuery) sqlCount(ctx context.Context) (int, error) { + _spec := pq.querySpec() + _spec.Node.Columns = pq.ctx.Fields + if len(pq.ctx.Fields) > 0 { + _spec.Unique = pq.ctx.Unique != nil && *pq.ctx.Unique + } + return sqlgraph.CountNodes(ctx, pq.driver, _spec) +} + +func (pq *PostQuery) querySpec() *sqlgraph.QuerySpec { + _spec := &sqlgraph.QuerySpec{ + Node: &sqlgraph.NodeSpec{ + Table: post.Table, + Columns: post.Columns, + ID: &sqlgraph.FieldSpec{ + Type: field.TypeUint64, + Column: post.FieldID, + }, + }, + From: pq.sql, + Unique: true, + } + if unique := pq.ctx.Unique; unique != nil { + _spec.Unique = *unique + } + if fields := pq.ctx.Fields; len(fields) > 0 { + _spec.Node.Columns = make([]string, 0, len(fields)) + _spec.Node.Columns = append(_spec.Node.Columns, post.FieldID) + for i := range fields { + if fields[i] != post.FieldID { + _spec.Node.Columns = append(_spec.Node.Columns, fields[i]) + } + } + } + if ps := pq.predicates; len(ps) > 0 { + _spec.Predicate = func(selector *sql.Selector) { + for i := range ps { + ps[i](selector) + } + } + } + if limit := pq.ctx.Limit; limit != nil { + _spec.Limit = *limit + } + if offset := pq.ctx.Offset; offset != nil { + _spec.Offset = *offset + } + if ps := pq.order; len(ps) > 0 { + _spec.Order = func(selector *sql.Selector) { + for i := range ps { + ps[i](selector) + } + } + } + return _spec +} + +func (pq *PostQuery) sqlQuery(ctx context.Context) *sql.Selector { + builder := sql.Dialect(pq.driver.Dialect()) + t1 := builder.Table(post.Table) + columns := pq.ctx.Fields + if len(columns) == 0 { + columns = post.Columns + } + selector := builder.Select(t1.Columns(columns...)...).From(t1) + if pq.sql != nil { + selector = pq.sql + selector.Select(selector.Columns(columns...)...) + } + if pq.ctx.Unique != nil && *pq.ctx.Unique { + selector.Distinct() + } + for _, p := range pq.predicates { + p(selector) + } + for _, p := range pq.order { + p(selector) + } + if offset := pq.ctx.Offset; offset != nil { + // limit is mandatory for offset clause. We start + // with default value, and override it below if needed. + selector.Offset(*offset).Limit(math.MaxInt32) + } + if limit := pq.ctx.Limit; limit != nil { + selector.Limit(*limit) + } + return selector +} + +// PostGroupBy is the group-by builder for Post entities. +type PostGroupBy struct { + selector + build *PostQuery +} + +// Aggregate adds the given aggregation functions to the group-by query. +func (pgb *PostGroupBy) Aggregate(fns ...AggregateFunc) *PostGroupBy { + pgb.fns = append(pgb.fns, fns...) + return pgb +} + +// Scan applies the selector query and scans the result into the given value. +func (pgb *PostGroupBy) Scan(ctx context.Context, v any) error { + ctx = setContextOp(ctx, pgb.build.ctx, "GroupBy") + if err := pgb.build.prepareQuery(ctx); err != nil { + return err + } + return scanWithInterceptors[*PostQuery, *PostGroupBy](ctx, pgb.build, pgb, pgb.build.inters, v) +} + +func (pgb *PostGroupBy) sqlScan(ctx context.Context, root *PostQuery, v any) error { + selector := root.sqlQuery(ctx).Select() + aggregation := make([]string, 0, len(pgb.fns)) + for _, fn := range pgb.fns { + aggregation = append(aggregation, fn(selector)) + } + if len(selector.SelectedColumns()) == 0 { + columns := make([]string, 0, len(*pgb.flds)+len(pgb.fns)) + for _, f := range *pgb.flds { + columns = append(columns, selector.C(f)) + } + columns = append(columns, aggregation...) + selector.Select(columns...) + } + selector.GroupBy(selector.Columns(*pgb.flds...)...) + if err := selector.Err(); err != nil { + return err + } + rows := &sql.Rows{} + query, args := selector.Query() + if err := pgb.build.driver.Query(ctx, query, args, rows); err != nil { + return err + } + defer rows.Close() + return sql.ScanSlice(rows, v) +} + +// PostSelect is the builder for selecting fields of Post entities. +type PostSelect struct { + *PostQuery + selector +} + +// Aggregate adds the given aggregation functions to the selector query. +func (ps *PostSelect) Aggregate(fns ...AggregateFunc) *PostSelect { + ps.fns = append(ps.fns, fns...) + return ps +} + +// Scan applies the selector query and scans the result into the given value. +func (ps *PostSelect) Scan(ctx context.Context, v any) error { + ctx = setContextOp(ctx, ps.ctx, "Select") + if err := ps.prepareQuery(ctx); err != nil { + return err + } + return scanWithInterceptors[*PostQuery, *PostSelect](ctx, ps.PostQuery, ps, ps.inters, v) +} + +func (ps *PostSelect) sqlScan(ctx context.Context, root *PostQuery, v any) error { + selector := root.sqlQuery(ctx) + aggregation := make([]string, 0, len(ps.fns)) + for _, fn := range ps.fns { + aggregation = append(aggregation, fn(selector)) + } + switch n := len(*ps.selector.flds); { + case n == 0 && len(aggregation) > 0: + selector.Select(aggregation...) + case n != 0 && len(aggregation) > 0: + selector.AppendSelect(aggregation...) + } + rows := &sql.Rows{} + query, args := selector.Query() + if err := ps.driver.Query(ctx, query, args, rows); err != nil { + return err + } + defer rows.Close() + return sql.ScanSlice(rows, v) +} diff --git a/pkg/ent/post_update.go b/pkg/ent/post_update.go new file mode 100644 index 00000000..9c69ba31 --- /dev/null +++ b/pkg/ent/post_update.go @@ -0,0 +1,586 @@ +// Code generated by ent, DO NOT EDIT. + +package ent + +import ( + "context" + "errors" + "fmt" + "time" + + "entgo.io/ent/dialect/sql" + "entgo.io/ent/dialect/sql/sqlgraph" + "entgo.io/ent/schema/field" + "github.com/gofrs/uuid" + "github.com/suyuan32/simple-admin-core/pkg/ent/post" + "github.com/suyuan32/simple-admin-core/pkg/ent/predicate" + "github.com/suyuan32/simple-admin-core/pkg/ent/user" +) + +// PostUpdate is the builder for updating Post entities. +type PostUpdate struct { + config + hooks []Hook + mutation *PostMutation +} + +// Where appends a list predicates to the PostUpdate builder. +func (pu *PostUpdate) Where(ps ...predicate.Post) *PostUpdate { + pu.mutation.Where(ps...) + return pu +} + +// SetUpdatedAt sets the "updated_at" field. +func (pu *PostUpdate) SetUpdatedAt(t time.Time) *PostUpdate { + pu.mutation.SetUpdatedAt(t) + return pu +} + +// SetStatus sets the "status" field. +func (pu *PostUpdate) SetStatus(u uint8) *PostUpdate { + pu.mutation.ResetStatus() + pu.mutation.SetStatus(u) + return pu +} + +// SetNillableStatus sets the "status" field if the given value is not nil. +func (pu *PostUpdate) SetNillableStatus(u *uint8) *PostUpdate { + if u != nil { + pu.SetStatus(*u) + } + return pu +} + +// AddStatus adds u to the "status" field. +func (pu *PostUpdate) AddStatus(u int8) *PostUpdate { + pu.mutation.AddStatus(u) + return pu +} + +// ClearStatus clears the value of the "status" field. +func (pu *PostUpdate) ClearStatus() *PostUpdate { + pu.mutation.ClearStatus() + return pu +} + +// SetSort sets the "sort" field. +func (pu *PostUpdate) SetSort(u uint32) *PostUpdate { + pu.mutation.ResetSort() + pu.mutation.SetSort(u) + return pu +} + +// SetNillableSort sets the "sort" field if the given value is not nil. +func (pu *PostUpdate) SetNillableSort(u *uint32) *PostUpdate { + if u != nil { + pu.SetSort(*u) + } + return pu +} + +// AddSort adds u to the "sort" field. +func (pu *PostUpdate) AddSort(u int32) *PostUpdate { + pu.mutation.AddSort(u) + return pu +} + +// SetName sets the "name" field. +func (pu *PostUpdate) SetName(s string) *PostUpdate { + pu.mutation.SetName(s) + return pu +} + +// SetCode sets the "code" field. +func (pu *PostUpdate) SetCode(s string) *PostUpdate { + pu.mutation.SetCode(s) + return pu +} + +// SetRemark sets the "remark" field. +func (pu *PostUpdate) SetRemark(s string) *PostUpdate { + pu.mutation.SetRemark(s) + return pu +} + +// AddUserIDs adds the "user" edge to the User entity by IDs. +func (pu *PostUpdate) AddUserIDs(ids ...uuid.UUID) *PostUpdate { + pu.mutation.AddUserIDs(ids...) + return pu +} + +// AddUser adds the "user" edges to the User entity. +func (pu *PostUpdate) AddUser(u ...*User) *PostUpdate { + ids := make([]uuid.UUID, len(u)) + for i := range u { + ids[i] = u[i].ID + } + return pu.AddUserIDs(ids...) +} + +// Mutation returns the PostMutation object of the builder. +func (pu *PostUpdate) Mutation() *PostMutation { + return pu.mutation +} + +// ClearUser clears all "user" edges to the User entity. +func (pu *PostUpdate) ClearUser() *PostUpdate { + pu.mutation.ClearUser() + return pu +} + +// RemoveUserIDs removes the "user" edge to User entities by IDs. +func (pu *PostUpdate) RemoveUserIDs(ids ...uuid.UUID) *PostUpdate { + pu.mutation.RemoveUserIDs(ids...) + return pu +} + +// RemoveUser removes "user" edges to User entities. +func (pu *PostUpdate) RemoveUser(u ...*User) *PostUpdate { + ids := make([]uuid.UUID, len(u)) + for i := range u { + ids[i] = u[i].ID + } + return pu.RemoveUserIDs(ids...) +} + +// Save executes the query and returns the number of nodes affected by the update operation. +func (pu *PostUpdate) Save(ctx context.Context) (int, error) { + pu.defaults() + return withHooks[int, PostMutation](ctx, pu.sqlSave, pu.mutation, pu.hooks) +} + +// SaveX is like Save, but panics if an error occurs. +func (pu *PostUpdate) SaveX(ctx context.Context) int { + affected, err := pu.Save(ctx) + if err != nil { + panic(err) + } + return affected +} + +// Exec executes the query. +func (pu *PostUpdate) Exec(ctx context.Context) error { + _, err := pu.Save(ctx) + return err +} + +// ExecX is like Exec, but panics if an error occurs. +func (pu *PostUpdate) ExecX(ctx context.Context) { + if err := pu.Exec(ctx); err != nil { + panic(err) + } +} + +// defaults sets the default values of the builder before save. +func (pu *PostUpdate) defaults() { + if _, ok := pu.mutation.UpdatedAt(); !ok { + v := post.UpdateDefaultUpdatedAt() + pu.mutation.SetUpdatedAt(v) + } +} + +func (pu *PostUpdate) sqlSave(ctx context.Context) (n int, err error) { + _spec := &sqlgraph.UpdateSpec{ + Node: &sqlgraph.NodeSpec{ + Table: post.Table, + Columns: post.Columns, + ID: &sqlgraph.FieldSpec{ + Type: field.TypeUint64, + Column: post.FieldID, + }, + }, + } + if ps := pu.mutation.predicates; len(ps) > 0 { + _spec.Predicate = func(selector *sql.Selector) { + for i := range ps { + ps[i](selector) + } + } + } + if value, ok := pu.mutation.UpdatedAt(); ok { + _spec.SetField(post.FieldUpdatedAt, field.TypeTime, value) + } + if value, ok := pu.mutation.Status(); ok { + _spec.SetField(post.FieldStatus, field.TypeUint8, value) + } + if value, ok := pu.mutation.AddedStatus(); ok { + _spec.AddField(post.FieldStatus, field.TypeUint8, value) + } + if pu.mutation.StatusCleared() { + _spec.ClearField(post.FieldStatus, field.TypeUint8) + } + if value, ok := pu.mutation.Sort(); ok { + _spec.SetField(post.FieldSort, field.TypeUint32, value) + } + if value, ok := pu.mutation.AddedSort(); ok { + _spec.AddField(post.FieldSort, field.TypeUint32, value) + } + if value, ok := pu.mutation.Name(); ok { + _spec.SetField(post.FieldName, field.TypeString, value) + } + if value, ok := pu.mutation.Code(); ok { + _spec.SetField(post.FieldCode, field.TypeString, value) + } + if value, ok := pu.mutation.Remark(); ok { + _spec.SetField(post.FieldRemark, field.TypeString, value) + } + if pu.mutation.UserCleared() { + edge := &sqlgraph.EdgeSpec{ + Rel: sqlgraph.O2M, + Inverse: true, + Table: post.UserTable, + Columns: []string{post.UserColumn}, + Bidi: false, + Target: &sqlgraph.EdgeTarget{ + IDSpec: &sqlgraph.FieldSpec{ + Type: field.TypeUUID, + Column: user.FieldID, + }, + }, + } + _spec.Edges.Clear = append(_spec.Edges.Clear, edge) + } + if nodes := pu.mutation.RemovedUserIDs(); len(nodes) > 0 && !pu.mutation.UserCleared() { + edge := &sqlgraph.EdgeSpec{ + Rel: sqlgraph.O2M, + Inverse: true, + Table: post.UserTable, + Columns: []string{post.UserColumn}, + Bidi: false, + Target: &sqlgraph.EdgeTarget{ + IDSpec: &sqlgraph.FieldSpec{ + Type: field.TypeUUID, + Column: user.FieldID, + }, + }, + } + for _, k := range nodes { + edge.Target.Nodes = append(edge.Target.Nodes, k) + } + _spec.Edges.Clear = append(_spec.Edges.Clear, edge) + } + if nodes := pu.mutation.UserIDs(); len(nodes) > 0 { + edge := &sqlgraph.EdgeSpec{ + Rel: sqlgraph.O2M, + Inverse: true, + Table: post.UserTable, + Columns: []string{post.UserColumn}, + Bidi: false, + Target: &sqlgraph.EdgeTarget{ + IDSpec: &sqlgraph.FieldSpec{ + Type: field.TypeUUID, + Column: user.FieldID, + }, + }, + } + for _, k := range nodes { + edge.Target.Nodes = append(edge.Target.Nodes, k) + } + _spec.Edges.Add = append(_spec.Edges.Add, edge) + } + if n, err = sqlgraph.UpdateNodes(ctx, pu.driver, _spec); err != nil { + if _, ok := err.(*sqlgraph.NotFoundError); ok { + err = &NotFoundError{post.Label} + } else if sqlgraph.IsConstraintError(err) { + err = &ConstraintError{msg: err.Error(), wrap: err} + } + return 0, err + } + pu.mutation.done = true + return n, nil +} + +// PostUpdateOne is the builder for updating a single Post entity. +type PostUpdateOne struct { + config + fields []string + hooks []Hook + mutation *PostMutation +} + +// SetUpdatedAt sets the "updated_at" field. +func (puo *PostUpdateOne) SetUpdatedAt(t time.Time) *PostUpdateOne { + puo.mutation.SetUpdatedAt(t) + return puo +} + +// SetStatus sets the "status" field. +func (puo *PostUpdateOne) SetStatus(u uint8) *PostUpdateOne { + puo.mutation.ResetStatus() + puo.mutation.SetStatus(u) + return puo +} + +// SetNillableStatus sets the "status" field if the given value is not nil. +func (puo *PostUpdateOne) SetNillableStatus(u *uint8) *PostUpdateOne { + if u != nil { + puo.SetStatus(*u) + } + return puo +} + +// AddStatus adds u to the "status" field. +func (puo *PostUpdateOne) AddStatus(u int8) *PostUpdateOne { + puo.mutation.AddStatus(u) + return puo +} + +// ClearStatus clears the value of the "status" field. +func (puo *PostUpdateOne) ClearStatus() *PostUpdateOne { + puo.mutation.ClearStatus() + return puo +} + +// SetSort sets the "sort" field. +func (puo *PostUpdateOne) SetSort(u uint32) *PostUpdateOne { + puo.mutation.ResetSort() + puo.mutation.SetSort(u) + return puo +} + +// SetNillableSort sets the "sort" field if the given value is not nil. +func (puo *PostUpdateOne) SetNillableSort(u *uint32) *PostUpdateOne { + if u != nil { + puo.SetSort(*u) + } + return puo +} + +// AddSort adds u to the "sort" field. +func (puo *PostUpdateOne) AddSort(u int32) *PostUpdateOne { + puo.mutation.AddSort(u) + return puo +} + +// SetName sets the "name" field. +func (puo *PostUpdateOne) SetName(s string) *PostUpdateOne { + puo.mutation.SetName(s) + return puo +} + +// SetCode sets the "code" field. +func (puo *PostUpdateOne) SetCode(s string) *PostUpdateOne { + puo.mutation.SetCode(s) + return puo +} + +// SetRemark sets the "remark" field. +func (puo *PostUpdateOne) SetRemark(s string) *PostUpdateOne { + puo.mutation.SetRemark(s) + return puo +} + +// AddUserIDs adds the "user" edge to the User entity by IDs. +func (puo *PostUpdateOne) AddUserIDs(ids ...uuid.UUID) *PostUpdateOne { + puo.mutation.AddUserIDs(ids...) + return puo +} + +// AddUser adds the "user" edges to the User entity. +func (puo *PostUpdateOne) AddUser(u ...*User) *PostUpdateOne { + ids := make([]uuid.UUID, len(u)) + for i := range u { + ids[i] = u[i].ID + } + return puo.AddUserIDs(ids...) +} + +// Mutation returns the PostMutation object of the builder. +func (puo *PostUpdateOne) Mutation() *PostMutation { + return puo.mutation +} + +// ClearUser clears all "user" edges to the User entity. +func (puo *PostUpdateOne) ClearUser() *PostUpdateOne { + puo.mutation.ClearUser() + return puo +} + +// RemoveUserIDs removes the "user" edge to User entities by IDs. +func (puo *PostUpdateOne) RemoveUserIDs(ids ...uuid.UUID) *PostUpdateOne { + puo.mutation.RemoveUserIDs(ids...) + return puo +} + +// RemoveUser removes "user" edges to User entities. +func (puo *PostUpdateOne) RemoveUser(u ...*User) *PostUpdateOne { + ids := make([]uuid.UUID, len(u)) + for i := range u { + ids[i] = u[i].ID + } + return puo.RemoveUserIDs(ids...) +} + +// Select allows selecting one or more fields (columns) of the returned entity. +// The default is selecting all fields defined in the entity schema. +func (puo *PostUpdateOne) Select(field string, fields ...string) *PostUpdateOne { + puo.fields = append([]string{field}, fields...) + return puo +} + +// Save executes the query and returns the updated Post entity. +func (puo *PostUpdateOne) Save(ctx context.Context) (*Post, error) { + puo.defaults() + return withHooks[*Post, PostMutation](ctx, puo.sqlSave, puo.mutation, puo.hooks) +} + +// SaveX is like Save, but panics if an error occurs. +func (puo *PostUpdateOne) SaveX(ctx context.Context) *Post { + node, err := puo.Save(ctx) + if err != nil { + panic(err) + } + return node +} + +// Exec executes the query on the entity. +func (puo *PostUpdateOne) Exec(ctx context.Context) error { + _, err := puo.Save(ctx) + return err +} + +// ExecX is like Exec, but panics if an error occurs. +func (puo *PostUpdateOne) ExecX(ctx context.Context) { + if err := puo.Exec(ctx); err != nil { + panic(err) + } +} + +// defaults sets the default values of the builder before save. +func (puo *PostUpdateOne) defaults() { + if _, ok := puo.mutation.UpdatedAt(); !ok { + v := post.UpdateDefaultUpdatedAt() + puo.mutation.SetUpdatedAt(v) + } +} + +func (puo *PostUpdateOne) sqlSave(ctx context.Context) (_node *Post, err error) { + _spec := &sqlgraph.UpdateSpec{ + Node: &sqlgraph.NodeSpec{ + Table: post.Table, + Columns: post.Columns, + ID: &sqlgraph.FieldSpec{ + Type: field.TypeUint64, + Column: post.FieldID, + }, + }, + } + id, ok := puo.mutation.ID() + if !ok { + return nil, &ValidationError{Name: "id", err: errors.New(`ent: missing "Post.id" for update`)} + } + _spec.Node.ID.Value = id + if fields := puo.fields; len(fields) > 0 { + _spec.Node.Columns = make([]string, 0, len(fields)) + _spec.Node.Columns = append(_spec.Node.Columns, post.FieldID) + for _, f := range fields { + if !post.ValidColumn(f) { + return nil, &ValidationError{Name: f, err: fmt.Errorf("ent: invalid field %q for query", f)} + } + if f != post.FieldID { + _spec.Node.Columns = append(_spec.Node.Columns, f) + } + } + } + if ps := puo.mutation.predicates; len(ps) > 0 { + _spec.Predicate = func(selector *sql.Selector) { + for i := range ps { + ps[i](selector) + } + } + } + if value, ok := puo.mutation.UpdatedAt(); ok { + _spec.SetField(post.FieldUpdatedAt, field.TypeTime, value) + } + if value, ok := puo.mutation.Status(); ok { + _spec.SetField(post.FieldStatus, field.TypeUint8, value) + } + if value, ok := puo.mutation.AddedStatus(); ok { + _spec.AddField(post.FieldStatus, field.TypeUint8, value) + } + if puo.mutation.StatusCleared() { + _spec.ClearField(post.FieldStatus, field.TypeUint8) + } + if value, ok := puo.mutation.Sort(); ok { + _spec.SetField(post.FieldSort, field.TypeUint32, value) + } + if value, ok := puo.mutation.AddedSort(); ok { + _spec.AddField(post.FieldSort, field.TypeUint32, value) + } + if value, ok := puo.mutation.Name(); ok { + _spec.SetField(post.FieldName, field.TypeString, value) + } + if value, ok := puo.mutation.Code(); ok { + _spec.SetField(post.FieldCode, field.TypeString, value) + } + if value, ok := puo.mutation.Remark(); ok { + _spec.SetField(post.FieldRemark, field.TypeString, value) + } + if puo.mutation.UserCleared() { + edge := &sqlgraph.EdgeSpec{ + Rel: sqlgraph.O2M, + Inverse: true, + Table: post.UserTable, + Columns: []string{post.UserColumn}, + Bidi: false, + Target: &sqlgraph.EdgeTarget{ + IDSpec: &sqlgraph.FieldSpec{ + Type: field.TypeUUID, + Column: user.FieldID, + }, + }, + } + _spec.Edges.Clear = append(_spec.Edges.Clear, edge) + } + if nodes := puo.mutation.RemovedUserIDs(); len(nodes) > 0 && !puo.mutation.UserCleared() { + edge := &sqlgraph.EdgeSpec{ + Rel: sqlgraph.O2M, + Inverse: true, + Table: post.UserTable, + Columns: []string{post.UserColumn}, + Bidi: false, + Target: &sqlgraph.EdgeTarget{ + IDSpec: &sqlgraph.FieldSpec{ + Type: field.TypeUUID, + Column: user.FieldID, + }, + }, + } + for _, k := range nodes { + edge.Target.Nodes = append(edge.Target.Nodes, k) + } + _spec.Edges.Clear = append(_spec.Edges.Clear, edge) + } + if nodes := puo.mutation.UserIDs(); len(nodes) > 0 { + edge := &sqlgraph.EdgeSpec{ + Rel: sqlgraph.O2M, + Inverse: true, + Table: post.UserTable, + Columns: []string{post.UserColumn}, + Bidi: false, + Target: &sqlgraph.EdgeTarget{ + IDSpec: &sqlgraph.FieldSpec{ + Type: field.TypeUUID, + Column: user.FieldID, + }, + }, + } + for _, k := range nodes { + edge.Target.Nodes = append(edge.Target.Nodes, k) + } + _spec.Edges.Add = append(_spec.Edges.Add, edge) + } + _node = &Post{config: puo.config} + _spec.Assign = _node.assignValues + _spec.ScanValues = _node.scanValues + if err = sqlgraph.UpdateNode(ctx, puo.driver, _spec); err != nil { + if _, ok := err.(*sqlgraph.NotFoundError); ok { + err = &NotFoundError{post.Label} + } else if sqlgraph.IsConstraintError(err) { + err = &ConstraintError{msg: err.Error(), wrap: err} + } + return nil, err + } + puo.mutation.done = true + return _node, nil +} diff --git a/pkg/ent/predicate/predicate.go b/pkg/ent/predicate/predicate.go index 5929a461..688136c4 100644 --- a/pkg/ent/predicate/predicate.go +++ b/pkg/ent/predicate/predicate.go @@ -27,6 +27,9 @@ type MenuParam func(*sql.Selector) // OauthProvider is the predicate function for oauthprovider builders. type OauthProvider func(*sql.Selector) +// Post is the predicate function for post builders. +type Post func(*sql.Selector) + // Role is the predicate function for role builders. type Role func(*sql.Selector) diff --git a/pkg/ent/runtime.go b/pkg/ent/runtime.go index 3c28d8e4..5882ae35 100644 --- a/pkg/ent/runtime.go +++ b/pkg/ent/runtime.go @@ -13,6 +13,7 @@ import ( "github.com/suyuan32/simple-admin-core/pkg/ent/menu" "github.com/suyuan32/simple-admin-core/pkg/ent/menuparam" "github.com/suyuan32/simple-admin-core/pkg/ent/oauthprovider" + "github.com/suyuan32/simple-admin-core/pkg/ent/post" "github.com/suyuan32/simple-admin-core/pkg/ent/role" "github.com/suyuan32/simple-admin-core/pkg/ent/schema" "github.com/suyuan32/simple-admin-core/pkg/ent/token" @@ -47,6 +48,8 @@ func init() { _ = departmentMixinFields0 departmentMixinFields1 := departmentMixin[1].Fields() _ = departmentMixinFields1 + departmentMixinFields2 := departmentMixin[2].Fields() + _ = departmentMixinFields2 departmentFields := schema.Department{}.Fields() _ = departmentFields // departmentDescCreatedAt is the schema descriptor for created_at field. @@ -63,8 +66,12 @@ func init() { departmentDescStatus := departmentMixinFields1[0].Descriptor() // department.DefaultStatus holds the default value on creation for the status field. department.DefaultStatus = departmentDescStatus.Default.(uint8) + // departmentDescSort is the schema descriptor for sort field. + departmentDescSort := departmentMixinFields2[0].Descriptor() + // department.DefaultSort holds the default value on creation for the sort field. + department.DefaultSort = departmentDescSort.Default.(uint32) // departmentDescParentID is the schema descriptor for parent_id field. - departmentDescParentID := departmentFields[7].Descriptor() + departmentDescParentID := departmentFields[6].Descriptor() // department.DefaultParentID holds the default value on creation for the parent_id field. department.DefaultParentID = departmentDescParentID.Default.(uint64) dictionaryMixin := schema.Dictionary{}.Mixin() @@ -112,6 +119,8 @@ func init() { menuMixin := schema.Menu{}.Mixin() menuMixinFields0 := menuMixin[0].Fields() _ = menuMixinFields0 + menuMixinFields1 := menuMixin[1].Fields() + _ = menuMixinFields1 menuFields := schema.Menu{}.Fields() _ = menuFields // menuDescCreatedAt is the schema descriptor for created_at field. @@ -124,6 +133,10 @@ func init() { menu.DefaultUpdatedAt = menuDescUpdatedAt.Default.(func() time.Time) // menu.UpdateDefaultUpdatedAt holds the default value on update for the updated_at field. menu.UpdateDefaultUpdatedAt = menuDescUpdatedAt.UpdateDefault.(func() time.Time) + // menuDescSort is the schema descriptor for sort field. + menuDescSort := menuMixinFields1[0].Descriptor() + // menu.DefaultSort holds the default value on creation for the sort field. + menu.DefaultSort = menuDescSort.Default.(uint32) // menuDescPath is the schema descriptor for path field. menuDescPath := menuFields[3].Descriptor() // menu.DefaultPath holds the default value on creation for the path field. @@ -136,56 +149,52 @@ func init() { menuDescComponent := menuFields[6].Descriptor() // menu.DefaultComponent holds the default value on creation for the component field. menu.DefaultComponent = menuDescComponent.Default.(string) - // menuDescSort is the schema descriptor for sort field. - menuDescSort := menuFields[7].Descriptor() - // menu.DefaultSort holds the default value on creation for the sort field. - menu.DefaultSort = menuDescSort.Default.(uint32) // menuDescDisabled is the schema descriptor for disabled field. - menuDescDisabled := menuFields[8].Descriptor() + menuDescDisabled := menuFields[7].Descriptor() // menu.DefaultDisabled holds the default value on creation for the disabled field. menu.DefaultDisabled = menuDescDisabled.Default.(bool) // menuDescHideMenu is the schema descriptor for hide_menu field. - menuDescHideMenu := menuFields[11].Descriptor() + menuDescHideMenu := menuFields[10].Descriptor() // menu.DefaultHideMenu holds the default value on creation for the hide_menu field. menu.DefaultHideMenu = menuDescHideMenu.Default.(bool) // menuDescHideBreadcrumb is the schema descriptor for hide_breadcrumb field. - menuDescHideBreadcrumb := menuFields[12].Descriptor() + menuDescHideBreadcrumb := menuFields[11].Descriptor() // menu.DefaultHideBreadcrumb holds the default value on creation for the hide_breadcrumb field. menu.DefaultHideBreadcrumb = menuDescHideBreadcrumb.Default.(bool) // menuDescCurrentActiveMenu is the schema descriptor for current_active_menu field. - menuDescCurrentActiveMenu := menuFields[13].Descriptor() + menuDescCurrentActiveMenu := menuFields[12].Descriptor() // menu.DefaultCurrentActiveMenu holds the default value on creation for the current_active_menu field. menu.DefaultCurrentActiveMenu = menuDescCurrentActiveMenu.Default.(string) // menuDescIgnoreKeepAlive is the schema descriptor for ignore_keep_alive field. - menuDescIgnoreKeepAlive := menuFields[14].Descriptor() + menuDescIgnoreKeepAlive := menuFields[13].Descriptor() // menu.DefaultIgnoreKeepAlive holds the default value on creation for the ignore_keep_alive field. menu.DefaultIgnoreKeepAlive = menuDescIgnoreKeepAlive.Default.(bool) // menuDescHideTab is the schema descriptor for hide_tab field. - menuDescHideTab := menuFields[15].Descriptor() + menuDescHideTab := menuFields[14].Descriptor() // menu.DefaultHideTab holds the default value on creation for the hide_tab field. menu.DefaultHideTab = menuDescHideTab.Default.(bool) // menuDescFrameSrc is the schema descriptor for frame_src field. - menuDescFrameSrc := menuFields[16].Descriptor() + menuDescFrameSrc := menuFields[15].Descriptor() // menu.DefaultFrameSrc holds the default value on creation for the frame_src field. menu.DefaultFrameSrc = menuDescFrameSrc.Default.(string) // menuDescCarryParam is the schema descriptor for carry_param field. - menuDescCarryParam := menuFields[17].Descriptor() + menuDescCarryParam := menuFields[16].Descriptor() // menu.DefaultCarryParam holds the default value on creation for the carry_param field. menu.DefaultCarryParam = menuDescCarryParam.Default.(bool) // menuDescHideChildrenInMenu is the schema descriptor for hide_children_in_menu field. - menuDescHideChildrenInMenu := menuFields[18].Descriptor() + menuDescHideChildrenInMenu := menuFields[17].Descriptor() // menu.DefaultHideChildrenInMenu holds the default value on creation for the hide_children_in_menu field. menu.DefaultHideChildrenInMenu = menuDescHideChildrenInMenu.Default.(bool) // menuDescAffix is the schema descriptor for affix field. - menuDescAffix := menuFields[19].Descriptor() + menuDescAffix := menuFields[18].Descriptor() // menu.DefaultAffix holds the default value on creation for the affix field. menu.DefaultAffix = menuDescAffix.Default.(bool) // menuDescDynamicLevel is the schema descriptor for dynamic_level field. - menuDescDynamicLevel := menuFields[20].Descriptor() + menuDescDynamicLevel := menuFields[19].Descriptor() // menu.DefaultDynamicLevel holds the default value on creation for the dynamic_level field. menu.DefaultDynamicLevel = menuDescDynamicLevel.Default.(uint32) // menuDescRealPath is the schema descriptor for real_path field. - menuDescRealPath := menuFields[21].Descriptor() + menuDescRealPath := menuFields[20].Descriptor() // menu.DefaultRealPath holds the default value on creation for the real_path field. menu.DefaultRealPath = menuDescRealPath.Default.(string) menuparamMixin := schema.MenuParam{}.Mixin() @@ -218,6 +227,33 @@ func init() { oauthprovider.DefaultUpdatedAt = oauthproviderDescUpdatedAt.Default.(func() time.Time) // oauthprovider.UpdateDefaultUpdatedAt holds the default value on update for the updated_at field. oauthprovider.UpdateDefaultUpdatedAt = oauthproviderDescUpdatedAt.UpdateDefault.(func() time.Time) + postMixin := schema.Post{}.Mixin() + postMixinFields0 := postMixin[0].Fields() + _ = postMixinFields0 + postMixinFields1 := postMixin[1].Fields() + _ = postMixinFields1 + postMixinFields2 := postMixin[2].Fields() + _ = postMixinFields2 + postFields := schema.Post{}.Fields() + _ = postFields + // postDescCreatedAt is the schema descriptor for created_at field. + postDescCreatedAt := postMixinFields0[1].Descriptor() + // post.DefaultCreatedAt holds the default value on creation for the created_at field. + post.DefaultCreatedAt = postDescCreatedAt.Default.(func() time.Time) + // postDescUpdatedAt is the schema descriptor for updated_at field. + postDescUpdatedAt := postMixinFields0[2].Descriptor() + // post.DefaultUpdatedAt holds the default value on creation for the updated_at field. + post.DefaultUpdatedAt = postDescUpdatedAt.Default.(func() time.Time) + // post.UpdateDefaultUpdatedAt holds the default value on update for the updated_at field. + post.UpdateDefaultUpdatedAt = postDescUpdatedAt.UpdateDefault.(func() time.Time) + // postDescStatus is the schema descriptor for status field. + postDescStatus := postMixinFields1[0].Descriptor() + // post.DefaultStatus holds the default value on creation for the status field. + post.DefaultStatus = postDescStatus.Default.(uint8) + // postDescSort is the schema descriptor for sort field. + postDescSort := postMixinFields2[0].Descriptor() + // post.DefaultSort holds the default value on creation for the sort field. + post.DefaultSort = postDescSort.Default.(uint32) roleMixin := schema.Role{}.Mixin() roleMixinFields0 := roleMixin[0].Fields() _ = roleMixinFields0 @@ -313,6 +349,10 @@ func init() { userDescDepartmentID := userFields[9].Descriptor() // user.DefaultDepartmentID holds the default value on creation for the department_id field. user.DefaultDepartmentID = userDescDepartmentID.Default.(uint64) + // userDescPostID is the schema descriptor for post_id field. + userDescPostID := userFields[10].Descriptor() + // user.DefaultPostID holds the default value on creation for the post_id field. + user.DefaultPostID = userDescPostID.Default.(uint64) // userDescID is the schema descriptor for id field. userDescID := userMixinFields0[0].Descriptor() // user.DefaultID holds the default value on creation for the id field. diff --git a/pkg/ent/schema/department.go b/pkg/ent/schema/department.go index 619c2a17..59fdec85 100644 --- a/pkg/ent/schema/department.go +++ b/pkg/ent/schema/department.go @@ -21,7 +21,6 @@ func (Department) Fields() []ent.Field { field.String("leader").Comment("Department leader | 部门负责人"), field.String("phone").Comment("Leader's phone number | 负责人电话"), field.String("email").Comment("Leader's email | 部门负责人电子邮箱"), - field.Uint32("sort").Comment("Sort number | 排序编号"), field.String("remark").Comment("Remark | 备注"), field.Uint64("parent_id").Optional().Default(0).Comment("Parent department ID | 父级部门ID"), } @@ -31,6 +30,7 @@ func (Department) Mixin() []ent.Mixin { return []ent.Mixin{ mixins.BaseMixin{}, mixins.StatusMixin{}, + mixins.SortMixin{}, } } @@ -43,6 +43,6 @@ func (Department) Edges() []ent.Edge { func (Department) Annotations() []schema.Annotation { return []schema.Annotation{ - entsql.Annotation{Table: "sys_department"}, + entsql.Annotation{Table: "sys_departments"}, } } diff --git a/pkg/ent/schema/menu.go b/pkg/ent/schema/menu.go index 15016ef1..3a1633eb 100644 --- a/pkg/ent/schema/menu.go +++ b/pkg/ent/schema/menu.go @@ -23,7 +23,6 @@ func (Menu) Fields() []ent.Field { field.String("name").Comment("index name | 菜单名称"), field.String("redirect").Optional().Default("").Comment("redirect path | 跳转路径 (外链)"), field.String("component").Optional().Default("").Comment("the path of vue file | 组件路径"), - field.Uint32("sort").Default(0).Comment("sorting numbers | 排序编号"), field.Bool("disabled").Optional().Default(false).Comment("disable status | 是否停用"), // meta field.String("title").Comment("menu name | 菜单显示标题"), @@ -45,6 +44,7 @@ func (Menu) Fields() []ent.Field { func (Menu) Mixin() []ent.Mixin { return []ent.Mixin{ mixins.BaseMixin{}, + mixins.SortMixin{}, } } diff --git a/pkg/ent/schema/mixins/sort.go b/pkg/ent/schema/mixins/sort.go new file mode 100644 index 00000000..4fea3580 --- /dev/null +++ b/pkg/ent/schema/mixins/sort.go @@ -0,0 +1,21 @@ +package mixins + +import ( + "entgo.io/ent" + "entgo.io/ent/schema/field" + "entgo.io/ent/schema/mixin" +) + +// SortMixin implements the ent.Mixin for sharing +// sort fields with package schemas. +type SortMixin struct { + // We embed the `mixin.Schema` to avoid + // implementing the rest of the methods. + mixin.Schema +} + +func (SortMixin) Fields() []ent.Field { + return []ent.Field{ + field.Uint32("sort").Default(1).Comment("Sort number | 排序编号"), + } +} diff --git a/pkg/ent/schema/post.go b/pkg/ent/schema/post.go new file mode 100644 index 00000000..fbd8b55a --- /dev/null +++ b/pkg/ent/schema/post.go @@ -0,0 +1,47 @@ +package schema + +import ( + "entgo.io/ent" + "entgo.io/ent/dialect/entsql" + "entgo.io/ent/schema" + "entgo.io/ent/schema/edge" + "entgo.io/ent/schema/field" + + "github.com/suyuan32/simple-admin-core/pkg/ent/schema/mixins" +) + +type Post struct { + ent.Schema +} + +func (Post) Fields() []ent.Field { + return []ent.Field{ + field.String("name").Comment("Post Name | 岗位名称"), + field.String("code").Comment("The code of post | 岗位编码"), + field.String("remark").Comment("Remark | 备注"), + } +} + +func (Post) Mixin() []ent.Mixin { + return []ent.Mixin{ + mixins.BaseMixin{}, + mixins.StatusMixin{}, + mixins.SortMixin{}, + } +} + +func (Post) Edges() []ent.Edge { + return []ent.Edge{ + edge.From("user", User.Type).Ref("post"), + } +} + +func (Post) Indexes() []ent.Index { + return nil +} + +func (Post) Annotations() []schema.Annotation { + return []schema.Annotation{ + entsql.Annotation{Table: "sys_posts"}, + } +} diff --git a/pkg/ent/schema/user.go b/pkg/ent/schema/user.go index a8366fa4..815394c3 100644 --- a/pkg/ent/schema/user.go +++ b/pkg/ent/schema/user.go @@ -32,6 +32,7 @@ func (User) Fields() []ent.Field { Default(""). Comment("avatar | 头像路径"), field.Uint64("department_id").Optional().Default(1).Comment("Department ID | 部门ID"), + field.Uint64("post_id").Optional().Default(1).Comment("Post ID | 岗位ID"), } } @@ -45,6 +46,7 @@ func (User) Mixin() []ent.Mixin { func (User) Edges() []ent.Edge { return []ent.Edge{ edge.To("department", Department.Type).Unique().Field("department_id"), + edge.To("post", Post.Type).Unique().Field("post_id"), } } diff --git a/pkg/ent/tx.go b/pkg/ent/tx.go index 0f07876d..ddde1db1 100644 --- a/pkg/ent/tx.go +++ b/pkg/ent/tx.go @@ -26,6 +26,8 @@ type Tx struct { MenuParam *MenuParamClient // OauthProvider is the client for interacting with the OauthProvider builders. OauthProvider *OauthProviderClient + // Post is the client for interacting with the Post builders. + Post *PostClient // Role is the client for interacting with the Role builders. Role *RoleClient // Token is the client for interacting with the Token builders. @@ -170,6 +172,7 @@ func (tx *Tx) init() { tx.Menu = NewMenuClient(tx.config) tx.MenuParam = NewMenuParamClient(tx.config) tx.OauthProvider = NewOauthProviderClient(tx.config) + tx.Post = NewPostClient(tx.config) tx.Role = NewRoleClient(tx.config) tx.Token = NewTokenClient(tx.config) tx.User = NewUserClient(tx.config) diff --git a/pkg/ent/user.go b/pkg/ent/user.go index f64f0783..323fbbdd 100644 --- a/pkg/ent/user.go +++ b/pkg/ent/user.go @@ -10,6 +10,7 @@ import ( "entgo.io/ent/dialect/sql" "github.com/gofrs/uuid" "github.com/suyuan32/simple-admin-core/pkg/ent/department" + "github.com/suyuan32/simple-admin-core/pkg/ent/post" "github.com/suyuan32/simple-admin-core/pkg/ent/user" ) @@ -45,6 +46,8 @@ type User struct { Avatar string `json:"avatar,omitempty"` // Department ID | 部门ID DepartmentID uint64 `json:"department_id,omitempty"` + // Post ID | 岗位ID + PostID uint64 `json:"post_id,omitempty"` // Edges holds the relations/edges for other nodes in the graph. // The values are being populated by the UserQuery when eager-loading is set. Edges UserEdges `json:"edges"` @@ -54,9 +57,11 @@ type User struct { type UserEdges struct { // Department holds the value of the department edge. Department *Department `json:"department,omitempty"` + // Post holds the value of the post edge. + Post *Post `json:"post,omitempty"` // loadedTypes holds the information for reporting if a // type was loaded (or requested) in eager-loading or not. - loadedTypes [1]bool + loadedTypes [2]bool } // DepartmentOrErr returns the Department value or an error if the edge @@ -72,12 +77,25 @@ func (e UserEdges) DepartmentOrErr() (*Department, error) { return nil, &NotLoadedError{edge: "department"} } +// PostOrErr returns the Post value or an error if the edge +// was not loaded in eager-loading, or loaded but was not found. +func (e UserEdges) PostOrErr() (*Post, error) { + if e.loadedTypes[1] { + if e.Post == nil { + // Edge was loaded but was not found. + return nil, &NotFoundError{label: post.Label} + } + return e.Post, nil + } + return nil, &NotLoadedError{edge: "post"} +} + // scanValues returns the types for scanning values from sql.Rows. func (*User) scanValues(columns []string) ([]any, error) { values := make([]any, len(columns)) for i := range columns { switch columns[i] { - case user.FieldStatus, user.FieldRoleID, user.FieldDepartmentID: + case user.FieldStatus, user.FieldRoleID, user.FieldDepartmentID, user.FieldPostID: values[i] = new(sql.NullInt64) case user.FieldUsername, user.FieldPassword, user.FieldNickname, user.FieldDescription, user.FieldHomePath, user.FieldMobile, user.FieldEmail, user.FieldAvatar: values[i] = new(sql.NullString) @@ -184,6 +202,12 @@ func (u *User) assignValues(columns []string, values []any) error { } else if value.Valid { u.DepartmentID = uint64(value.Int64) } + case user.FieldPostID: + if value, ok := values[i].(*sql.NullInt64); !ok { + return fmt.Errorf("unexpected type %T for field post_id", values[i]) + } else if value.Valid { + u.PostID = uint64(value.Int64) + } } } return nil @@ -194,6 +218,11 @@ func (u *User) QueryDepartment() *DepartmentQuery { return NewUserClient(u.config).QueryDepartment(u) } +// QueryPost queries the "post" edge of the User entity. +func (u *User) QueryPost() *PostQuery { + return NewUserClient(u.config).QueryPost(u) +} + // Update returns a builder for updating this User. // Note that you need to call User.Unwrap() before calling this method if this User // was returned from a transaction, and the transaction was committed or rolled back. @@ -255,6 +284,9 @@ func (u *User) String() string { builder.WriteString(", ") builder.WriteString("department_id=") builder.WriteString(fmt.Sprintf("%v", u.DepartmentID)) + builder.WriteString(", ") + builder.WriteString("post_id=") + builder.WriteString(fmt.Sprintf("%v", u.PostID)) builder.WriteByte(')') return builder.String() } diff --git a/pkg/ent/user/user.go b/pkg/ent/user/user.go index 1b5a8ecd..85400a33 100644 --- a/pkg/ent/user/user.go +++ b/pkg/ent/user/user.go @@ -39,17 +39,28 @@ const ( FieldAvatar = "avatar" // FieldDepartmentID holds the string denoting the department_id field in the database. FieldDepartmentID = "department_id" + // FieldPostID holds the string denoting the post_id field in the database. + FieldPostID = "post_id" // EdgeDepartment holds the string denoting the department edge name in mutations. EdgeDepartment = "department" + // EdgePost holds the string denoting the post edge name in mutations. + EdgePost = "post" // Table holds the table name of the user in the database. Table = "sys_users" // DepartmentTable is the table that holds the department relation/edge. DepartmentTable = "sys_users" // DepartmentInverseTable is the table name for the Department entity. // It exists in this package in order to avoid circular dependency with the "department" package. - DepartmentInverseTable = "sys_department" + DepartmentInverseTable = "sys_departments" // DepartmentColumn is the table column denoting the department relation/edge. DepartmentColumn = "department_id" + // PostTable is the table that holds the post relation/edge. + PostTable = "sys_users" + // PostInverseTable is the table name for the Post entity. + // It exists in this package in order to avoid circular dependency with the "post" package. + PostInverseTable = "sys_posts" + // PostColumn is the table column denoting the post relation/edge. + PostColumn = "post_id" ) // Columns holds all SQL columns for user fields. @@ -68,6 +79,7 @@ var Columns = []string{ FieldEmail, FieldAvatar, FieldDepartmentID, + FieldPostID, } // ValidColumn reports if the column name is valid (part of the table columns). @@ -97,6 +109,8 @@ var ( DefaultAvatar string // DefaultDepartmentID holds the default value on creation for the "department_id" field. DefaultDepartmentID uint64 + // DefaultPostID holds the default value on creation for the "post_id" field. + DefaultPostID uint64 // DefaultID holds the default value on creation for the "id" field. DefaultID func() uuid.UUID ) diff --git a/pkg/ent/user/where.go b/pkg/ent/user/where.go index cd91fd33..8a2720a7 100644 --- a/pkg/ent/user/where.go +++ b/pkg/ent/user/where.go @@ -121,6 +121,11 @@ func DepartmentID(v uint64) predicate.User { return predicate.User(sql.FieldEQ(FieldDepartmentID, v)) } +// PostID applies equality check predicate on the "post_id" field. It's identical to PostIDEQ. +func PostID(v uint64) predicate.User { + return predicate.User(sql.FieldEQ(FieldPostID, v)) +} + // CreatedAtEQ applies the EQ predicate on the "created_at" field. func CreatedAtEQ(v time.Time) predicate.User { return predicate.User(sql.FieldEQ(FieldCreatedAt, v)) @@ -891,6 +896,36 @@ func DepartmentIDNotNil() predicate.User { return predicate.User(sql.FieldNotNull(FieldDepartmentID)) } +// PostIDEQ applies the EQ predicate on the "post_id" field. +func PostIDEQ(v uint64) predicate.User { + return predicate.User(sql.FieldEQ(FieldPostID, v)) +} + +// PostIDNEQ applies the NEQ predicate on the "post_id" field. +func PostIDNEQ(v uint64) predicate.User { + return predicate.User(sql.FieldNEQ(FieldPostID, v)) +} + +// PostIDIn applies the In predicate on the "post_id" field. +func PostIDIn(vs ...uint64) predicate.User { + return predicate.User(sql.FieldIn(FieldPostID, vs...)) +} + +// PostIDNotIn applies the NotIn predicate on the "post_id" field. +func PostIDNotIn(vs ...uint64) predicate.User { + return predicate.User(sql.FieldNotIn(FieldPostID, vs...)) +} + +// PostIDIsNil applies the IsNil predicate on the "post_id" field. +func PostIDIsNil() predicate.User { + return predicate.User(sql.FieldIsNull(FieldPostID)) +} + +// PostIDNotNil applies the NotNil predicate on the "post_id" field. +func PostIDNotNil() predicate.User { + return predicate.User(sql.FieldNotNull(FieldPostID)) +} + // HasDepartment applies the HasEdge predicate on the "department" edge. func HasDepartment() predicate.User { return predicate.User(func(s *sql.Selector) { @@ -918,6 +953,33 @@ func HasDepartmentWith(preds ...predicate.Department) predicate.User { }) } +// HasPost applies the HasEdge predicate on the "post" edge. +func HasPost() predicate.User { + return predicate.User(func(s *sql.Selector) { + step := sqlgraph.NewStep( + sqlgraph.From(Table, FieldID), + sqlgraph.Edge(sqlgraph.M2O, false, PostTable, PostColumn), + ) + sqlgraph.HasNeighbors(s, step) + }) +} + +// HasPostWith applies the HasEdge predicate on the "post" edge with a given conditions (other predicates). +func HasPostWith(preds ...predicate.Post) predicate.User { + return predicate.User(func(s *sql.Selector) { + step := sqlgraph.NewStep( + sqlgraph.From(Table, FieldID), + sqlgraph.To(PostInverseTable, FieldID), + sqlgraph.Edge(sqlgraph.M2O, false, PostTable, PostColumn), + ) + sqlgraph.HasNeighborsWith(s, step, func(s *sql.Selector) { + for _, p := range preds { + p(s) + } + }) + }) +} + // And groups predicates with the AND operator between them. func And(predicates ...predicate.User) predicate.User { return predicate.User(func(s *sql.Selector) { diff --git a/pkg/ent/user_create.go b/pkg/ent/user_create.go index f7c8a7e9..7f24fe01 100644 --- a/pkg/ent/user_create.go +++ b/pkg/ent/user_create.go @@ -12,6 +12,7 @@ import ( "entgo.io/ent/schema/field" "github.com/gofrs/uuid" "github.com/suyuan32/simple-admin-core/pkg/ent/department" + "github.com/suyuan32/simple-admin-core/pkg/ent/post" "github.com/suyuan32/simple-admin-core/pkg/ent/user" ) @@ -180,6 +181,20 @@ func (uc *UserCreate) SetNillableDepartmentID(u *uint64) *UserCreate { return uc } +// SetPostID sets the "post_id" field. +func (uc *UserCreate) SetPostID(u uint64) *UserCreate { + uc.mutation.SetPostID(u) + return uc +} + +// SetNillablePostID sets the "post_id" field if the given value is not nil. +func (uc *UserCreate) SetNillablePostID(u *uint64) *UserCreate { + if u != nil { + uc.SetPostID(*u) + } + return uc +} + // SetID sets the "id" field. func (uc *UserCreate) SetID(u uuid.UUID) *UserCreate { uc.mutation.SetID(u) @@ -199,6 +214,11 @@ func (uc *UserCreate) SetDepartment(d *Department) *UserCreate { return uc.SetDepartmentID(d.ID) } +// SetPost sets the "post" edge to the Post entity. +func (uc *UserCreate) SetPost(p *Post) *UserCreate { + return uc.SetPostID(p.ID) +} + // Mutation returns the UserMutation object of the builder. func (uc *UserCreate) Mutation() *UserMutation { return uc.mutation @@ -262,6 +282,10 @@ func (uc *UserCreate) defaults() { v := user.DefaultDepartmentID uc.mutation.SetDepartmentID(v) } + if _, ok := uc.mutation.PostID(); !ok { + v := user.DefaultPostID + uc.mutation.SetPostID(v) + } if _, ok := uc.mutation.ID(); !ok { v := user.DefaultID() uc.mutation.SetID(v) @@ -397,6 +421,26 @@ func (uc *UserCreate) createSpec() (*User, *sqlgraph.CreateSpec) { _node.DepartmentID = nodes[0] _spec.Edges = append(_spec.Edges, edge) } + if nodes := uc.mutation.PostIDs(); len(nodes) > 0 { + edge := &sqlgraph.EdgeSpec{ + Rel: sqlgraph.M2O, + Inverse: false, + Table: user.PostTable, + Columns: []string{user.PostColumn}, + Bidi: false, + Target: &sqlgraph.EdgeTarget{ + IDSpec: &sqlgraph.FieldSpec{ + Type: field.TypeUint64, + Column: post.FieldID, + }, + }, + } + for _, k := range nodes { + edge.Target.Nodes = append(edge.Target.Nodes, k) + } + _node.PostID = nodes[0] + _spec.Edges = append(_spec.Edges, edge) + } return _node, _spec } diff --git a/pkg/ent/user_query.go b/pkg/ent/user_query.go index 64739a7f..f166a09c 100644 --- a/pkg/ent/user_query.go +++ b/pkg/ent/user_query.go @@ -12,6 +12,7 @@ import ( "entgo.io/ent/schema/field" "github.com/gofrs/uuid" "github.com/suyuan32/simple-admin-core/pkg/ent/department" + "github.com/suyuan32/simple-admin-core/pkg/ent/post" "github.com/suyuan32/simple-admin-core/pkg/ent/predicate" "github.com/suyuan32/simple-admin-core/pkg/ent/user" ) @@ -24,6 +25,7 @@ type UserQuery struct { inters []Interceptor predicates []predicate.User withDepartment *DepartmentQuery + withPost *PostQuery // intermediate query (i.e. traversal path). sql *sql.Selector path func(context.Context) (*sql.Selector, error) @@ -82,6 +84,28 @@ func (uq *UserQuery) QueryDepartment() *DepartmentQuery { return query } +// QueryPost chains the current query on the "post" edge. +func (uq *UserQuery) QueryPost() *PostQuery { + query := (&PostClient{config: uq.config}).Query() + query.path = func(ctx context.Context) (fromU *sql.Selector, err error) { + if err := uq.prepareQuery(ctx); err != nil { + return nil, err + } + selector := uq.sqlQuery(ctx) + if err := selector.Err(); err != nil { + return nil, err + } + step := sqlgraph.NewStep( + sqlgraph.From(user.Table, user.FieldID, selector), + sqlgraph.To(post.Table, post.FieldID), + sqlgraph.Edge(sqlgraph.M2O, false, user.PostTable, user.PostColumn), + ) + fromU = sqlgraph.SetNeighbors(uq.driver.Dialect(), step) + return fromU, nil + } + return query +} + // First returns the first User entity from the query. // Returns a *NotFoundError when no User was found. func (uq *UserQuery) First(ctx context.Context) (*User, error) { @@ -273,6 +297,7 @@ func (uq *UserQuery) Clone() *UserQuery { inters: append([]Interceptor{}, uq.inters...), predicates: append([]predicate.User{}, uq.predicates...), withDepartment: uq.withDepartment.Clone(), + withPost: uq.withPost.Clone(), // clone intermediate query. sql: uq.sql.Clone(), path: uq.path, @@ -290,6 +315,17 @@ func (uq *UserQuery) WithDepartment(opts ...func(*DepartmentQuery)) *UserQuery { return uq } +// WithPost tells the query-builder to eager-load the nodes that are connected to +// the "post" edge. The optional arguments are used to configure the query builder of the edge. +func (uq *UserQuery) WithPost(opts ...func(*PostQuery)) *UserQuery { + query := (&PostClient{config: uq.config}).Query() + for _, opt := range opts { + opt(query) + } + uq.withPost = query + return uq +} + // GroupBy is used to group vertices by one or more fields/columns. // It is often used with aggregate functions, like: count, max, mean, min, sum. // @@ -368,8 +404,9 @@ func (uq *UserQuery) sqlAll(ctx context.Context, hooks ...queryHook) ([]*User, e var ( nodes = []*User{} _spec = uq.querySpec() - loadedTypes = [1]bool{ + loadedTypes = [2]bool{ uq.withDepartment != nil, + uq.withPost != nil, } ) _spec.ScanValues = func(columns []string) ([]any, error) { @@ -396,6 +433,12 @@ func (uq *UserQuery) sqlAll(ctx context.Context, hooks ...queryHook) ([]*User, e return nil, err } } + if query := uq.withPost; query != nil { + if err := uq.loadPost(ctx, query, nodes, nil, + func(n *User, e *Post) { n.Edges.Post = e }); err != nil { + return nil, err + } + } return nodes, nil } @@ -428,6 +471,35 @@ func (uq *UserQuery) loadDepartment(ctx context.Context, query *DepartmentQuery, } return nil } +func (uq *UserQuery) loadPost(ctx context.Context, query *PostQuery, nodes []*User, init func(*User), assign func(*User, *Post)) error { + ids := make([]uint64, 0, len(nodes)) + nodeids := make(map[uint64][]*User) + for i := range nodes { + fk := nodes[i].PostID + if _, ok := nodeids[fk]; !ok { + ids = append(ids, fk) + } + nodeids[fk] = append(nodeids[fk], nodes[i]) + } + if len(ids) == 0 { + return nil + } + query.Where(post.IDIn(ids...)) + neighbors, err := query.All(ctx) + if err != nil { + return err + } + for _, n := range neighbors { + nodes, ok := nodeids[n.ID] + if !ok { + return fmt.Errorf(`unexpected foreign-key "post_id" returned %v`, n.ID) + } + for i := range nodes { + assign(nodes[i], n) + } + } + return nil +} func (uq *UserQuery) sqlCount(ctx context.Context) (int, error) { _spec := uq.querySpec() diff --git a/pkg/ent/user_update.go b/pkg/ent/user_update.go index 48a9d6c0..78b37bc2 100644 --- a/pkg/ent/user_update.go +++ b/pkg/ent/user_update.go @@ -12,6 +12,7 @@ import ( "entgo.io/ent/dialect/sql/sqlgraph" "entgo.io/ent/schema/field" "github.com/suyuan32/simple-admin-core/pkg/ent/department" + "github.com/suyuan32/simple-admin-core/pkg/ent/post" "github.com/suyuan32/simple-admin-core/pkg/ent/predicate" "github.com/suyuan32/simple-admin-core/pkg/ent/user" ) @@ -221,11 +222,36 @@ func (uu *UserUpdate) ClearDepartmentID() *UserUpdate { return uu } +// SetPostID sets the "post_id" field. +func (uu *UserUpdate) SetPostID(u uint64) *UserUpdate { + uu.mutation.SetPostID(u) + return uu +} + +// SetNillablePostID sets the "post_id" field if the given value is not nil. +func (uu *UserUpdate) SetNillablePostID(u *uint64) *UserUpdate { + if u != nil { + uu.SetPostID(*u) + } + return uu +} + +// ClearPostID clears the value of the "post_id" field. +func (uu *UserUpdate) ClearPostID() *UserUpdate { + uu.mutation.ClearPostID() + return uu +} + // SetDepartment sets the "department" edge to the Department entity. func (uu *UserUpdate) SetDepartment(d *Department) *UserUpdate { return uu.SetDepartmentID(d.ID) } +// SetPost sets the "post" edge to the Post entity. +func (uu *UserUpdate) SetPost(p *Post) *UserUpdate { + return uu.SetPostID(p.ID) +} + // Mutation returns the UserMutation object of the builder. func (uu *UserUpdate) Mutation() *UserMutation { return uu.mutation @@ -237,6 +263,12 @@ func (uu *UserUpdate) ClearDepartment() *UserUpdate { return uu } +// ClearPost clears the "post" edge to the Post entity. +func (uu *UserUpdate) ClearPost() *UserUpdate { + uu.mutation.ClearPost() + return uu +} + // Save executes the query and returns the number of nodes affected by the update operation. func (uu *UserUpdate) Save(ctx context.Context) (int, error) { uu.defaults() @@ -383,6 +415,41 @@ func (uu *UserUpdate) sqlSave(ctx context.Context) (n int, err error) { } _spec.Edges.Add = append(_spec.Edges.Add, edge) } + if uu.mutation.PostCleared() { + edge := &sqlgraph.EdgeSpec{ + Rel: sqlgraph.M2O, + Inverse: false, + Table: user.PostTable, + Columns: []string{user.PostColumn}, + Bidi: false, + Target: &sqlgraph.EdgeTarget{ + IDSpec: &sqlgraph.FieldSpec{ + Type: field.TypeUint64, + Column: post.FieldID, + }, + }, + } + _spec.Edges.Clear = append(_spec.Edges.Clear, edge) + } + if nodes := uu.mutation.PostIDs(); len(nodes) > 0 { + edge := &sqlgraph.EdgeSpec{ + Rel: sqlgraph.M2O, + Inverse: false, + Table: user.PostTable, + Columns: []string{user.PostColumn}, + Bidi: false, + Target: &sqlgraph.EdgeTarget{ + IDSpec: &sqlgraph.FieldSpec{ + Type: field.TypeUint64, + Column: post.FieldID, + }, + }, + } + for _, k := range nodes { + edge.Target.Nodes = append(edge.Target.Nodes, k) + } + _spec.Edges.Add = append(_spec.Edges.Add, edge) + } if n, err = sqlgraph.UpdateNodes(ctx, uu.driver, _spec); err != nil { if _, ok := err.(*sqlgraph.NotFoundError); ok { err = &NotFoundError{user.Label} @@ -595,11 +662,36 @@ func (uuo *UserUpdateOne) ClearDepartmentID() *UserUpdateOne { return uuo } +// SetPostID sets the "post_id" field. +func (uuo *UserUpdateOne) SetPostID(u uint64) *UserUpdateOne { + uuo.mutation.SetPostID(u) + return uuo +} + +// SetNillablePostID sets the "post_id" field if the given value is not nil. +func (uuo *UserUpdateOne) SetNillablePostID(u *uint64) *UserUpdateOne { + if u != nil { + uuo.SetPostID(*u) + } + return uuo +} + +// ClearPostID clears the value of the "post_id" field. +func (uuo *UserUpdateOne) ClearPostID() *UserUpdateOne { + uuo.mutation.ClearPostID() + return uuo +} + // SetDepartment sets the "department" edge to the Department entity. func (uuo *UserUpdateOne) SetDepartment(d *Department) *UserUpdateOne { return uuo.SetDepartmentID(d.ID) } +// SetPost sets the "post" edge to the Post entity. +func (uuo *UserUpdateOne) SetPost(p *Post) *UserUpdateOne { + return uuo.SetPostID(p.ID) +} + // Mutation returns the UserMutation object of the builder. func (uuo *UserUpdateOne) Mutation() *UserMutation { return uuo.mutation @@ -611,6 +703,12 @@ func (uuo *UserUpdateOne) ClearDepartment() *UserUpdateOne { return uuo } +// ClearPost clears the "post" edge to the Post entity. +func (uuo *UserUpdateOne) ClearPost() *UserUpdateOne { + uuo.mutation.ClearPost() + return uuo +} + // Select allows selecting one or more fields (columns) of the returned entity. // The default is selecting all fields defined in the entity schema. func (uuo *UserUpdateOne) Select(field string, fields ...string) *UserUpdateOne { @@ -781,6 +879,41 @@ func (uuo *UserUpdateOne) sqlSave(ctx context.Context) (_node *User, err error) } _spec.Edges.Add = append(_spec.Edges.Add, edge) } + if uuo.mutation.PostCleared() { + edge := &sqlgraph.EdgeSpec{ + Rel: sqlgraph.M2O, + Inverse: false, + Table: user.PostTable, + Columns: []string{user.PostColumn}, + Bidi: false, + Target: &sqlgraph.EdgeTarget{ + IDSpec: &sqlgraph.FieldSpec{ + Type: field.TypeUint64, + Column: post.FieldID, + }, + }, + } + _spec.Edges.Clear = append(_spec.Edges.Clear, edge) + } + if nodes := uuo.mutation.PostIDs(); len(nodes) > 0 { + edge := &sqlgraph.EdgeSpec{ + Rel: sqlgraph.M2O, + Inverse: false, + Table: user.PostTable, + Columns: []string{user.PostColumn}, + Bidi: false, + Target: &sqlgraph.EdgeTarget{ + IDSpec: &sqlgraph.FieldSpec{ + Type: field.TypeUint64, + Column: post.FieldID, + }, + }, + } + for _, k := range nodes { + edge.Target.Nodes = append(edge.Target.Nodes, k) + } + _spec.Edges.Add = append(_spec.Edges.Add, edge) + } _node = &User{config: uuo.config} _spec.Assign = _node.assignValues _spec.ScanValues = _node.scanValues diff --git a/rpc/core.proto b/rpc/core.proto index 4014810a..73069f34 100755 --- a/rpc/core.proto +++ b/rpc/core.proto @@ -3,16 +3,87 @@ syntax = "proto3"; package core; option go_package="./core"; -message StatusCodeReq { - uint64 id = 1; - uint32 status = 2; +message UUIDsReq { + repeated string ids = 1; } -message DepartmentListReq { +message DictionaryDetailReq { + string name = 1; +} + +message GetUserListReq { + uint64 page = 1; + uint64 page_size = 2; + string username = 3; + string nickname = 4; + string email = 5; + string mobile = 6; + uint64 role_id = 7; + uint64 department_id = 8; +} + +message ApiListReq { + uint64 page = 1; + uint64 page_size = 2; + string path = 3; + string description = 4; + string method = 5; + string group = 6; +} + +message MenuParamListResp { + uint64 total = 1; + repeated MenuParamResp data = 2; +} + +message PostListReq { uint64 page = 1; uint64 page_size = 2; string name = 3; - string leader = 4; +} + +// menu messages +message CreateOrUpdateMenuReq { + uint32 level = 1; + uint64 parent_id = 2; + string path = 3; + string name = 4; + string redirect = 5; + string component = 6; + uint32 sort = 7; + bool disabled = 8; + Meta meta = 9; + uint64 id = 10; + uint32 menu_type = 11; +} + +message MenuRoleListResp { + uint64 total = 1; + repeated MenuRoleInfo data = 2; +} + +message IDsReq { + repeated uint64 ids = 1; +} + +message BaseResp { + string msg = 1; +} + +message PostInfo { + uint64 id = 1; + int64 created_at = 2; + int64 updated_at = 3; + uint32 status = 4; + uint32 sort = 5; + string name = 6; + string code = 7; + string remark = 8; +} + +message PostListResp { + uint64 total = 1; + repeated PostInfo data = 2; } message MenuInfo { @@ -31,26 +102,59 @@ message MenuInfo { uint32 menu_type = 13; } -message MenuParamListResp { - uint64 total = 1; - repeated MenuParamResp data = 2; +// oauth message +message OauthLoginReq { + string state = 1; + string provider = 2; } -// role messages -message RoleInfo { +message ProviderInfo { uint64 id = 1; string name = 2; - string value = 3; - string default_router = 4; - uint32 status = 5; - string remark = 6; - uint32 sort = 7; - int64 createdAt = 8; + string client_id = 3; + string client_secret = 4; + string redirect_url = 5; + string scopes = 6; + string auth_url = 7; + string token_url = 8; + uint64 auth_style = 9; + string info_url = 10; + int64 created_at = 11; + int64 updated_at = 12; } -message LoginReq { - string username = 1; - string password = 2; +message DictionaryDetailList { + uint64 total = 1; + repeated DictionaryDetail data = 2; +} + +message UserInfoResp { + string id = 1; + string avatar = 2; + uint64 role_id = 3; + string mobile = 4; + string email = 5; + uint32 status = 6; + string username = 7; + string nickname = 8; + string roleName = 9; + int64 created_at = 10; + int64 updated_at = 11; + string roleValue = 12; + string home_path = 13; + string description = 14; + uint64 department_id = 15; +} + +// dictionary message +message DictionaryInfo { + uint64 id = 1; + string title = 2; + string name = 3; + uint32 status = 4; + string desc = 5; + int64 created_at = 6; + int64 updated_at = 7; } message UpdateProfileReq { @@ -62,45 +166,25 @@ message UpdateProfileReq { string description = 6; } -message GetUserListReq { - uint64 page = 1; - uint64 page_size = 2; - string username = 3; - string nickname = 4; - string email = 5; - string mobile = 6; - uint64 role_id = 7; - uint64 department_id = 8; -} - -// authorization message -message RoleMenuAuthorityReq { - uint64 role_id = 1; - repeated uint64 menu_id = 2; +message LoginReq { + string username = 1; + string password = 2; } -message DictionaryList { +message UserListResp { uint64 total = 1; - repeated DictionaryInfo data = 2; + repeated UserInfoResp data = 2; } -message DictionaryDetailReq { - string name = 1; +message PageInfoReq { + uint64 page = 1; + uint64 page_size = 2; } -message ProviderInfo { +message MenuRoleInfo { uint64 id = 1; - string name = 2; - string client_id = 3; - string client_secret = 4; - string redirect_url = 5; - string scopes = 6; - string auth_url = 7; - string token_url = 8; - uint64 auth_style = 9; - string info_url = 10; - int64 created_at = 11; - int64 updated_at = 12; + uint64 menu_id = 2; + uint64 role_id = 3; } message CallbackReq { @@ -108,70 +192,63 @@ message CallbackReq { string code = 2; } -message RoleListResp { - uint64 total = 1; - repeated RoleInfo data = 2; +message TokenListReq { + uint64 page = 1; + uint64 page_size = 2; + string username = 3; + string nickname = 4; + string email = 5; + string uuid = 6; } -message TokenInfo { - string id = 1; +// api message +message ApiInfo { + uint64 id = 1; int64 created_at = 2; int64 updated_at = 3; - string uuid = 4; - string token = 5; - string source = 6; - uint32 status = 7; - int64 expired_at = 8; + string path = 4; + string description = 5; + string group = 6; + string method = 7; } -message DictionaryDetailList { +message ApiListResp { uint64 total = 1; - repeated DictionaryDetail data = 2; -} - -// menu messages -message CreateOrUpdateMenuReq { - uint32 level = 1; - uint64 parent_id = 2; - string path = 3; - string name = 4; - string redirect = 5; - string component = 6; - uint32 sort = 7; - bool disabled = 8; - Meta meta = 9; - uint64 id = 10; - uint32 menu_type = 11; + repeated ApiInfo data = 2; } -message Meta { +message DictionaryListReq { string title = 1; - string icon = 2; - bool hide_menu = 3; - bool hide_breadcrumb = 4; - string current_active_menu = 5; - bool ignore_keep_alive = 6; - bool hide_tab = 7; - string frame_src = 8; - bool carry_param = 9; - bool hide_children_in_menu = 10; - bool affix = 11; - uint32 dynamic_level = 12; - string real_path = 13; + string name = 2; + uint64 page = 3; + uint64 page_size = 4; } -message MenuInfoList { - uint64 total = 1; - repeated MenuInfo data = 2; +// authorization message +message RoleMenuAuthorityReq { + uint64 role_id = 1; + repeated uint64 menu_id = 2; } -message OauthRedirectResp { - string url = 1; +message UUIDReq { + string id = 1; } -message TokenListResp { +message RoleListResp { uint64 total = 1; - repeated TokenInfo data = 2; + repeated RoleInfo data = 2; +} + +// role messages +message RoleInfo { + uint64 id = 1; + string name = 2; + string value = 3; + string default_router = 4; + uint32 status = 5; + string remark = 6; + uint32 sort = 7; + int64 createdAt = 8; } message LoginResp { @@ -181,48 +258,39 @@ message LoginResp { uint64 role_id = 4; } -message IDsReq { - repeated uint64 ids = 1; -} - -message UUIDsReq { - repeated string ids = 1; -} - -message DictionaryListReq { - string title = 1; - string name = 2; - uint64 page = 3; - uint64 page_size = 4; -} - -message MenuRoleInfo { - uint64 id = 1; - uint64 menu_id = 2; - uint64 role_id = 3; +// return the role's authorization menu's ids +message RoleMenuAuthorityResp { + repeated uint64 menu_id = 1; } -message CreateOrUpdateMenuParamReq { - uint64 id = 1; - uint64 menu_id = 2; - string type = 3; - string key = 4; - string value = 5; +message DepartmentListReq { + uint64 page = 1; + uint64 page_size = 2; + string name = 3; + string leader = 4; } -message ApiListResp { +message DictionaryList { uint64 total = 1; - repeated ApiInfo data = 2; + repeated DictionaryInfo data = 2; } -message PageInfoReq { - uint64 page = 1; - uint64 page_size = 2; -} +// base message +message Empty {} -message StatusCodeUUIDReq { - string id = 1; - uint32 status = 2; +message DepartmentInfo { + uint64 id = 1; + int64 created_at = 2; + int64 updated_at = 3; + uint32 status = 4; + string name = 5; + string ancestors = 6; + string leader = 7; + string phone = 8; + string email = 9; + uint32 sort = 10; + string remark = 11; + uint64 parent_id = 12; } message DictionaryDetail { @@ -236,79 +304,29 @@ message DictionaryDetail { uint64 dictionary_id = 8; } -message MenuRoleListResp { - uint64 total = 1; - repeated MenuRoleInfo data = 2; -} - -message ApiListReq { - uint64 page = 1; - uint64 page_size = 2; - string path = 3; - string description = 4; - string method = 5; - string group = 6; -} - message ChangePasswordReq { string id = 1; string old_password = 2; string new_password = 3; } -message CreateOrUpdateUserReq { - string id = 1; - string avatar = 2; - uint64 role_id = 3; - string mobile = 4; - string email = 5; - uint32 status = 6; - string username = 7; - string nickname = 8; - string password = 9; - string home_path = 10; - string description = 11; - uint64 department_id = 12; -} - -message UserInfoResp { - string id = 1; - string avatar = 2; - uint64 role_id = 3; - string mobile = 4; - string email = 5; - uint32 status = 6; - string username = 7; - string nickname = 8; - string roleName = 9; - int64 created_at = 10; - int64 updated_at = 11; - string roleValue = 12; - string home_path = 13; - string description = 14; - uint64 department_id = 15; +message OauthRedirectResp { + string url = 1; } -// api message -message ApiInfo { - uint64 id = 1; - int64 created_at = 2; - int64 updated_at = 3; - string path = 4; - string description = 5; - string group = 6; - string method = 7; +message ProviderListResp { + uint64 total = 1; + repeated ProviderInfo data = 2; } -// base message -message Empty {} - -message IDReq { +message StatusCodeReq { uint64 id = 1; + uint32 status = 2; } -message BaseResp { - string msg = 1; +message StatusCodeUUIDReq { + string id = 1; + uint32 status = 2; } message DepartmentListResp { @@ -316,53 +334,48 @@ message DepartmentListResp { repeated DepartmentInfo data = 2; } -message ProviderListResp { - uint64 total = 1; - repeated ProviderInfo data = 2; +message TokenInfo { + string id = 1; + int64 created_at = 2; + int64 updated_at = 3; + string uuid = 4; + string token = 5; + string source = 6; + uint32 status = 7; + int64 expired_at = 8; } -message TokenListReq { - uint64 page = 1; - uint64 page_size = 2; - string username = 3; - string nickname = 4; +message CreateOrUpdateUserReq { + string id = 1; + string avatar = 2; + uint64 role_id = 3; + string mobile = 4; string email = 5; - string uuid = 6; -} - -// return the role's authorization menu's ids -message RoleMenuAuthorityResp { - repeated uint64 menu_id = 1; + uint32 status = 6; + string username = 7; + string nickname = 8; + string password = 9; + string home_path = 10; + string description = 11; + uint64 department_id = 12; } -message UUIDReq { - string id = 1; +message MenuInfoList { + uint64 total = 1; + repeated MenuInfo data = 2; } -message DepartmentInfo { +message CreateOrUpdateMenuParamReq { uint64 id = 1; - int64 created_at = 2; - int64 updated_at = 3; - uint32 status = 4; - string name = 5; - string ancestors = 6; - string leader = 7; - string phone = 8; - string email = 9; - uint32 sort = 10; - string remark = 11; - uint64 parent_id = 12; + uint64 menu_id = 2; + string type = 3; + string key = 4; + string value = 5; } -// dictionary message -message DictionaryInfo { - uint64 id = 1; - string title = 2; - string name = 3; - uint32 status = 4; - string desc = 5; - int64 created_at = 6; - int64 updated_at = 7; +message TokenListResp { + uint64 total = 1; + repeated TokenInfo data = 2; } message MenuParamResp { @@ -374,15 +387,24 @@ message MenuParamResp { int64 updated_at = 6; } -// oauth message -message OauthLoginReq { - string state = 1; - string provider = 2; +message IDReq { + uint64 id = 1; } -message UserListResp { - uint64 total = 1; - repeated UserInfoResp data = 2; +message Meta { + string title = 1; + string icon = 2; + bool hide_menu = 3; + bool hide_breadcrumb = 4; + string current_active_menu = 5; + bool ignore_keep_alive = 6; + bool hide_tab = 7; + string frame_src = 8; + bool carry_param = 9; + bool hide_children_in_menu = 10; + bool affix = 11; + uint32 dynamic_level = 12; + string real_path = 13; } service Core { @@ -445,6 +467,17 @@ service Core { rpc oauthLogin(OauthLoginReq) returns (OauthRedirectResp); // group: oauth rpc oauthCallback(CallbackReq) returns (LoginResp); + // Post management + // group: post + rpc createOrUpdatePost(PostInfo) returns (BaseResp); + // group: post + rpc getPostList(PostListReq) returns (PostListResp); + // group: post + rpc deletePost(IDReq) returns (BaseResp); + // group: post + rpc batchDeletePost(IDsReq) returns (BaseResp); + // group: post + rpc updatePostStatus(StatusCodeReq) returns (BaseResp); // group: role rpc createOrUpdateRole(RoleInfo) returns (BaseResp); // group: role diff --git a/rpc/coreclient/core.go b/rpc/coreclient/core.go index 328f6e39..e19e961f 100644 --- a/rpc/coreclient/core.go +++ b/rpc/coreclient/core.go @@ -47,6 +47,9 @@ type ( OauthLoginReq = core.OauthLoginReq OauthRedirectResp = core.OauthRedirectResp PageInfoReq = core.PageInfoReq + PostInfo = core.PostInfo + PostListReq = core.PostListReq + PostListResp = core.PostListResp ProviderInfo = core.ProviderInfo ProviderListResp = core.ProviderListResp RoleInfo = core.RoleInfo @@ -95,6 +98,12 @@ type ( GetProviderList(ctx context.Context, in *PageInfoReq, opts ...grpc.CallOption) (*ProviderListResp, error) OauthLogin(ctx context.Context, in *OauthLoginReq, opts ...grpc.CallOption) (*OauthRedirectResp, error) OauthCallback(ctx context.Context, in *CallbackReq, opts ...grpc.CallOption) (*LoginResp, error) + // Post management + CreateOrUpdatePost(ctx context.Context, in *PostInfo, opts ...grpc.CallOption) (*BaseResp, error) + GetPostList(ctx context.Context, in *PostListReq, opts ...grpc.CallOption) (*PostListResp, error) + DeletePost(ctx context.Context, in *IDReq, opts ...grpc.CallOption) (*BaseResp, error) + BatchDeletePost(ctx context.Context, in *IDsReq, opts ...grpc.CallOption) (*BaseResp, error) + UpdatePostStatus(ctx context.Context, in *StatusCodeReq, opts ...grpc.CallOption) (*BaseResp, error) CreateOrUpdateRole(ctx context.Context, in *RoleInfo, opts ...grpc.CallOption) (*BaseResp, error) DeleteRole(ctx context.Context, in *IDReq, opts ...grpc.CallOption) (*BaseResp, error) GetRoleById(ctx context.Context, in *IDReq, opts ...grpc.CallOption) (*RoleInfo, error) @@ -274,6 +283,32 @@ func (m *defaultCore) OauthCallback(ctx context.Context, in *CallbackReq, opts . return client.OauthCallback(ctx, in, opts...) } +// Post management +func (m *defaultCore) CreateOrUpdatePost(ctx context.Context, in *PostInfo, opts ...grpc.CallOption) (*BaseResp, error) { + client := core.NewCoreClient(m.cli.Conn()) + return client.CreateOrUpdatePost(ctx, in, opts...) +} + +func (m *defaultCore) GetPostList(ctx context.Context, in *PostListReq, opts ...grpc.CallOption) (*PostListResp, error) { + client := core.NewCoreClient(m.cli.Conn()) + return client.GetPostList(ctx, in, opts...) +} + +func (m *defaultCore) DeletePost(ctx context.Context, in *IDReq, opts ...grpc.CallOption) (*BaseResp, error) { + client := core.NewCoreClient(m.cli.Conn()) + return client.DeletePost(ctx, in, opts...) +} + +func (m *defaultCore) BatchDeletePost(ctx context.Context, in *IDsReq, opts ...grpc.CallOption) (*BaseResp, error) { + client := core.NewCoreClient(m.cli.Conn()) + return client.BatchDeletePost(ctx, in, opts...) +} + +func (m *defaultCore) UpdatePostStatus(ctx context.Context, in *StatusCodeReq, opts ...grpc.CallOption) (*BaseResp, error) { + client := core.NewCoreClient(m.cli.Conn()) + return client.UpdatePostStatus(ctx, in, opts...) +} + func (m *defaultCore) CreateOrUpdateRole(ctx context.Context, in *RoleInfo, opts ...grpc.CallOption) (*BaseResp, error) { client := core.NewCoreClient(m.cli.Conn()) return client.CreateOrUpdateRole(ctx, in, opts...) diff --git a/rpc/desc/post.proto b/rpc/desc/post.proto new file mode 100755 index 00000000..fa896404 --- /dev/null +++ b/rpc/desc/post.proto @@ -0,0 +1,43 @@ +syntax = "proto3"; + +// Post message + +message PostInfo { + uint64 id = 1; + int64 created_at = 2; + int64 updated_at = 3; + uint32 status = 4; + uint32 sort = 5; + string name = 6; + string code = 7; + string remark = 8; +} + +message PostListResp { + uint64 total = 1; + repeated PostInfo data = 2; +} + +message PostListReq { + uint64 page = 1; + uint64 page_size = 2; + string name = 3; +} + + +service Core { + + // Post management + // group: post + rpc createOrUpdatePost (PostInfo) returns (BaseResp); + // group: post + rpc getPostList (PostListReq) returns (PostListResp); + // group: post + rpc deletePost (IDReq) returns (BaseResp); + // group: post + rpc batchDeletePost (IDsReq) returns (BaseResp); + // group: post + rpc updatePostStatus(StatusCodeReq) returns (BaseResp); + + +} \ No newline at end of file diff --git a/rpc/internal/logic/post/batch_delete_post_logic.go b/rpc/internal/logic/post/batch_delete_post_logic.go new file mode 100644 index 00000000..cae60fd7 --- /dev/null +++ b/rpc/internal/logic/post/batch_delete_post_logic.go @@ -0,0 +1,46 @@ +package post + +import ( + "context" + + "github.com/suyuan32/simple-admin-core/pkg/ent" + "github.com/suyuan32/simple-admin-core/pkg/ent/post" + "github.com/suyuan32/simple-admin-core/rpc/internal/svc" + "github.com/suyuan32/simple-admin-core/rpc/types/core" + + "github.com/zeromicro/go-zero/core/logx" + + "github.com/suyuan32/simple-admin-core/pkg/i18n" + "github.com/suyuan32/simple-admin-core/pkg/msg/logmsg" + "github.com/suyuan32/simple-admin-core/pkg/statuserr" +) + +type BatchDeletePostLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger +} + +func NewBatchDeletePostLogic(ctx context.Context, svcCtx *svc.ServiceContext) *BatchDeletePostLogic { + return &BatchDeletePostLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *BatchDeletePostLogic) BatchDeletePost(in *core.IDsReq) (*core.BaseResp, error) { + _, err := l.svcCtx.DB.Post.Delete().Where(post.IDIn(in.Ids...)).Exec(l.ctx) + if err != nil { + switch { + case ent.IsNotFound(err): + logx.Errorw(err.Error(), logx.Field("detail", in)) + return nil, statuserr.NewInvalidArgumentError(i18n.TargetNotFound) + default: + logx.Errorw(logmsg.DatabaseError, logx.Field("detail", err.Error())) + return nil, statuserr.NewInternalError(i18n.DatabaseError) + } + } + + return &core.BaseResp{Msg: i18n.DeleteSuccess}, nil +} diff --git a/rpc/internal/logic/post/create_or_update_post_logic.go b/rpc/internal/logic/post/create_or_update_post_logic.go new file mode 100644 index 00000000..b86e450e --- /dev/null +++ b/rpc/internal/logic/post/create_or_update_post_logic.go @@ -0,0 +1,76 @@ +package post + +import ( + "context" + + "github.com/suyuan32/simple-admin-core/pkg/ent" + "github.com/suyuan32/simple-admin-core/rpc/internal/svc" + "github.com/suyuan32/simple-admin-core/rpc/types/core" + + "github.com/suyuan32/simple-admin-core/pkg/i18n" + "github.com/suyuan32/simple-admin-core/pkg/msg/logmsg" + "github.com/suyuan32/simple-admin-core/pkg/statuserr" + + "github.com/zeromicro/go-zero/core/logx" +) + +type CreateOrUpdatePostLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger +} + +func NewCreateOrUpdatePostLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CreateOrUpdatePostLogic { + return &CreateOrUpdatePostLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *CreateOrUpdatePostLogic) CreateOrUpdatePost(in *core.PostInfo) (*core.BaseResp, error) { + if in.Id == 0 { + err := l.svcCtx.DB.Post.Create(). + SetStatus(uint8(in.Status)). + SetSort(in.Sort). + SetName(in.Name). + SetCode(in.Code). + SetRemark(in.Remark). + Exec(l.ctx) + if err != nil { + switch { + case ent.IsConstraintError(err): + logx.Errorw(err.Error(), logx.Field("detail", in)) + return nil, statuserr.NewInvalidArgumentError(i18n.CreateFailed) + default: + logx.Errorw(logmsg.DatabaseError, logx.Field("detail", err.Error())) + return nil, statuserr.NewInternalError(i18n.DatabaseError) + } + } + + return &core.BaseResp{Msg: i18n.CreateSuccess}, nil + } else { + err := l.svcCtx.DB.Post.UpdateOneID(in.Id). + SetStatus(uint8(in.Status)). + SetSort(in.Sort). + SetName(in.Name). + SetCode(in.Code). + SetRemark(in.Remark). + Exec(l.ctx) + if err != nil { + switch { + case ent.IsNotFound(err): + logx.Errorw(err.Error(), logx.Field("detail", in)) + return nil, statuserr.NewInvalidArgumentError(i18n.TargetNotFound) + case ent.IsConstraintError(err): + logx.Errorw(err.Error(), logx.Field("detail", in)) + return nil, statuserr.NewInvalidArgumentError(i18n.UpdateFailed) + default: + logx.Errorw(logmsg.DatabaseError, logx.Field("detail", err.Error())) + return nil, statuserr.NewInternalError(i18n.DatabaseError) + } + } + + return &core.BaseResp{Msg: i18n.UpdateSuccess}, nil + } +} diff --git a/rpc/internal/logic/post/delete_post_logic.go b/rpc/internal/logic/post/delete_post_logic.go new file mode 100644 index 00000000..0147c6c1 --- /dev/null +++ b/rpc/internal/logic/post/delete_post_logic.go @@ -0,0 +1,45 @@ +package post + +import ( + "context" + + "github.com/suyuan32/simple-admin-core/pkg/ent" + "github.com/suyuan32/simple-admin-core/rpc/internal/svc" + "github.com/suyuan32/simple-admin-core/rpc/types/core" + + "github.com/zeromicro/go-zero/core/logx" + + "github.com/suyuan32/simple-admin-core/pkg/i18n" + "github.com/suyuan32/simple-admin-core/pkg/msg/logmsg" + "github.com/suyuan32/simple-admin-core/pkg/statuserr" +) + +type DeletePostLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger +} + +func NewDeletePostLogic(ctx context.Context, svcCtx *svc.ServiceContext) *DeletePostLogic { + return &DeletePostLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *DeletePostLogic) DeletePost(in *core.IDReq) (*core.BaseResp, error) { + err := l.svcCtx.DB.Post.DeleteOneID(in.Id).Exec(l.ctx) + if err != nil { + switch { + case ent.IsNotFound(err): + logx.Errorw(err.Error(), logx.Field("detail", in)) + return nil, statuserr.NewInvalidArgumentError(i18n.TargetNotFound) + default: + logx.Errorw(logmsg.DatabaseError, logx.Field("detail", err.Error())) + return nil, statuserr.NewInternalError(i18n.DatabaseError) + } + } + + return &core.BaseResp{Msg: i18n.DeleteSuccess}, nil +} diff --git a/rpc/internal/logic/post/get_post_list_logic.go b/rpc/internal/logic/post/get_post_list_logic.go new file mode 100644 index 00000000..ec7677eb --- /dev/null +++ b/rpc/internal/logic/post/get_post_list_logic.go @@ -0,0 +1,58 @@ +package post + +import ( + "context" + + "github.com/suyuan32/simple-admin-core/pkg/ent/post" + "github.com/suyuan32/simple-admin-core/pkg/ent/predicate" + "github.com/suyuan32/simple-admin-core/rpc/internal/svc" + "github.com/suyuan32/simple-admin-core/rpc/types/core" + + "github.com/zeromicro/go-zero/core/logx" + + "github.com/suyuan32/simple-admin-core/pkg/i18n" + "github.com/suyuan32/simple-admin-core/pkg/statuserr" +) + +type GetPostListLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger +} + +func NewGetPostListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetPostListLogic { + return &GetPostListLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *GetPostListLogic) GetPostList(in *core.PostListReq) (*core.PostListResp, error) { + var predicates []predicate.Post + if in.Name != "" { + predicates = append(predicates, post.NameContains(in.Name)) + } + result, err := l.svcCtx.DB.Post.Query().Where(predicates...).Page(l.ctx, in.Page, in.PageSize) + if err != nil { + logx.Error(err.Error()) + return nil, statuserr.NewInternalError(i18n.DatabaseError) + } + + resp := &core.PostListResp{} + resp.Total = result.PageDetails.Total + + for _, v := range result.List { + resp.Data = append(resp.Data, &core.PostInfo{ + Id: v.ID, + CreatedAt: v.CreatedAt.UnixMilli(), + Status: uint32(v.Status), + Sort: v.Sort, + Name: v.Name, + Code: v.Code, + Remark: v.Remark, + }) + } + + return resp, nil +} diff --git a/rpc/internal/logic/post/update_post_status_logic.go b/rpc/internal/logic/post/update_post_status_logic.go new file mode 100644 index 00000000..cec65d8a --- /dev/null +++ b/rpc/internal/logic/post/update_post_status_logic.go @@ -0,0 +1,45 @@ +package post + +import ( + "context" + + "github.com/suyuan32/simple-admin-core/pkg/ent" + "github.com/suyuan32/simple-admin-core/rpc/internal/svc" + "github.com/suyuan32/simple-admin-core/rpc/types/core" + + "github.com/zeromicro/go-zero/core/logx" + + "github.com/suyuan32/simple-admin-core/pkg/i18n" + "github.com/suyuan32/simple-admin-core/pkg/msg/logmsg" + "github.com/suyuan32/simple-admin-core/pkg/statuserr" +) + +type UpdatePostStatusLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger +} + +func NewUpdatePostStatusLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UpdatePostStatusLogic { + return &UpdatePostStatusLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *UpdatePostStatusLogic) UpdatePostStatus(in *core.StatusCodeReq) (*core.BaseResp, error) { + err := l.svcCtx.DB.Post.UpdateOneID(in.Id).SetStatus(uint8(in.Status)).Exec(l.ctx) + if err != nil { + switch { + case ent.IsNotFound(err): + logx.Errorw(err.Error(), logx.Field("detail", in)) + return nil, statuserr.NewInvalidArgumentError(i18n.TargetNotFound) + default: + logx.Errorw(logmsg.DatabaseError, logx.Field("detail", err.Error())) + return nil, statuserr.NewInternalError(i18n.DatabaseError) + } + } + + return &core.BaseResp{Msg: i18n.UpdateSuccess}, nil +} diff --git a/rpc/internal/server/core_server.go b/rpc/internal/server/core_server.go index 2262d460..b599634d 100644 --- a/rpc/internal/server/core_server.go +++ b/rpc/internal/server/core_server.go @@ -13,6 +13,7 @@ import ( "github.com/suyuan32/simple-admin-core/rpc/internal/logic/dictionary" "github.com/suyuan32/simple-admin-core/rpc/internal/logic/menu" "github.com/suyuan32/simple-admin-core/rpc/internal/logic/oauth" + "github.com/suyuan32/simple-admin-core/rpc/internal/logic/post" "github.com/suyuan32/simple-admin-core/rpc/internal/logic/role" "github.com/suyuan32/simple-admin-core/rpc/internal/logic/token" "github.com/suyuan32/simple-admin-core/rpc/internal/logic/user" @@ -177,6 +178,32 @@ func (s *CoreServer) OauthCallback(ctx context.Context, in *core.CallbackReq) (* return l.OauthCallback(in) } +// Post management +func (s *CoreServer) CreateOrUpdatePost(ctx context.Context, in *core.PostInfo) (*core.BaseResp, error) { + l := post.NewCreateOrUpdatePostLogic(ctx, s.svcCtx) + return l.CreateOrUpdatePost(in) +} + +func (s *CoreServer) GetPostList(ctx context.Context, in *core.PostListReq) (*core.PostListResp, error) { + l := post.NewGetPostListLogic(ctx, s.svcCtx) + return l.GetPostList(in) +} + +func (s *CoreServer) DeletePost(ctx context.Context, in *core.IDReq) (*core.BaseResp, error) { + l := post.NewDeletePostLogic(ctx, s.svcCtx) + return l.DeletePost(in) +} + +func (s *CoreServer) BatchDeletePost(ctx context.Context, in *core.IDsReq) (*core.BaseResp, error) { + l := post.NewBatchDeletePostLogic(ctx, s.svcCtx) + return l.BatchDeletePost(in) +} + +func (s *CoreServer) UpdatePostStatus(ctx context.Context, in *core.StatusCodeReq) (*core.BaseResp, error) { + l := post.NewUpdatePostStatusLogic(ctx, s.svcCtx) + return l.UpdatePostStatus(in) +} + func (s *CoreServer) CreateOrUpdateRole(ctx context.Context, in *core.RoleInfo) (*core.BaseResp, error) { l := role.NewCreateOrUpdateRoleLogic(ctx, s.svcCtx) return l.CreateOrUpdateRole(in) diff --git a/rpc/types/core/core.pb.go b/rpc/types/core/core.pb.go index 21adf652..05306e3a 100644 --- a/rpc/types/core/core.pb.go +++ b/rpc/types/core/core.pb.go @@ -20,17 +20,16 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -type StatusCodeReq struct { +type UUIDsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Status uint32 `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"` + Ids []string `protobuf:"bytes,1,rep,name=ids,proto3" json:"ids,omitempty"` } -func (x *StatusCodeReq) Reset() { - *x = StatusCodeReq{} +func (x *UUIDsReq) Reset() { + *x = UUIDsReq{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -38,13 +37,13 @@ func (x *StatusCodeReq) Reset() { } } -func (x *StatusCodeReq) String() string { +func (x *UUIDsReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StatusCodeReq) ProtoMessage() {} +func (*UUIDsReq) ProtoMessage() {} -func (x *StatusCodeReq) ProtoReflect() protoreflect.Message { +func (x *UUIDsReq) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -56,38 +55,28 @@ func (x *StatusCodeReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StatusCodeReq.ProtoReflect.Descriptor instead. -func (*StatusCodeReq) Descriptor() ([]byte, []int) { +// Deprecated: Use UUIDsReq.ProtoReflect.Descriptor instead. +func (*UUIDsReq) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{0} } -func (x *StatusCodeReq) GetId() uint64 { - if x != nil { - return x.Id - } - return 0 -} - -func (x *StatusCodeReq) GetStatus() uint32 { +func (x *UUIDsReq) GetIds() []string { if x != nil { - return x.Status + return x.Ids } - return 0 + return nil } -type DepartmentListReq struct { +type DictionaryDetailReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Page uint64 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` - PageSize uint64 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` - Leader string `protobuf:"bytes,4,opt,name=leader,proto3" json:"leader,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } -func (x *DepartmentListReq) Reset() { - *x = DepartmentListReq{} +func (x *DictionaryDetailReq) Reset() { + *x = DictionaryDetailReq{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -95,13 +84,13 @@ func (x *DepartmentListReq) Reset() { } } -func (x *DepartmentListReq) String() string { +func (x *DictionaryDetailReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DepartmentListReq) ProtoMessage() {} +func (*DictionaryDetailReq) ProtoMessage() {} -func (x *DepartmentListReq) ProtoReflect() protoreflect.Message { +func (x *DictionaryDetailReq) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -113,61 +102,35 @@ func (x *DepartmentListReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DepartmentListReq.ProtoReflect.Descriptor instead. -func (*DepartmentListReq) Descriptor() ([]byte, []int) { +// Deprecated: Use DictionaryDetailReq.ProtoReflect.Descriptor instead. +func (*DictionaryDetailReq) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{1} } -func (x *DepartmentListReq) GetPage() uint64 { - if x != nil { - return x.Page - } - return 0 -} - -func (x *DepartmentListReq) GetPageSize() uint64 { - if x != nil { - return x.PageSize - } - return 0 -} - -func (x *DepartmentListReq) GetName() string { +func (x *DictionaryDetailReq) GetName() string { if x != nil { return x.Name } return "" } -func (x *DepartmentListReq) GetLeader() string { - if x != nil { - return x.Leader - } - return "" -} - -type MenuInfo struct { +type GetUserListReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - CreatedAt int64 `protobuf:"varint,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt int64 `protobuf:"varint,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - Level uint32 `protobuf:"varint,4,opt,name=level,proto3" json:"level,omitempty"` - ParentId uint64 `protobuf:"varint,5,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"` - Path string `protobuf:"bytes,6,opt,name=path,proto3" json:"path,omitempty"` - Name string `protobuf:"bytes,7,opt,name=name,proto3" json:"name,omitempty"` - Redirect string `protobuf:"bytes,8,opt,name=redirect,proto3" json:"redirect,omitempty"` - Component string `protobuf:"bytes,9,opt,name=component,proto3" json:"component,omitempty"` - Sort uint32 `protobuf:"varint,10,opt,name=sort,proto3" json:"sort,omitempty"` - Disabled bool `protobuf:"varint,11,opt,name=disabled,proto3" json:"disabled,omitempty"` - Meta *Meta `protobuf:"bytes,12,opt,name=meta,proto3" json:"meta,omitempty"` - MenuType uint32 `protobuf:"varint,13,opt,name=menu_type,json=menuType,proto3" json:"menu_type,omitempty"` + Page uint64 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` + PageSize uint64 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + Username string `protobuf:"bytes,3,opt,name=username,proto3" json:"username,omitempty"` + Nickname string `protobuf:"bytes,4,opt,name=nickname,proto3" json:"nickname,omitempty"` + Email string `protobuf:"bytes,5,opt,name=email,proto3" json:"email,omitempty"` + Mobile string `protobuf:"bytes,6,opt,name=mobile,proto3" json:"mobile,omitempty"` + RoleId uint64 `protobuf:"varint,7,opt,name=role_id,json=roleId,proto3" json:"role_id,omitempty"` + DepartmentId uint64 `protobuf:"varint,8,opt,name=department_id,json=departmentId,proto3" json:"department_id,omitempty"` } -func (x *MenuInfo) Reset() { - *x = MenuInfo{} +func (x *GetUserListReq) Reset() { + *x = GetUserListReq{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -175,13 +138,13 @@ func (x *MenuInfo) Reset() { } } -func (x *MenuInfo) String() string { +func (x *GetUserListReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MenuInfo) ProtoMessage() {} +func (*GetUserListReq) ProtoMessage() {} -func (x *MenuInfo) ProtoReflect() protoreflect.Message { +func (x *GetUserListReq) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -193,100 +156,152 @@ func (x *MenuInfo) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use MenuInfo.ProtoReflect.Descriptor instead. -func (*MenuInfo) Descriptor() ([]byte, []int) { +// Deprecated: Use GetUserListReq.ProtoReflect.Descriptor instead. +func (*GetUserListReq) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{2} } -func (x *MenuInfo) GetId() uint64 { +func (x *GetUserListReq) GetPage() uint64 { if x != nil { - return x.Id + return x.Page } return 0 } -func (x *MenuInfo) GetCreatedAt() int64 { +func (x *GetUserListReq) GetPageSize() uint64 { if x != nil { - return x.CreatedAt + return x.PageSize } return 0 } -func (x *MenuInfo) GetUpdatedAt() int64 { +func (x *GetUserListReq) GetUsername() string { if x != nil { - return x.UpdatedAt + return x.Username } - return 0 + return "" } -func (x *MenuInfo) GetLevel() uint32 { +func (x *GetUserListReq) GetNickname() string { if x != nil { - return x.Level + return x.Nickname } - return 0 + return "" } -func (x *MenuInfo) GetParentId() uint64 { +func (x *GetUserListReq) GetEmail() string { if x != nil { - return x.ParentId + return x.Email } - return 0 + return "" } -func (x *MenuInfo) GetPath() string { +func (x *GetUserListReq) GetMobile() string { if x != nil { - return x.Path + return x.Mobile } return "" } -func (x *MenuInfo) GetName() string { +func (x *GetUserListReq) GetRoleId() uint64 { if x != nil { - return x.Name + return x.RoleId } - return "" + return 0 } -func (x *MenuInfo) GetRedirect() string { +func (x *GetUserListReq) GetDepartmentId() uint64 { if x != nil { - return x.Redirect + return x.DepartmentId } - return "" + return 0 } -func (x *MenuInfo) GetComponent() string { +type ApiListReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Page uint64 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` + PageSize uint64 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` + Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` + Method string `protobuf:"bytes,5,opt,name=method,proto3" json:"method,omitempty"` + Group string `protobuf:"bytes,6,opt,name=group,proto3" json:"group,omitempty"` +} + +func (x *ApiListReq) Reset() { + *x = ApiListReq{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_core_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ApiListReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ApiListReq) ProtoMessage() {} + +func (x *ApiListReq) ProtoReflect() protoreflect.Message { + mi := &file_rpc_core_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ApiListReq.ProtoReflect.Descriptor instead. +func (*ApiListReq) Descriptor() ([]byte, []int) { + return file_rpc_core_proto_rawDescGZIP(), []int{3} +} + +func (x *ApiListReq) GetPage() uint64 { if x != nil { - return x.Component + return x.Page } - return "" + return 0 } -func (x *MenuInfo) GetSort() uint32 { +func (x *ApiListReq) GetPageSize() uint64 { if x != nil { - return x.Sort + return x.PageSize } return 0 } -func (x *MenuInfo) GetDisabled() bool { +func (x *ApiListReq) GetPath() string { if x != nil { - return x.Disabled + return x.Path } - return false + return "" } -func (x *MenuInfo) GetMeta() *Meta { +func (x *ApiListReq) GetDescription() string { if x != nil { - return x.Meta + return x.Description } - return nil + return "" } -func (x *MenuInfo) GetMenuType() uint32 { +func (x *ApiListReq) GetMethod() string { if x != nil { - return x.MenuType + return x.Method } - return 0 + return "" +} + +func (x *ApiListReq) GetGroup() string { + if x != nil { + return x.Group + } + return "" } type MenuParamListResp struct { @@ -301,7 +316,7 @@ type MenuParamListResp struct { func (x *MenuParamListResp) Reset() { *x = MenuParamListResp{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[3] + mi := &file_rpc_core_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -314,7 +329,7 @@ func (x *MenuParamListResp) String() string { func (*MenuParamListResp) ProtoMessage() {} func (x *MenuParamListResp) ProtoReflect() protoreflect.Message { - mi := &file_rpc_core_proto_msgTypes[3] + mi := &file_rpc_core_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -327,7 +342,7 @@ func (x *MenuParamListResp) ProtoReflect() protoreflect.Message { // Deprecated: Use MenuParamListResp.ProtoReflect.Descriptor instead. func (*MenuParamListResp) Descriptor() ([]byte, []int) { - return file_rpc_core_proto_rawDescGZIP(), []int{3} + return file_rpc_core_proto_rawDescGZIP(), []int{4} } func (x *MenuParamListResp) GetTotal() uint64 { @@ -344,39 +359,33 @@ func (x *MenuParamListResp) GetData() []*MenuParamResp { return nil } -// role messages -type RoleInfo struct { +type PostListReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Value string `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` - DefaultRouter string `protobuf:"bytes,4,opt,name=default_router,json=defaultRouter,proto3" json:"default_router,omitempty"` - Status uint32 `protobuf:"varint,5,opt,name=status,proto3" json:"status,omitempty"` - Remark string `protobuf:"bytes,6,opt,name=remark,proto3" json:"remark,omitempty"` - Sort uint32 `protobuf:"varint,7,opt,name=sort,proto3" json:"sort,omitempty"` - CreatedAt int64 `protobuf:"varint,8,opt,name=createdAt,proto3" json:"createdAt,omitempty"` + Page uint64 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` + PageSize uint64 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` } -func (x *RoleInfo) Reset() { - *x = RoleInfo{} +func (x *PostListReq) Reset() { + *x = PostListReq{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[4] + mi := &file_rpc_core_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *RoleInfo) String() string { +func (x *PostListReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RoleInfo) ProtoMessage() {} +func (*PostListReq) ProtoMessage() {} -func (x *RoleInfo) ProtoReflect() protoreflect.Message { - mi := &file_rpc_core_proto_msgTypes[4] +func (x *PostListReq) ProtoReflect() protoreflect.Message { + mi := &file_rpc_core_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -387,93 +396,68 @@ func (x *RoleInfo) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RoleInfo.ProtoReflect.Descriptor instead. -func (*RoleInfo) Descriptor() ([]byte, []int) { - return file_rpc_core_proto_rawDescGZIP(), []int{4} +// Deprecated: Use PostListReq.ProtoReflect.Descriptor instead. +func (*PostListReq) Descriptor() ([]byte, []int) { + return file_rpc_core_proto_rawDescGZIP(), []int{5} } -func (x *RoleInfo) GetId() uint64 { +func (x *PostListReq) GetPage() uint64 { if x != nil { - return x.Id + return x.Page } return 0 } -func (x *RoleInfo) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *RoleInfo) GetValue() string { - if x != nil { - return x.Value - } - return "" -} - -func (x *RoleInfo) GetDefaultRouter() string { - if x != nil { - return x.DefaultRouter - } - return "" -} - -func (x *RoleInfo) GetStatus() uint32 { +func (x *PostListReq) GetPageSize() uint64 { if x != nil { - return x.Status + return x.PageSize } return 0 } -func (x *RoleInfo) GetRemark() string { +func (x *PostListReq) GetName() string { if x != nil { - return x.Remark + return x.Name } return "" } -func (x *RoleInfo) GetSort() uint32 { - if x != nil { - return x.Sort - } - return 0 -} - -func (x *RoleInfo) GetCreatedAt() int64 { - if x != nil { - return x.CreatedAt - } - return 0 -} - -type LoginReq struct { +// menu messages +type CreateOrUpdateMenuReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` - Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"` + Level uint32 `protobuf:"varint,1,opt,name=level,proto3" json:"level,omitempty"` + ParentId uint64 `protobuf:"varint,2,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"` + Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` + Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` + Redirect string `protobuf:"bytes,5,opt,name=redirect,proto3" json:"redirect,omitempty"` + Component string `protobuf:"bytes,6,opt,name=component,proto3" json:"component,omitempty"` + Sort uint32 `protobuf:"varint,7,opt,name=sort,proto3" json:"sort,omitempty"` + Disabled bool `protobuf:"varint,8,opt,name=disabled,proto3" json:"disabled,omitempty"` + Meta *Meta `protobuf:"bytes,9,opt,name=meta,proto3" json:"meta,omitempty"` + Id uint64 `protobuf:"varint,10,opt,name=id,proto3" json:"id,omitempty"` + MenuType uint32 `protobuf:"varint,11,opt,name=menu_type,json=menuType,proto3" json:"menu_type,omitempty"` } -func (x *LoginReq) Reset() { - *x = LoginReq{} +func (x *CreateOrUpdateMenuReq) Reset() { + *x = CreateOrUpdateMenuReq{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[5] + mi := &file_rpc_core_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *LoginReq) String() string { +func (x *CreateOrUpdateMenuReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LoginReq) ProtoMessage() {} +func (*CreateOrUpdateMenuReq) ProtoMessage() {} -func (x *LoginReq) ProtoReflect() protoreflect.Message { - mi := &file_rpc_core_proto_msgTypes[5] +func (x *CreateOrUpdateMenuReq) ProtoReflect() protoreflect.Message { + mi := &file_rpc_core_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -484,129 +468,99 @@ func (x *LoginReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LoginReq.ProtoReflect.Descriptor instead. -func (*LoginReq) Descriptor() ([]byte, []int) { - return file_rpc_core_proto_rawDescGZIP(), []int{5} +// Deprecated: Use CreateOrUpdateMenuReq.ProtoReflect.Descriptor instead. +func (*CreateOrUpdateMenuReq) Descriptor() ([]byte, []int) { + return file_rpc_core_proto_rawDescGZIP(), []int{6} } -func (x *LoginReq) GetUsername() string { +func (x *CreateOrUpdateMenuReq) GetLevel() uint32 { if x != nil { - return x.Username + return x.Level } - return "" + return 0 } -func (x *LoginReq) GetPassword() string { +func (x *CreateOrUpdateMenuReq) GetParentId() uint64 { if x != nil { - return x.Password + return x.ParentId } - return "" -} - -type UpdateProfileReq struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Nickname string `protobuf:"bytes,2,opt,name=nickname,proto3" json:"nickname,omitempty"` - Email string `protobuf:"bytes,3,opt,name=email,proto3" json:"email,omitempty"` - Mobile string `protobuf:"bytes,4,opt,name=mobile,proto3" json:"mobile,omitempty"` - Avatar string `protobuf:"bytes,5,opt,name=avatar,proto3" json:"avatar,omitempty"` - Description string `protobuf:"bytes,6,opt,name=description,proto3" json:"description,omitempty"` + return 0 } -func (x *UpdateProfileReq) Reset() { - *x = UpdateProfileReq{} - if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *CreateOrUpdateMenuReq) GetPath() string { + if x != nil { + return x.Path } + return "" } -func (x *UpdateProfileReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpdateProfileReq) ProtoMessage() {} - -func (x *UpdateProfileReq) ProtoReflect() protoreflect.Message { - mi := &file_rpc_core_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *CreateOrUpdateMenuReq) GetName() string { + if x != nil { + return x.Name } - return mi.MessageOf(x) + return "" } -// Deprecated: Use UpdateProfileReq.ProtoReflect.Descriptor instead. -func (*UpdateProfileReq) Descriptor() ([]byte, []int) { - return file_rpc_core_proto_rawDescGZIP(), []int{6} +func (x *CreateOrUpdateMenuReq) GetRedirect() string { + if x != nil { + return x.Redirect + } + return "" } -func (x *UpdateProfileReq) GetId() string { +func (x *CreateOrUpdateMenuReq) GetComponent() string { if x != nil { - return x.Id + return x.Component } return "" } -func (x *UpdateProfileReq) GetNickname() string { +func (x *CreateOrUpdateMenuReq) GetSort() uint32 { if x != nil { - return x.Nickname + return x.Sort } - return "" + return 0 } -func (x *UpdateProfileReq) GetEmail() string { +func (x *CreateOrUpdateMenuReq) GetDisabled() bool { if x != nil { - return x.Email + return x.Disabled } - return "" + return false } -func (x *UpdateProfileReq) GetMobile() string { +func (x *CreateOrUpdateMenuReq) GetMeta() *Meta { if x != nil { - return x.Mobile + return x.Meta } - return "" + return nil } -func (x *UpdateProfileReq) GetAvatar() string { +func (x *CreateOrUpdateMenuReq) GetId() uint64 { if x != nil { - return x.Avatar + return x.Id } - return "" + return 0 } -func (x *UpdateProfileReq) GetDescription() string { +func (x *CreateOrUpdateMenuReq) GetMenuType() uint32 { if x != nil { - return x.Description + return x.MenuType } - return "" + return 0 } -type GetUserListReq struct { +type MenuRoleListResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Page uint64 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` - PageSize uint64 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` - Username string `protobuf:"bytes,3,opt,name=username,proto3" json:"username,omitempty"` - Nickname string `protobuf:"bytes,4,opt,name=nickname,proto3" json:"nickname,omitempty"` - Email string `protobuf:"bytes,5,opt,name=email,proto3" json:"email,omitempty"` - Mobile string `protobuf:"bytes,6,opt,name=mobile,proto3" json:"mobile,omitempty"` - RoleId uint64 `protobuf:"varint,7,opt,name=role_id,json=roleId,proto3" json:"role_id,omitempty"` - DepartmentId uint64 `protobuf:"varint,8,opt,name=department_id,json=departmentId,proto3" json:"department_id,omitempty"` + Total uint64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` + Data []*MenuRoleInfo `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` } -func (x *GetUserListReq) Reset() { - *x = GetUserListReq{} +func (x *MenuRoleListResp) Reset() { + *x = MenuRoleListResp{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -614,13 +568,13 @@ func (x *GetUserListReq) Reset() { } } -func (x *GetUserListReq) String() string { +func (x *MenuRoleListResp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetUserListReq) ProtoMessage() {} +func (*MenuRoleListResp) ProtoMessage() {} -func (x *GetUserListReq) ProtoReflect() protoreflect.Message { +func (x *MenuRoleListResp) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -632,94 +586,97 @@ func (x *GetUserListReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetUserListReq.ProtoReflect.Descriptor instead. -func (*GetUserListReq) Descriptor() ([]byte, []int) { +// Deprecated: Use MenuRoleListResp.ProtoReflect.Descriptor instead. +func (*MenuRoleListResp) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{7} } -func (x *GetUserListReq) GetPage() uint64 { +func (x *MenuRoleListResp) GetTotal() uint64 { if x != nil { - return x.Page + return x.Total } return 0 } -func (x *GetUserListReq) GetPageSize() uint64 { +func (x *MenuRoleListResp) GetData() []*MenuRoleInfo { if x != nil { - return x.PageSize + return x.Data } - return 0 + return nil } -func (x *GetUserListReq) GetUsername() string { - if x != nil { - return x.Username - } - return "" -} +type IDsReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *GetUserListReq) GetNickname() string { - if x != nil { - return x.Nickname - } - return "" + Ids []uint64 `protobuf:"varint,1,rep,packed,name=ids,proto3" json:"ids,omitempty"` } -func (x *GetUserListReq) GetEmail() string { - if x != nil { - return x.Email +func (x *IDsReq) Reset() { + *x = IDsReq{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_core_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *GetUserListReq) GetMobile() string { - if x != nil { - return x.Mobile - } - return "" +func (x *IDsReq) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *GetUserListReq) GetRoleId() uint64 { - if x != nil { - return x.RoleId +func (*IDsReq) ProtoMessage() {} + +func (x *IDsReq) ProtoReflect() protoreflect.Message { + mi := &file_rpc_core_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return 0 + return mi.MessageOf(x) } -func (x *GetUserListReq) GetDepartmentId() uint64 { +// Deprecated: Use IDsReq.ProtoReflect.Descriptor instead. +func (*IDsReq) Descriptor() ([]byte, []int) { + return file_rpc_core_proto_rawDescGZIP(), []int{8} +} + +func (x *IDsReq) GetIds() []uint64 { if x != nil { - return x.DepartmentId + return x.Ids } - return 0 + return nil } -// authorization message -type RoleMenuAuthorityReq struct { +type BaseResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - RoleId uint64 `protobuf:"varint,1,opt,name=role_id,json=roleId,proto3" json:"role_id,omitempty"` - MenuId []uint64 `protobuf:"varint,2,rep,packed,name=menu_id,json=menuId,proto3" json:"menu_id,omitempty"` + Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"` } -func (x *RoleMenuAuthorityReq) Reset() { - *x = RoleMenuAuthorityReq{} +func (x *BaseResp) Reset() { + *x = BaseResp{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[8] + mi := &file_rpc_core_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *RoleMenuAuthorityReq) String() string { +func (x *BaseResp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RoleMenuAuthorityReq) ProtoMessage() {} +func (*BaseResp) ProtoMessage() {} -func (x *RoleMenuAuthorityReq) ProtoReflect() protoreflect.Message { - mi := &file_rpc_core_proto_msgTypes[8] +func (x *BaseResp) ProtoReflect() protoreflect.Message { + mi := &file_rpc_core_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -730,51 +687,50 @@ func (x *RoleMenuAuthorityReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RoleMenuAuthorityReq.ProtoReflect.Descriptor instead. -func (*RoleMenuAuthorityReq) Descriptor() ([]byte, []int) { - return file_rpc_core_proto_rawDescGZIP(), []int{8} -} - -func (x *RoleMenuAuthorityReq) GetRoleId() uint64 { - if x != nil { - return x.RoleId - } - return 0 +// Deprecated: Use BaseResp.ProtoReflect.Descriptor instead. +func (*BaseResp) Descriptor() ([]byte, []int) { + return file_rpc_core_proto_rawDescGZIP(), []int{9} } -func (x *RoleMenuAuthorityReq) GetMenuId() []uint64 { +func (x *BaseResp) GetMsg() string { if x != nil { - return x.MenuId + return x.Msg } - return nil + return "" } -type DictionaryList struct { +type PostInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total uint64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` - Data []*DictionaryInfo `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + CreatedAt int64 `protobuf:"varint,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt int64 `protobuf:"varint,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Status uint32 `protobuf:"varint,4,opt,name=status,proto3" json:"status,omitempty"` + Sort uint32 `protobuf:"varint,5,opt,name=sort,proto3" json:"sort,omitempty"` + Name string `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"` + Code string `protobuf:"bytes,7,opt,name=code,proto3" json:"code,omitempty"` + Remark string `protobuf:"bytes,8,opt,name=remark,proto3" json:"remark,omitempty"` } -func (x *DictionaryList) Reset() { - *x = DictionaryList{} +func (x *PostInfo) Reset() { + *x = PostInfo{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[9] + mi := &file_rpc_core_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DictionaryList) String() string { +func (x *PostInfo) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DictionaryList) ProtoMessage() {} +func (*PostInfo) ProtoMessage() {} -func (x *DictionaryList) ProtoReflect() protoreflect.Message { - mi := &file_rpc_core_proto_msgTypes[9] +func (x *PostInfo) ProtoReflect() protoreflect.Message { + mi := &file_rpc_core_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -785,50 +741,93 @@ func (x *DictionaryList) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DictionaryList.ProtoReflect.Descriptor instead. -func (*DictionaryList) Descriptor() ([]byte, []int) { - return file_rpc_core_proto_rawDescGZIP(), []int{9} +// Deprecated: Use PostInfo.ProtoReflect.Descriptor instead. +func (*PostInfo) Descriptor() ([]byte, []int) { + return file_rpc_core_proto_rawDescGZIP(), []int{10} } -func (x *DictionaryList) GetTotal() uint64 { +func (x *PostInfo) GetId() uint64 { if x != nil { - return x.Total + return x.Id } return 0 } -func (x *DictionaryList) GetData() []*DictionaryInfo { +func (x *PostInfo) GetCreatedAt() int64 { if x != nil { - return x.Data + return x.CreatedAt } - return nil + return 0 } -type DictionaryDetailReq struct { +func (x *PostInfo) GetUpdatedAt() int64 { + if x != nil { + return x.UpdatedAt + } + return 0 +} + +func (x *PostInfo) GetStatus() uint32 { + if x != nil { + return x.Status + } + return 0 +} + +func (x *PostInfo) GetSort() uint32 { + if x != nil { + return x.Sort + } + return 0 +} + +func (x *PostInfo) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *PostInfo) GetCode() string { + if x != nil { + return x.Code + } + return "" +} + +func (x *PostInfo) GetRemark() string { + if x != nil { + return x.Remark + } + return "" +} + +type PostListResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Total uint64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` + Data []*PostInfo `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` } -func (x *DictionaryDetailReq) Reset() { - *x = DictionaryDetailReq{} +func (x *PostListResp) Reset() { + *x = PostListResp{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[10] + mi := &file_rpc_core_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DictionaryDetailReq) String() string { +func (x *PostListResp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DictionaryDetailReq) ProtoMessage() {} +func (*PostListResp) ProtoMessage() {} -func (x *DictionaryDetailReq) ProtoReflect() protoreflect.Message { - mi := &file_rpc_core_proto_msgTypes[10] +func (x *PostListResp) ProtoReflect() protoreflect.Message { + mi := &file_rpc_core_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -839,54 +838,62 @@ func (x *DictionaryDetailReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DictionaryDetailReq.ProtoReflect.Descriptor instead. -func (*DictionaryDetailReq) Descriptor() ([]byte, []int) { - return file_rpc_core_proto_rawDescGZIP(), []int{10} +// Deprecated: Use PostListResp.ProtoReflect.Descriptor instead. +func (*PostListResp) Descriptor() ([]byte, []int) { + return file_rpc_core_proto_rawDescGZIP(), []int{11} } -func (x *DictionaryDetailReq) GetName() string { +func (x *PostListResp) GetTotal() uint64 { if x != nil { - return x.Name + return x.Total } - return "" + return 0 } -type ProviderInfo struct { +func (x *PostListResp) GetData() []*PostInfo { + if x != nil { + return x.Data + } + return nil +} + +type MenuInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - ClientId string `protobuf:"bytes,3,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` - ClientSecret string `protobuf:"bytes,4,opt,name=client_secret,json=clientSecret,proto3" json:"client_secret,omitempty"` - RedirectUrl string `protobuf:"bytes,5,opt,name=redirect_url,json=redirectUrl,proto3" json:"redirect_url,omitempty"` - Scopes string `protobuf:"bytes,6,opt,name=scopes,proto3" json:"scopes,omitempty"` - AuthUrl string `protobuf:"bytes,7,opt,name=auth_url,json=authUrl,proto3" json:"auth_url,omitempty"` - TokenUrl string `protobuf:"bytes,8,opt,name=token_url,json=tokenUrl,proto3" json:"token_url,omitempty"` - AuthStyle uint64 `protobuf:"varint,9,opt,name=auth_style,json=authStyle,proto3" json:"auth_style,omitempty"` - InfoUrl string `protobuf:"bytes,10,opt,name=info_url,json=infoUrl,proto3" json:"info_url,omitempty"` - CreatedAt int64 `protobuf:"varint,11,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt int64 `protobuf:"varint,12,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + CreatedAt int64 `protobuf:"varint,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt int64 `protobuf:"varint,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Level uint32 `protobuf:"varint,4,opt,name=level,proto3" json:"level,omitempty"` + ParentId uint64 `protobuf:"varint,5,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"` + Path string `protobuf:"bytes,6,opt,name=path,proto3" json:"path,omitempty"` + Name string `protobuf:"bytes,7,opt,name=name,proto3" json:"name,omitempty"` + Redirect string `protobuf:"bytes,8,opt,name=redirect,proto3" json:"redirect,omitempty"` + Component string `protobuf:"bytes,9,opt,name=component,proto3" json:"component,omitempty"` + Sort uint32 `protobuf:"varint,10,opt,name=sort,proto3" json:"sort,omitempty"` + Disabled bool `protobuf:"varint,11,opt,name=disabled,proto3" json:"disabled,omitempty"` + Meta *Meta `protobuf:"bytes,12,opt,name=meta,proto3" json:"meta,omitempty"` + MenuType uint32 `protobuf:"varint,13,opt,name=menu_type,json=menuType,proto3" json:"menu_type,omitempty"` } -func (x *ProviderInfo) Reset() { - *x = ProviderInfo{} +func (x *MenuInfo) Reset() { + *x = MenuInfo{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[11] + mi := &file_rpc_core_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ProviderInfo) String() string { +func (x *MenuInfo) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ProviderInfo) ProtoMessage() {} +func (*MenuInfo) ProtoMessage() {} -func (x *ProviderInfo) ProtoReflect() protoreflect.Message { - mi := &file_rpc_core_proto_msgTypes[11] +func (x *MenuInfo) ProtoReflect() protoreflect.Message { + mi := &file_rpc_core_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -897,121 +904,129 @@ func (x *ProviderInfo) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ProviderInfo.ProtoReflect.Descriptor instead. -func (*ProviderInfo) Descriptor() ([]byte, []int) { - return file_rpc_core_proto_rawDescGZIP(), []int{11} +// Deprecated: Use MenuInfo.ProtoReflect.Descriptor instead. +func (*MenuInfo) Descriptor() ([]byte, []int) { + return file_rpc_core_proto_rawDescGZIP(), []int{12} } -func (x *ProviderInfo) GetId() uint64 { +func (x *MenuInfo) GetId() uint64 { if x != nil { return x.Id } return 0 } -func (x *ProviderInfo) GetName() string { +func (x *MenuInfo) GetCreatedAt() int64 { if x != nil { - return x.Name + return x.CreatedAt } - return "" + return 0 } -func (x *ProviderInfo) GetClientId() string { +func (x *MenuInfo) GetUpdatedAt() int64 { if x != nil { - return x.ClientId + return x.UpdatedAt } - return "" + return 0 } -func (x *ProviderInfo) GetClientSecret() string { +func (x *MenuInfo) GetLevel() uint32 { if x != nil { - return x.ClientSecret + return x.Level } - return "" + return 0 } -func (x *ProviderInfo) GetRedirectUrl() string { +func (x *MenuInfo) GetParentId() uint64 { if x != nil { - return x.RedirectUrl + return x.ParentId } - return "" + return 0 } -func (x *ProviderInfo) GetScopes() string { +func (x *MenuInfo) GetPath() string { if x != nil { - return x.Scopes + return x.Path } return "" } -func (x *ProviderInfo) GetAuthUrl() string { +func (x *MenuInfo) GetName() string { if x != nil { - return x.AuthUrl + return x.Name } return "" } -func (x *ProviderInfo) GetTokenUrl() string { +func (x *MenuInfo) GetRedirect() string { if x != nil { - return x.TokenUrl + return x.Redirect } return "" } -func (x *ProviderInfo) GetAuthStyle() uint64 { - if x != nil { - return x.AuthStyle - } - return 0 -} - -func (x *ProviderInfo) GetInfoUrl() string { +func (x *MenuInfo) GetComponent() string { if x != nil { - return x.InfoUrl + return x.Component } return "" } -func (x *ProviderInfo) GetCreatedAt() int64 { +func (x *MenuInfo) GetSort() uint32 { if x != nil { - return x.CreatedAt + return x.Sort } return 0 } -func (x *ProviderInfo) GetUpdatedAt() int64 { +func (x *MenuInfo) GetDisabled() bool { if x != nil { - return x.UpdatedAt + return x.Disabled + } + return false +} + +func (x *MenuInfo) GetMeta() *Meta { + if x != nil { + return x.Meta + } + return nil +} + +func (x *MenuInfo) GetMenuType() uint32 { + if x != nil { + return x.MenuType } return 0 } -type CallbackReq struct { +// oauth message +type OauthLoginReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - State string `protobuf:"bytes,1,opt,name=state,proto3" json:"state,omitempty"` - Code string `protobuf:"bytes,2,opt,name=code,proto3" json:"code,omitempty"` + State string `protobuf:"bytes,1,opt,name=state,proto3" json:"state,omitempty"` + Provider string `protobuf:"bytes,2,opt,name=provider,proto3" json:"provider,omitempty"` } -func (x *CallbackReq) Reset() { - *x = CallbackReq{} +func (x *OauthLoginReq) Reset() { + *x = OauthLoginReq{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[12] + mi := &file_rpc_core_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *CallbackReq) String() string { +func (x *OauthLoginReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CallbackReq) ProtoMessage() {} +func (*OauthLoginReq) ProtoMessage() {} -func (x *CallbackReq) ProtoReflect() protoreflect.Message { - mi := &file_rpc_core_proto_msgTypes[12] +func (x *OauthLoginReq) ProtoReflect() protoreflect.Message { + mi := &file_rpc_core_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1022,51 +1037,61 @@ func (x *CallbackReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CallbackReq.ProtoReflect.Descriptor instead. -func (*CallbackReq) Descriptor() ([]byte, []int) { - return file_rpc_core_proto_rawDescGZIP(), []int{12} +// Deprecated: Use OauthLoginReq.ProtoReflect.Descriptor instead. +func (*OauthLoginReq) Descriptor() ([]byte, []int) { + return file_rpc_core_proto_rawDescGZIP(), []int{13} } -func (x *CallbackReq) GetState() string { +func (x *OauthLoginReq) GetState() string { if x != nil { return x.State } return "" } -func (x *CallbackReq) GetCode() string { +func (x *OauthLoginReq) GetProvider() string { if x != nil { - return x.Code + return x.Provider } return "" } -type RoleListResp struct { +type ProviderInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total uint64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` - Data []*RoleInfo `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + ClientId string `protobuf:"bytes,3,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` + ClientSecret string `protobuf:"bytes,4,opt,name=client_secret,json=clientSecret,proto3" json:"client_secret,omitempty"` + RedirectUrl string `protobuf:"bytes,5,opt,name=redirect_url,json=redirectUrl,proto3" json:"redirect_url,omitempty"` + Scopes string `protobuf:"bytes,6,opt,name=scopes,proto3" json:"scopes,omitempty"` + AuthUrl string `protobuf:"bytes,7,opt,name=auth_url,json=authUrl,proto3" json:"auth_url,omitempty"` + TokenUrl string `protobuf:"bytes,8,opt,name=token_url,json=tokenUrl,proto3" json:"token_url,omitempty"` + AuthStyle uint64 `protobuf:"varint,9,opt,name=auth_style,json=authStyle,proto3" json:"auth_style,omitempty"` + InfoUrl string `protobuf:"bytes,10,opt,name=info_url,json=infoUrl,proto3" json:"info_url,omitempty"` + CreatedAt int64 `protobuf:"varint,11,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt int64 `protobuf:"varint,12,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` } -func (x *RoleListResp) Reset() { - *x = RoleListResp{} +func (x *ProviderInfo) Reset() { + *x = ProviderInfo{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[13] + mi := &file_rpc_core_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *RoleListResp) String() string { +func (x *ProviderInfo) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RoleListResp) ProtoMessage() {} +func (*ProviderInfo) ProtoMessage() {} -func (x *RoleListResp) ProtoReflect() protoreflect.Message { - mi := &file_rpc_core_proto_msgTypes[13] +func (x *ProviderInfo) ProtoReflect() protoreflect.Message { + mi := &file_rpc_core_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1077,124 +1102,91 @@ func (x *RoleListResp) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RoleListResp.ProtoReflect.Descriptor instead. -func (*RoleListResp) Descriptor() ([]byte, []int) { - return file_rpc_core_proto_rawDescGZIP(), []int{13} +// Deprecated: Use ProviderInfo.ProtoReflect.Descriptor instead. +func (*ProviderInfo) Descriptor() ([]byte, []int) { + return file_rpc_core_proto_rawDescGZIP(), []int{14} } -func (x *RoleListResp) GetTotal() uint64 { +func (x *ProviderInfo) GetId() uint64 { if x != nil { - return x.Total + return x.Id } return 0 } -func (x *RoleListResp) GetData() []*RoleInfo { +func (x *ProviderInfo) GetName() string { if x != nil { - return x.Data + return x.Name } - return nil -} - -type TokenInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - CreatedAt int64 `protobuf:"varint,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt int64 `protobuf:"varint,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - Uuid string `protobuf:"bytes,4,opt,name=uuid,proto3" json:"uuid,omitempty"` - Token string `protobuf:"bytes,5,opt,name=token,proto3" json:"token,omitempty"` - Source string `protobuf:"bytes,6,opt,name=source,proto3" json:"source,omitempty"` - Status uint32 `protobuf:"varint,7,opt,name=status,proto3" json:"status,omitempty"` - ExpiredAt int64 `protobuf:"varint,8,opt,name=expired_at,json=expiredAt,proto3" json:"expired_at,omitempty"` + return "" } -func (x *TokenInfo) Reset() { - *x = TokenInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *ProviderInfo) GetClientId() string { + if x != nil { + return x.ClientId } + return "" } -func (x *TokenInfo) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TokenInfo) ProtoMessage() {} - -func (x *TokenInfo) ProtoReflect() protoreflect.Message { - mi := &file_rpc_core_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *ProviderInfo) GetClientSecret() string { + if x != nil { + return x.ClientSecret } - return mi.MessageOf(x) -} - -// Deprecated: Use TokenInfo.ProtoReflect.Descriptor instead. -func (*TokenInfo) Descriptor() ([]byte, []int) { - return file_rpc_core_proto_rawDescGZIP(), []int{14} + return "" } -func (x *TokenInfo) GetId() string { +func (x *ProviderInfo) GetRedirectUrl() string { if x != nil { - return x.Id + return x.RedirectUrl } return "" } -func (x *TokenInfo) GetCreatedAt() int64 { +func (x *ProviderInfo) GetScopes() string { if x != nil { - return x.CreatedAt + return x.Scopes } - return 0 + return "" } -func (x *TokenInfo) GetUpdatedAt() int64 { +func (x *ProviderInfo) GetAuthUrl() string { if x != nil { - return x.UpdatedAt + return x.AuthUrl } - return 0 + return "" } -func (x *TokenInfo) GetUuid() string { +func (x *ProviderInfo) GetTokenUrl() string { if x != nil { - return x.Uuid + return x.TokenUrl } return "" } -func (x *TokenInfo) GetToken() string { +func (x *ProviderInfo) GetAuthStyle() uint64 { if x != nil { - return x.Token + return x.AuthStyle } - return "" + return 0 } -func (x *TokenInfo) GetSource() string { +func (x *ProviderInfo) GetInfoUrl() string { if x != nil { - return x.Source + return x.InfoUrl } return "" } -func (x *TokenInfo) GetStatus() uint32 { +func (x *ProviderInfo) GetCreatedAt() int64 { if x != nil { - return x.Status + return x.CreatedAt } return 0 } -func (x *TokenInfo) GetExpiredAt() int64 { +func (x *ProviderInfo) GetUpdatedAt() int64 { if x != nil { - return x.ExpiredAt + return x.UpdatedAt } return 0 } @@ -1254,27 +1246,30 @@ func (x *DictionaryDetailList) GetData() []*DictionaryDetail { return nil } -// menu messages -type CreateOrUpdateMenuReq struct { +type UserInfoResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Level uint32 `protobuf:"varint,1,opt,name=level,proto3" json:"level,omitempty"` - ParentId uint64 `protobuf:"varint,2,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"` - Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` - Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` - Redirect string `protobuf:"bytes,5,opt,name=redirect,proto3" json:"redirect,omitempty"` - Component string `protobuf:"bytes,6,opt,name=component,proto3" json:"component,omitempty"` - Sort uint32 `protobuf:"varint,7,opt,name=sort,proto3" json:"sort,omitempty"` - Disabled bool `protobuf:"varint,8,opt,name=disabled,proto3" json:"disabled,omitempty"` - Meta *Meta `protobuf:"bytes,9,opt,name=meta,proto3" json:"meta,omitempty"` - Id uint64 `protobuf:"varint,10,opt,name=id,proto3" json:"id,omitempty"` - MenuType uint32 `protobuf:"varint,11,opt,name=menu_type,json=menuType,proto3" json:"menu_type,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Avatar string `protobuf:"bytes,2,opt,name=avatar,proto3" json:"avatar,omitempty"` + RoleId uint64 `protobuf:"varint,3,opt,name=role_id,json=roleId,proto3" json:"role_id,omitempty"` + Mobile string `protobuf:"bytes,4,opt,name=mobile,proto3" json:"mobile,omitempty"` + Email string `protobuf:"bytes,5,opt,name=email,proto3" json:"email,omitempty"` + Status uint32 `protobuf:"varint,6,opt,name=status,proto3" json:"status,omitempty"` + Username string `protobuf:"bytes,7,opt,name=username,proto3" json:"username,omitempty"` + Nickname string `protobuf:"bytes,8,opt,name=nickname,proto3" json:"nickname,omitempty"` + RoleName string `protobuf:"bytes,9,opt,name=roleName,proto3" json:"roleName,omitempty"` + CreatedAt int64 `protobuf:"varint,10,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt int64 `protobuf:"varint,11,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + RoleValue string `protobuf:"bytes,12,opt,name=roleValue,proto3" json:"roleValue,omitempty"` + HomePath string `protobuf:"bytes,13,opt,name=home_path,json=homePath,proto3" json:"home_path,omitempty"` + Description string `protobuf:"bytes,14,opt,name=description,proto3" json:"description,omitempty"` + DepartmentId uint64 `protobuf:"varint,15,opt,name=department_id,json=departmentId,proto3" json:"department_id,omitempty"` } -func (x *CreateOrUpdateMenuReq) Reset() { - *x = CreateOrUpdateMenuReq{} +func (x *UserInfoResp) Reset() { + *x = UserInfoResp{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1282,13 +1277,13 @@ func (x *CreateOrUpdateMenuReq) Reset() { } } -func (x *CreateOrUpdateMenuReq) String() string { +func (x *UserInfoResp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateOrUpdateMenuReq) ProtoMessage() {} +func (*UserInfoResp) ProtoMessage() {} -func (x *CreateOrUpdateMenuReq) ProtoReflect() protoreflect.Message { +func (x *UserInfoResp) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1300,110 +1295,133 @@ func (x *CreateOrUpdateMenuReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateOrUpdateMenuReq.ProtoReflect.Descriptor instead. -func (*CreateOrUpdateMenuReq) Descriptor() ([]byte, []int) { +// Deprecated: Use UserInfoResp.ProtoReflect.Descriptor instead. +func (*UserInfoResp) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{16} } -func (x *CreateOrUpdateMenuReq) GetLevel() uint32 { +func (x *UserInfoResp) GetId() string { if x != nil { - return x.Level + return x.Id } - return 0 + return "" } -func (x *CreateOrUpdateMenuReq) GetParentId() uint64 { +func (x *UserInfoResp) GetAvatar() string { if x != nil { - return x.ParentId + return x.Avatar } - return 0 + return "" } -func (x *CreateOrUpdateMenuReq) GetPath() string { +func (x *UserInfoResp) GetRoleId() uint64 { if x != nil { - return x.Path + return x.RoleId } - return "" + return 0 } -func (x *CreateOrUpdateMenuReq) GetName() string { +func (x *UserInfoResp) GetMobile() string { if x != nil { - return x.Name + return x.Mobile } return "" } -func (x *CreateOrUpdateMenuReq) GetRedirect() string { +func (x *UserInfoResp) GetEmail() string { if x != nil { - return x.Redirect + return x.Email } return "" } -func (x *CreateOrUpdateMenuReq) GetComponent() string { +func (x *UserInfoResp) GetStatus() uint32 { if x != nil { - return x.Component + return x.Status + } + return 0 +} + +func (x *UserInfoResp) GetUsername() string { + if x != nil { + return x.Username } return "" } -func (x *CreateOrUpdateMenuReq) GetSort() uint32 { +func (x *UserInfoResp) GetNickname() string { if x != nil { - return x.Sort + return x.Nickname } - return 0 + return "" } -func (x *CreateOrUpdateMenuReq) GetDisabled() bool { +func (x *UserInfoResp) GetRoleName() string { if x != nil { - return x.Disabled + return x.RoleName } - return false + return "" } -func (x *CreateOrUpdateMenuReq) GetMeta() *Meta { +func (x *UserInfoResp) GetCreatedAt() int64 { if x != nil { - return x.Meta + return x.CreatedAt } - return nil + return 0 } -func (x *CreateOrUpdateMenuReq) GetId() uint64 { +func (x *UserInfoResp) GetUpdatedAt() int64 { if x != nil { - return x.Id + return x.UpdatedAt } return 0 } -func (x *CreateOrUpdateMenuReq) GetMenuType() uint32 { +func (x *UserInfoResp) GetRoleValue() string { if x != nil { - return x.MenuType + return x.RoleValue + } + return "" +} + +func (x *UserInfoResp) GetHomePath() string { + if x != nil { + return x.HomePath + } + return "" +} + +func (x *UserInfoResp) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *UserInfoResp) GetDepartmentId() uint64 { + if x != nil { + return x.DepartmentId } return 0 } -type Meta struct { +// dictionary message +type DictionaryInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` - Icon string `protobuf:"bytes,2,opt,name=icon,proto3" json:"icon,omitempty"` - HideMenu bool `protobuf:"varint,3,opt,name=hide_menu,json=hideMenu,proto3" json:"hide_menu,omitempty"` - HideBreadcrumb bool `protobuf:"varint,4,opt,name=hide_breadcrumb,json=hideBreadcrumb,proto3" json:"hide_breadcrumb,omitempty"` - CurrentActiveMenu string `protobuf:"bytes,5,opt,name=current_active_menu,json=currentActiveMenu,proto3" json:"current_active_menu,omitempty"` - IgnoreKeepAlive bool `protobuf:"varint,6,opt,name=ignore_keep_alive,json=ignoreKeepAlive,proto3" json:"ignore_keep_alive,omitempty"` - HideTab bool `protobuf:"varint,7,opt,name=hide_tab,json=hideTab,proto3" json:"hide_tab,omitempty"` - FrameSrc string `protobuf:"bytes,8,opt,name=frame_src,json=frameSrc,proto3" json:"frame_src,omitempty"` - CarryParam bool `protobuf:"varint,9,opt,name=carry_param,json=carryParam,proto3" json:"carry_param,omitempty"` - HideChildrenInMenu bool `protobuf:"varint,10,opt,name=hide_children_in_menu,json=hideChildrenInMenu,proto3" json:"hide_children_in_menu,omitempty"` - Affix bool `protobuf:"varint,11,opt,name=affix,proto3" json:"affix,omitempty"` - DynamicLevel uint32 `protobuf:"varint,12,opt,name=dynamic_level,json=dynamicLevel,proto3" json:"dynamic_level,omitempty"` - RealPath string `protobuf:"bytes,13,opt,name=real_path,json=realPath,proto3" json:"real_path,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Status uint32 `protobuf:"varint,4,opt,name=status,proto3" json:"status,omitempty"` + Desc string `protobuf:"bytes,5,opt,name=desc,proto3" json:"desc,omitempty"` + CreatedAt int64 `protobuf:"varint,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt int64 `protobuf:"varint,7,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` } -func (x *Meta) Reset() { - *x = Meta{} +func (x *DictionaryInfo) Reset() { + *x = DictionaryInfo{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1411,13 +1429,13 @@ func (x *Meta) Reset() { } } -func (x *Meta) String() string { +func (x *DictionaryInfo) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Meta) ProtoMessage() {} +func (*DictionaryInfo) ProtoMessage() {} -func (x *Meta) ProtoReflect() protoreflect.Message { +func (x *DictionaryInfo) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1429,113 +1447,75 @@ func (x *Meta) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Meta.ProtoReflect.Descriptor instead. -func (*Meta) Descriptor() ([]byte, []int) { +// Deprecated: Use DictionaryInfo.ProtoReflect.Descriptor instead. +func (*DictionaryInfo) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{17} } -func (x *Meta) GetTitle() string { +func (x *DictionaryInfo) GetId() uint64 { if x != nil { - return x.Title + return x.Id } - return "" + return 0 } -func (x *Meta) GetIcon() string { +func (x *DictionaryInfo) GetTitle() string { if x != nil { - return x.Icon + return x.Title } return "" } -func (x *Meta) GetHideMenu() bool { - if x != nil { - return x.HideMenu - } - return false -} - -func (x *Meta) GetHideBreadcrumb() bool { - if x != nil { - return x.HideBreadcrumb - } - return false -} - -func (x *Meta) GetCurrentActiveMenu() string { +func (x *DictionaryInfo) GetName() string { if x != nil { - return x.CurrentActiveMenu + return x.Name } return "" } -func (x *Meta) GetIgnoreKeepAlive() bool { - if x != nil { - return x.IgnoreKeepAlive - } - return false -} - -func (x *Meta) GetHideTab() bool { +func (x *DictionaryInfo) GetStatus() uint32 { if x != nil { - return x.HideTab + return x.Status } - return false + return 0 } -func (x *Meta) GetFrameSrc() string { +func (x *DictionaryInfo) GetDesc() string { if x != nil { - return x.FrameSrc + return x.Desc } return "" } -func (x *Meta) GetCarryParam() bool { - if x != nil { - return x.CarryParam - } - return false -} - -func (x *Meta) GetHideChildrenInMenu() bool { - if x != nil { - return x.HideChildrenInMenu - } - return false -} - -func (x *Meta) GetAffix() bool { - if x != nil { - return x.Affix - } - return false -} - -func (x *Meta) GetDynamicLevel() uint32 { +func (x *DictionaryInfo) GetCreatedAt() int64 { if x != nil { - return x.DynamicLevel + return x.CreatedAt } return 0 } -func (x *Meta) GetRealPath() string { +func (x *DictionaryInfo) GetUpdatedAt() int64 { if x != nil { - return x.RealPath + return x.UpdatedAt } - return "" + return 0 } -type MenuInfoList struct { +type UpdateProfileReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total uint64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` - Data []*MenuInfo `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Nickname string `protobuf:"bytes,2,opt,name=nickname,proto3" json:"nickname,omitempty"` + Email string `protobuf:"bytes,3,opt,name=email,proto3" json:"email,omitempty"` + Mobile string `protobuf:"bytes,4,opt,name=mobile,proto3" json:"mobile,omitempty"` + Avatar string `protobuf:"bytes,5,opt,name=avatar,proto3" json:"avatar,omitempty"` + Description string `protobuf:"bytes,6,opt,name=description,proto3" json:"description,omitempty"` } -func (x *MenuInfoList) Reset() { - *x = MenuInfoList{} +func (x *UpdateProfileReq) Reset() { + *x = UpdateProfileReq{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1543,13 +1523,13 @@ func (x *MenuInfoList) Reset() { } } -func (x *MenuInfoList) String() string { +func (x *UpdateProfileReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MenuInfoList) ProtoMessage() {} +func (*UpdateProfileReq) ProtoMessage() {} -func (x *MenuInfoList) ProtoReflect() protoreflect.Message { +func (x *UpdateProfileReq) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1561,35 +1541,64 @@ func (x *MenuInfoList) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use MenuInfoList.ProtoReflect.Descriptor instead. -func (*MenuInfoList) Descriptor() ([]byte, []int) { +// Deprecated: Use UpdateProfileReq.ProtoReflect.Descriptor instead. +func (*UpdateProfileReq) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{18} } -func (x *MenuInfoList) GetTotal() uint64 { +func (x *UpdateProfileReq) GetId() string { if x != nil { - return x.Total + return x.Id } - return 0 + return "" } -func (x *MenuInfoList) GetData() []*MenuInfo { +func (x *UpdateProfileReq) GetNickname() string { if x != nil { - return x.Data + return x.Nickname } - return nil + return "" } -type OauthRedirectResp struct { +func (x *UpdateProfileReq) GetEmail() string { + if x != nil { + return x.Email + } + return "" +} + +func (x *UpdateProfileReq) GetMobile() string { + if x != nil { + return x.Mobile + } + return "" +} + +func (x *UpdateProfileReq) GetAvatar() string { + if x != nil { + return x.Avatar + } + return "" +} + +func (x *UpdateProfileReq) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +type LoginReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` + Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` + Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"` } -func (x *OauthRedirectResp) Reset() { - *x = OauthRedirectResp{} +func (x *LoginReq) Reset() { + *x = LoginReq{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1597,13 +1606,13 @@ func (x *OauthRedirectResp) Reset() { } } -func (x *OauthRedirectResp) String() string { +func (x *LoginReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*OauthRedirectResp) ProtoMessage() {} +func (*LoginReq) ProtoMessage() {} -func (x *OauthRedirectResp) ProtoReflect() protoreflect.Message { +func (x *LoginReq) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1615,29 +1624,36 @@ func (x *OauthRedirectResp) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use OauthRedirectResp.ProtoReflect.Descriptor instead. -func (*OauthRedirectResp) Descriptor() ([]byte, []int) { +// Deprecated: Use LoginReq.ProtoReflect.Descriptor instead. +func (*LoginReq) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{19} } -func (x *OauthRedirectResp) GetUrl() string { +func (x *LoginReq) GetUsername() string { if x != nil { - return x.Url + return x.Username } return "" } -type TokenListResp struct { +func (x *LoginReq) GetPassword() string { + if x != nil { + return x.Password + } + return "" +} + +type UserListResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total uint64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` - Data []*TokenInfo `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` + Total uint64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` + Data []*UserInfoResp `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` } -func (x *TokenListResp) Reset() { - *x = TokenListResp{} +func (x *UserListResp) Reset() { + *x = UserListResp{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1645,13 +1661,13 @@ func (x *TokenListResp) Reset() { } } -func (x *TokenListResp) String() string { +func (x *UserListResp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TokenListResp) ProtoMessage() {} +func (*UserListResp) ProtoMessage() {} -func (x *TokenListResp) ProtoReflect() protoreflect.Message { +func (x *UserListResp) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1663,38 +1679,36 @@ func (x *TokenListResp) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TokenListResp.ProtoReflect.Descriptor instead. -func (*TokenListResp) Descriptor() ([]byte, []int) { +// Deprecated: Use UserListResp.ProtoReflect.Descriptor instead. +func (*UserListResp) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{20} } -func (x *TokenListResp) GetTotal() uint64 { +func (x *UserListResp) GetTotal() uint64 { if x != nil { return x.Total } return 0 } -func (x *TokenListResp) GetData() []*TokenInfo { +func (x *UserListResp) GetData() []*UserInfoResp { if x != nil { return x.Data } return nil } -type LoginResp struct { +type PageInfoReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - RoleName string `protobuf:"bytes,2,opt,name=role_name,json=roleName,proto3" json:"role_name,omitempty"` - RoleValue string `protobuf:"bytes,3,opt,name=role_value,json=roleValue,proto3" json:"role_value,omitempty"` - RoleId uint64 `protobuf:"varint,4,opt,name=role_id,json=roleId,proto3" json:"role_id,omitempty"` + Page uint64 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` + PageSize uint64 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` } -func (x *LoginResp) Reset() { - *x = LoginResp{} +func (x *PageInfoReq) Reset() { + *x = PageInfoReq{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1702,13 +1716,13 @@ func (x *LoginResp) Reset() { } } -func (x *LoginResp) String() string { +func (x *PageInfoReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LoginResp) ProtoMessage() {} +func (*PageInfoReq) ProtoMessage() {} -func (x *LoginResp) ProtoReflect() protoreflect.Message { +func (x *PageInfoReq) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1720,49 +1734,37 @@ func (x *LoginResp) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LoginResp.ProtoReflect.Descriptor instead. -func (*LoginResp) Descriptor() ([]byte, []int) { +// Deprecated: Use PageInfoReq.ProtoReflect.Descriptor instead. +func (*PageInfoReq) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{21} } -func (x *LoginResp) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *LoginResp) GetRoleName() string { - if x != nil { - return x.RoleName - } - return "" -} - -func (x *LoginResp) GetRoleValue() string { +func (x *PageInfoReq) GetPage() uint64 { if x != nil { - return x.RoleValue + return x.Page } - return "" + return 0 } -func (x *LoginResp) GetRoleId() uint64 { +func (x *PageInfoReq) GetPageSize() uint64 { if x != nil { - return x.RoleId + return x.PageSize } return 0 } -type IDsReq struct { +type MenuRoleInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Ids []uint64 `protobuf:"varint,1,rep,packed,name=ids,proto3" json:"ids,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + MenuId uint64 `protobuf:"varint,2,opt,name=menu_id,json=menuId,proto3" json:"menu_id,omitempty"` + RoleId uint64 `protobuf:"varint,3,opt,name=role_id,json=roleId,proto3" json:"role_id,omitempty"` } -func (x *IDsReq) Reset() { - *x = IDsReq{} +func (x *MenuRoleInfo) Reset() { + *x = MenuRoleInfo{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1770,13 +1772,13 @@ func (x *IDsReq) Reset() { } } -func (x *IDsReq) String() string { +func (x *MenuRoleInfo) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IDsReq) ProtoMessage() {} +func (*MenuRoleInfo) ProtoMessage() {} -func (x *IDsReq) ProtoReflect() protoreflect.Message { +func (x *MenuRoleInfo) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1788,28 +1790,43 @@ func (x *IDsReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IDsReq.ProtoReflect.Descriptor instead. -func (*IDsReq) Descriptor() ([]byte, []int) { +// Deprecated: Use MenuRoleInfo.ProtoReflect.Descriptor instead. +func (*MenuRoleInfo) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{22} } -func (x *IDsReq) GetIds() []uint64 { +func (x *MenuRoleInfo) GetId() uint64 { if x != nil { - return x.Ids + return x.Id } - return nil + return 0 } -type UUIDsReq struct { +func (x *MenuRoleInfo) GetMenuId() uint64 { + if x != nil { + return x.MenuId + } + return 0 +} + +func (x *MenuRoleInfo) GetRoleId() uint64 { + if x != nil { + return x.RoleId + } + return 0 +} + +type CallbackReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Ids []string `protobuf:"bytes,1,rep,name=ids,proto3" json:"ids,omitempty"` + State string `protobuf:"bytes,1,opt,name=state,proto3" json:"state,omitempty"` + Code string `protobuf:"bytes,2,opt,name=code,proto3" json:"code,omitempty"` } -func (x *UUIDsReq) Reset() { - *x = UUIDsReq{} +func (x *CallbackReq) Reset() { + *x = CallbackReq{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1817,13 +1834,13 @@ func (x *UUIDsReq) Reset() { } } -func (x *UUIDsReq) String() string { +func (x *CallbackReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UUIDsReq) ProtoMessage() {} +func (*CallbackReq) ProtoMessage() {} -func (x *UUIDsReq) ProtoReflect() protoreflect.Message { +func (x *CallbackReq) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1835,31 +1852,40 @@ func (x *UUIDsReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UUIDsReq.ProtoReflect.Descriptor instead. -func (*UUIDsReq) Descriptor() ([]byte, []int) { +// Deprecated: Use CallbackReq.ProtoReflect.Descriptor instead. +func (*CallbackReq) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{23} } -func (x *UUIDsReq) GetIds() []string { +func (x *CallbackReq) GetState() string { if x != nil { - return x.Ids + return x.State } - return nil + return "" } -type DictionaryListReq struct { +func (x *CallbackReq) GetCode() string { + if x != nil { + return x.Code + } + return "" +} + +type TokenListReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Page uint64 `protobuf:"varint,3,opt,name=page,proto3" json:"page,omitempty"` - PageSize uint64 `protobuf:"varint,4,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + Page uint64 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` + PageSize uint64 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + Username string `protobuf:"bytes,3,opt,name=username,proto3" json:"username,omitempty"` + Nickname string `protobuf:"bytes,4,opt,name=nickname,proto3" json:"nickname,omitempty"` + Email string `protobuf:"bytes,5,opt,name=email,proto3" json:"email,omitempty"` + Uuid string `protobuf:"bytes,6,opt,name=uuid,proto3" json:"uuid,omitempty"` } -func (x *DictionaryListReq) Reset() { - *x = DictionaryListReq{} +func (x *TokenListReq) Reset() { + *x = TokenListReq{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1867,13 +1893,13 @@ func (x *DictionaryListReq) Reset() { } } -func (x *DictionaryListReq) String() string { +func (x *TokenListReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DictionaryListReq) ProtoMessage() {} +func (*TokenListReq) ProtoMessage() {} -func (x *DictionaryListReq) ProtoReflect() protoreflect.Message { +func (x *TokenListReq) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1885,51 +1911,70 @@ func (x *DictionaryListReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DictionaryListReq.ProtoReflect.Descriptor instead. -func (*DictionaryListReq) Descriptor() ([]byte, []int) { +// Deprecated: Use TokenListReq.ProtoReflect.Descriptor instead. +func (*TokenListReq) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{24} } -func (x *DictionaryListReq) GetTitle() string { +func (x *TokenListReq) GetPage() uint64 { if x != nil { - return x.Title + return x.Page + } + return 0 +} + +func (x *TokenListReq) GetPageSize() uint64 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *TokenListReq) GetUsername() string { + if x != nil { + return x.Username } return "" } -func (x *DictionaryListReq) GetName() string { +func (x *TokenListReq) GetNickname() string { if x != nil { - return x.Name + return x.Nickname } return "" } -func (x *DictionaryListReq) GetPage() uint64 { +func (x *TokenListReq) GetEmail() string { if x != nil { - return x.Page + return x.Email } - return 0 + return "" } -func (x *DictionaryListReq) GetPageSize() uint64 { +func (x *TokenListReq) GetUuid() string { if x != nil { - return x.PageSize + return x.Uuid } - return 0 + return "" } -type MenuRoleInfo struct { +// api message +type ApiInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - MenuId uint64 `protobuf:"varint,2,opt,name=menu_id,json=menuId,proto3" json:"menu_id,omitempty"` - RoleId uint64 `protobuf:"varint,3,opt,name=role_id,json=roleId,proto3" json:"role_id,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + CreatedAt int64 `protobuf:"varint,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt int64 `protobuf:"varint,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Path string `protobuf:"bytes,4,opt,name=path,proto3" json:"path,omitempty"` + Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"` + Group string `protobuf:"bytes,6,opt,name=group,proto3" json:"group,omitempty"` + Method string `protobuf:"bytes,7,opt,name=method,proto3" json:"method,omitempty"` } -func (x *MenuRoleInfo) Reset() { - *x = MenuRoleInfo{} +func (x *ApiInfo) Reset() { + *x = ApiInfo{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1937,13 +1982,13 @@ func (x *MenuRoleInfo) Reset() { } } -func (x *MenuRoleInfo) String() string { +func (x *ApiInfo) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MenuRoleInfo) ProtoMessage() {} +func (*ApiInfo) ProtoMessage() {} -func (x *MenuRoleInfo) ProtoReflect() protoreflect.Message { +func (x *ApiInfo) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1955,107 +2000,56 @@ func (x *MenuRoleInfo) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use MenuRoleInfo.ProtoReflect.Descriptor instead. -func (*MenuRoleInfo) Descriptor() ([]byte, []int) { +// Deprecated: Use ApiInfo.ProtoReflect.Descriptor instead. +func (*ApiInfo) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{25} } -func (x *MenuRoleInfo) GetId() uint64 { +func (x *ApiInfo) GetId() uint64 { if x != nil { return x.Id } return 0 } -func (x *MenuRoleInfo) GetMenuId() uint64 { +func (x *ApiInfo) GetCreatedAt() int64 { if x != nil { - return x.MenuId + return x.CreatedAt } return 0 } -func (x *MenuRoleInfo) GetRoleId() uint64 { +func (x *ApiInfo) GetUpdatedAt() int64 { if x != nil { - return x.RoleId + return x.UpdatedAt } return 0 } -type CreateOrUpdateMenuParamReq struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *ApiInfo) GetPath() string { + if x != nil { + return x.Path + } + return "" +} - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - MenuId uint64 `protobuf:"varint,2,opt,name=menu_id,json=menuId,proto3" json:"menu_id,omitempty"` - Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` - Key string `protobuf:"bytes,4,opt,name=key,proto3" json:"key,omitempty"` - Value string `protobuf:"bytes,5,opt,name=value,proto3" json:"value,omitempty"` -} - -func (x *CreateOrUpdateMenuParamReq) Reset() { - *x = CreateOrUpdateMenuParamReq{} - if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CreateOrUpdateMenuParamReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CreateOrUpdateMenuParamReq) ProtoMessage() {} - -func (x *CreateOrUpdateMenuParamReq) ProtoReflect() protoreflect.Message { - mi := &file_rpc_core_proto_msgTypes[26] - 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 CreateOrUpdateMenuParamReq.ProtoReflect.Descriptor instead. -func (*CreateOrUpdateMenuParamReq) Descriptor() ([]byte, []int) { - return file_rpc_core_proto_rawDescGZIP(), []int{26} -} - -func (x *CreateOrUpdateMenuParamReq) GetId() uint64 { - if x != nil { - return x.Id - } - return 0 -} - -func (x *CreateOrUpdateMenuParamReq) GetMenuId() uint64 { - if x != nil { - return x.MenuId - } - return 0 -} - -func (x *CreateOrUpdateMenuParamReq) GetType() string { +func (x *ApiInfo) GetDescription() string { if x != nil { - return x.Type + return x.Description } return "" } -func (x *CreateOrUpdateMenuParamReq) GetKey() string { +func (x *ApiInfo) GetGroup() string { if x != nil { - return x.Key + return x.Group } return "" } -func (x *CreateOrUpdateMenuParamReq) GetValue() string { +func (x *ApiInfo) GetMethod() string { if x != nil { - return x.Value + return x.Method } return "" } @@ -2072,7 +2066,7 @@ type ApiListResp struct { func (x *ApiListResp) Reset() { *x = ApiListResp{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[27] + mi := &file_rpc_core_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2085,7 +2079,7 @@ func (x *ApiListResp) String() string { func (*ApiListResp) ProtoMessage() {} func (x *ApiListResp) ProtoReflect() protoreflect.Message { - mi := &file_rpc_core_proto_msgTypes[27] + mi := &file_rpc_core_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2098,7 +2092,7 @@ func (x *ApiListResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ApiListResp.ProtoReflect.Descriptor instead. func (*ApiListResp) Descriptor() ([]byte, []int) { - return file_rpc_core_proto_rawDescGZIP(), []int{27} + return file_rpc_core_proto_rawDescGZIP(), []int{26} } func (x *ApiListResp) GetTotal() uint64 { @@ -2115,32 +2109,34 @@ func (x *ApiListResp) GetData() []*ApiInfo { return nil } -type PageInfoReq struct { +type DictionaryListReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Page uint64 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` - PageSize uint64 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Page uint64 `protobuf:"varint,3,opt,name=page,proto3" json:"page,omitempty"` + PageSize uint64 `protobuf:"varint,4,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` } -func (x *PageInfoReq) Reset() { - *x = PageInfoReq{} +func (x *DictionaryListReq) Reset() { + *x = DictionaryListReq{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[28] + mi := &file_rpc_core_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PageInfoReq) String() string { +func (x *DictionaryListReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PageInfoReq) ProtoMessage() {} +func (*DictionaryListReq) ProtoMessage() {} -func (x *PageInfoReq) ProtoReflect() protoreflect.Message { - mi := &file_rpc_core_proto_msgTypes[28] +func (x *DictionaryListReq) ProtoReflect() protoreflect.Message { + mi := &file_rpc_core_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2151,51 +2147,66 @@ func (x *PageInfoReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PageInfoReq.ProtoReflect.Descriptor instead. -func (*PageInfoReq) Descriptor() ([]byte, []int) { - return file_rpc_core_proto_rawDescGZIP(), []int{28} +// Deprecated: Use DictionaryListReq.ProtoReflect.Descriptor instead. +func (*DictionaryListReq) Descriptor() ([]byte, []int) { + return file_rpc_core_proto_rawDescGZIP(), []int{27} } -func (x *PageInfoReq) GetPage() uint64 { +func (x *DictionaryListReq) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *DictionaryListReq) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *DictionaryListReq) GetPage() uint64 { if x != nil { return x.Page } return 0 } -func (x *PageInfoReq) GetPageSize() uint64 { +func (x *DictionaryListReq) GetPageSize() uint64 { if x != nil { return x.PageSize } return 0 } -type StatusCodeUUIDReq struct { +// authorization message +type RoleMenuAuthorityReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Status uint32 `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"` + RoleId uint64 `protobuf:"varint,1,opt,name=role_id,json=roleId,proto3" json:"role_id,omitempty"` + MenuId []uint64 `protobuf:"varint,2,rep,packed,name=menu_id,json=menuId,proto3" json:"menu_id,omitempty"` } -func (x *StatusCodeUUIDReq) Reset() { - *x = StatusCodeUUIDReq{} +func (x *RoleMenuAuthorityReq) Reset() { + *x = RoleMenuAuthorityReq{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[29] + mi := &file_rpc_core_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *StatusCodeUUIDReq) String() string { +func (x *RoleMenuAuthorityReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StatusCodeUUIDReq) ProtoMessage() {} +func (*RoleMenuAuthorityReq) ProtoMessage() {} -func (x *StatusCodeUUIDReq) ProtoReflect() protoreflect.Message { - mi := &file_rpc_core_proto_msgTypes[29] +func (x *RoleMenuAuthorityReq) ProtoReflect() protoreflect.Message { + mi := &file_rpc_core_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2206,57 +2217,50 @@ func (x *StatusCodeUUIDReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StatusCodeUUIDReq.ProtoReflect.Descriptor instead. -func (*StatusCodeUUIDReq) Descriptor() ([]byte, []int) { - return file_rpc_core_proto_rawDescGZIP(), []int{29} +// Deprecated: Use RoleMenuAuthorityReq.ProtoReflect.Descriptor instead. +func (*RoleMenuAuthorityReq) Descriptor() ([]byte, []int) { + return file_rpc_core_proto_rawDescGZIP(), []int{28} } -func (x *StatusCodeUUIDReq) GetId() string { +func (x *RoleMenuAuthorityReq) GetRoleId() uint64 { if x != nil { - return x.Id + return x.RoleId } - return "" + return 0 } -func (x *StatusCodeUUIDReq) GetStatus() uint32 { +func (x *RoleMenuAuthorityReq) GetMenuId() []uint64 { if x != nil { - return x.Status + return x.MenuId } - return 0 + return nil } -type DictionaryDetail struct { +type UUIDReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` - Key string `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"` - Value string `protobuf:"bytes,4,opt,name=value,proto3" json:"value,omitempty"` - Status uint32 `protobuf:"varint,5,opt,name=status,proto3" json:"status,omitempty"` - CreatedAt int64 `protobuf:"varint,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt int64 `protobuf:"varint,7,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - DictionaryId uint64 `protobuf:"varint,8,opt,name=dictionary_id,json=dictionaryId,proto3" json:"dictionary_id,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } -func (x *DictionaryDetail) Reset() { - *x = DictionaryDetail{} +func (x *UUIDReq) Reset() { + *x = UUIDReq{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[30] + mi := &file_rpc_core_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DictionaryDetail) String() string { +func (x *UUIDReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DictionaryDetail) ProtoMessage() {} +func (*UUIDReq) ProtoMessage() {} -func (x *DictionaryDetail) ProtoReflect() protoreflect.Message { - mi := &file_rpc_core_proto_msgTypes[30] +func (x *UUIDReq) ProtoReflect() protoreflect.Message { + mi := &file_rpc_core_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2267,78 +2271,91 @@ func (x *DictionaryDetail) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DictionaryDetail.ProtoReflect.Descriptor instead. -func (*DictionaryDetail) Descriptor() ([]byte, []int) { - return file_rpc_core_proto_rawDescGZIP(), []int{30} +// Deprecated: Use UUIDReq.ProtoReflect.Descriptor instead. +func (*UUIDReq) Descriptor() ([]byte, []int) { + return file_rpc_core_proto_rawDescGZIP(), []int{29} } -func (x *DictionaryDetail) GetId() uint64 { +func (x *UUIDReq) GetId() string { if x != nil { return x.Id } - return 0 + return "" } -func (x *DictionaryDetail) GetTitle() string { - if x != nil { - return x.Title - } - return "" +type RoleListResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Total uint64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` + Data []*RoleInfo `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` } -func (x *DictionaryDetail) GetKey() string { - if x != nil { - return x.Key +func (x *RoleListResp) Reset() { + *x = RoleListResp{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_core_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *DictionaryDetail) GetValue() string { - if x != nil { - return x.Value - } - return "" +func (x *RoleListResp) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *DictionaryDetail) GetStatus() uint32 { - if x != nil { - return x.Status +func (*RoleListResp) ProtoMessage() {} + +func (x *RoleListResp) ProtoReflect() protoreflect.Message { + mi := &file_rpc_core_proto_msgTypes[30] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return 0 + return mi.MessageOf(x) } -func (x *DictionaryDetail) GetCreatedAt() int64 { - if x != nil { - return x.CreatedAt - } - return 0 +// Deprecated: Use RoleListResp.ProtoReflect.Descriptor instead. +func (*RoleListResp) Descriptor() ([]byte, []int) { + return file_rpc_core_proto_rawDescGZIP(), []int{30} } -func (x *DictionaryDetail) GetUpdatedAt() int64 { +func (x *RoleListResp) GetTotal() uint64 { if x != nil { - return x.UpdatedAt + return x.Total } return 0 } -func (x *DictionaryDetail) GetDictionaryId() uint64 { +func (x *RoleListResp) GetData() []*RoleInfo { if x != nil { - return x.DictionaryId + return x.Data } - return 0 + return nil } -type MenuRoleListResp struct { +// role messages +type RoleInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total uint64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` - Data []*MenuRoleInfo `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Value string `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` + DefaultRouter string `protobuf:"bytes,4,opt,name=default_router,json=defaultRouter,proto3" json:"default_router,omitempty"` + Status uint32 `protobuf:"varint,5,opt,name=status,proto3" json:"status,omitempty"` + Remark string `protobuf:"bytes,6,opt,name=remark,proto3" json:"remark,omitempty"` + Sort uint32 `protobuf:"varint,7,opt,name=sort,proto3" json:"sort,omitempty"` + CreatedAt int64 `protobuf:"varint,8,opt,name=createdAt,proto3" json:"createdAt,omitempty"` } -func (x *MenuRoleListResp) Reset() { - *x = MenuRoleListResp{} +func (x *RoleInfo) Reset() { + *x = RoleInfo{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2346,13 +2363,13 @@ func (x *MenuRoleListResp) Reset() { } } -func (x *MenuRoleListResp) String() string { +func (x *RoleInfo) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MenuRoleListResp) ProtoMessage() {} +func (*RoleInfo) ProtoMessage() {} -func (x *MenuRoleListResp) ProtoReflect() protoreflect.Message { +func (x *RoleInfo) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2364,40 +2381,80 @@ func (x *MenuRoleListResp) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use MenuRoleListResp.ProtoReflect.Descriptor instead. -func (*MenuRoleListResp) Descriptor() ([]byte, []int) { +// Deprecated: Use RoleInfo.ProtoReflect.Descriptor instead. +func (*RoleInfo) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{31} } -func (x *MenuRoleListResp) GetTotal() uint64 { +func (x *RoleInfo) GetId() uint64 { if x != nil { - return x.Total + return x.Id } return 0 } -func (x *MenuRoleListResp) GetData() []*MenuRoleInfo { +func (x *RoleInfo) GetName() string { if x != nil { - return x.Data + return x.Name } - return nil + return "" } -type ApiListReq struct { +func (x *RoleInfo) GetValue() string { + if x != nil { + return x.Value + } + return "" +} + +func (x *RoleInfo) GetDefaultRouter() string { + if x != nil { + return x.DefaultRouter + } + return "" +} + +func (x *RoleInfo) GetStatus() uint32 { + if x != nil { + return x.Status + } + return 0 +} + +func (x *RoleInfo) GetRemark() string { + if x != nil { + return x.Remark + } + return "" +} + +func (x *RoleInfo) GetSort() uint32 { + if x != nil { + return x.Sort + } + return 0 +} + +func (x *RoleInfo) GetCreatedAt() int64 { + if x != nil { + return x.CreatedAt + } + return 0 +} + +type LoginResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Page uint64 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` - PageSize uint64 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` - Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` - Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` - Method string `protobuf:"bytes,5,opt,name=method,proto3" json:"method,omitempty"` - Group string `protobuf:"bytes,6,opt,name=group,proto3" json:"group,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + RoleName string `protobuf:"bytes,2,opt,name=role_name,json=roleName,proto3" json:"role_name,omitempty"` + RoleValue string `protobuf:"bytes,3,opt,name=role_value,json=roleValue,proto3" json:"role_value,omitempty"` + RoleId uint64 `protobuf:"varint,4,opt,name=role_id,json=roleId,proto3" json:"role_id,omitempty"` } -func (x *ApiListReq) Reset() { - *x = ApiListReq{} +func (x *LoginResp) Reset() { + *x = LoginResp{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2405,13 +2462,13 @@ func (x *ApiListReq) Reset() { } } -func (x *ApiListReq) String() string { +func (x *LoginResp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ApiListReq) ProtoMessage() {} +func (*LoginResp) ProtoMessage() {} -func (x *ApiListReq) ProtoReflect() protoreflect.Message { +func (x *LoginResp) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2423,65 +2480,50 @@ func (x *ApiListReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ApiListReq.ProtoReflect.Descriptor instead. -func (*ApiListReq) Descriptor() ([]byte, []int) { +// Deprecated: Use LoginResp.ProtoReflect.Descriptor instead. +func (*LoginResp) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{32} } -func (x *ApiListReq) GetPage() uint64 { - if x != nil { - return x.Page - } - return 0 -} - -func (x *ApiListReq) GetPageSize() uint64 { - if x != nil { - return x.PageSize - } - return 0 -} - -func (x *ApiListReq) GetPath() string { +func (x *LoginResp) GetId() string { if x != nil { - return x.Path + return x.Id } return "" } -func (x *ApiListReq) GetDescription() string { +func (x *LoginResp) GetRoleName() string { if x != nil { - return x.Description + return x.RoleName } return "" } -func (x *ApiListReq) GetMethod() string { +func (x *LoginResp) GetRoleValue() string { if x != nil { - return x.Method + return x.RoleValue } return "" } -func (x *ApiListReq) GetGroup() string { +func (x *LoginResp) GetRoleId() uint64 { if x != nil { - return x.Group + return x.RoleId } - return "" + return 0 } -type ChangePasswordReq struct { +// return the role's authorization menu's ids +type RoleMenuAuthorityResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - OldPassword string `protobuf:"bytes,2,opt,name=old_password,json=oldPassword,proto3" json:"old_password,omitempty"` - NewPassword string `protobuf:"bytes,3,opt,name=new_password,json=newPassword,proto3" json:"new_password,omitempty"` + MenuId []uint64 `protobuf:"varint,1,rep,packed,name=menu_id,json=menuId,proto3" json:"menu_id,omitempty"` } -func (x *ChangePasswordReq) Reset() { - *x = ChangePasswordReq{} +func (x *RoleMenuAuthorityResp) Reset() { + *x = RoleMenuAuthorityResp{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2489,13 +2531,13 @@ func (x *ChangePasswordReq) Reset() { } } -func (x *ChangePasswordReq) String() string { +func (x *RoleMenuAuthorityResp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ChangePasswordReq) ProtoMessage() {} +func (*RoleMenuAuthorityResp) ProtoMessage() {} -func (x *ChangePasswordReq) ProtoReflect() protoreflect.Message { +func (x *RoleMenuAuthorityResp) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2507,53 +2549,31 @@ func (x *ChangePasswordReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ChangePasswordReq.ProtoReflect.Descriptor instead. -func (*ChangePasswordReq) Descriptor() ([]byte, []int) { +// Deprecated: Use RoleMenuAuthorityResp.ProtoReflect.Descriptor instead. +func (*RoleMenuAuthorityResp) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{33} } -func (x *ChangePasswordReq) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *ChangePasswordReq) GetOldPassword() string { - if x != nil { - return x.OldPassword - } - return "" -} - -func (x *ChangePasswordReq) GetNewPassword() string { +func (x *RoleMenuAuthorityResp) GetMenuId() []uint64 { if x != nil { - return x.NewPassword + return x.MenuId } - return "" + return nil } -type CreateOrUpdateUserReq struct { +type DepartmentListReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Avatar string `protobuf:"bytes,2,opt,name=avatar,proto3" json:"avatar,omitempty"` - RoleId uint64 `protobuf:"varint,3,opt,name=role_id,json=roleId,proto3" json:"role_id,omitempty"` - Mobile string `protobuf:"bytes,4,opt,name=mobile,proto3" json:"mobile,omitempty"` - Email string `protobuf:"bytes,5,opt,name=email,proto3" json:"email,omitempty"` - Status uint32 `protobuf:"varint,6,opt,name=status,proto3" json:"status,omitempty"` - Username string `protobuf:"bytes,7,opt,name=username,proto3" json:"username,omitempty"` - Nickname string `protobuf:"bytes,8,opt,name=nickname,proto3" json:"nickname,omitempty"` - Password string `protobuf:"bytes,9,opt,name=password,proto3" json:"password,omitempty"` - HomePath string `protobuf:"bytes,10,opt,name=home_path,json=homePath,proto3" json:"home_path,omitempty"` - Description string `protobuf:"bytes,11,opt,name=description,proto3" json:"description,omitempty"` - DepartmentId uint64 `protobuf:"varint,12,opt,name=department_id,json=departmentId,proto3" json:"department_id,omitempty"` + Page uint64 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` + PageSize uint64 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Leader string `protobuf:"bytes,4,opt,name=leader,proto3" json:"leader,omitempty"` } -func (x *CreateOrUpdateUserReq) Reset() { - *x = CreateOrUpdateUserReq{} +func (x *DepartmentListReq) Reset() { + *x = DepartmentListReq{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2561,13 +2581,13 @@ func (x *CreateOrUpdateUserReq) Reset() { } } -func (x *CreateOrUpdateUserReq) String() string { +func (x *DepartmentListReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateOrUpdateUserReq) ProtoMessage() {} +func (*DepartmentListReq) ProtoMessage() {} -func (x *CreateOrUpdateUserReq) ProtoReflect() protoreflect.Message { +func (x *DepartmentListReq) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2579,134 +2599,118 @@ func (x *CreateOrUpdateUserReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateOrUpdateUserReq.ProtoReflect.Descriptor instead. -func (*CreateOrUpdateUserReq) Descriptor() ([]byte, []int) { +// Deprecated: Use DepartmentListReq.ProtoReflect.Descriptor instead. +func (*DepartmentListReq) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{34} } -func (x *CreateOrUpdateUserReq) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *CreateOrUpdateUserReq) GetAvatar() string { +func (x *DepartmentListReq) GetPage() uint64 { if x != nil { - return x.Avatar + return x.Page } - return "" + return 0 } -func (x *CreateOrUpdateUserReq) GetRoleId() uint64 { +func (x *DepartmentListReq) GetPageSize() uint64 { if x != nil { - return x.RoleId + return x.PageSize } return 0 } -func (x *CreateOrUpdateUserReq) GetMobile() string { +func (x *DepartmentListReq) GetName() string { if x != nil { - return x.Mobile + return x.Name } return "" } -func (x *CreateOrUpdateUserReq) GetEmail() string { +func (x *DepartmentListReq) GetLeader() string { if x != nil { - return x.Email + return x.Leader } return "" } -func (x *CreateOrUpdateUserReq) GetStatus() uint32 { - if x != nil { - return x.Status - } - return 0 +type DictionaryList struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Total uint64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` + Data []*DictionaryInfo `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` } -func (x *CreateOrUpdateUserReq) GetUsername() string { - if x != nil { - return x.Username +func (x *DictionaryList) Reset() { + *x = DictionaryList{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_core_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *CreateOrUpdateUserReq) GetNickname() string { - if x != nil { - return x.Nickname - } - return "" +func (x *DictionaryList) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *CreateOrUpdateUserReq) GetPassword() string { - if x != nil { - return x.Password +func (*DictionaryList) ProtoMessage() {} + +func (x *DictionaryList) ProtoReflect() protoreflect.Message { + mi := &file_rpc_core_proto_msgTypes[35] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -func (x *CreateOrUpdateUserReq) GetHomePath() string { - if x != nil { - return x.HomePath - } - return "" +// Deprecated: Use DictionaryList.ProtoReflect.Descriptor instead. +func (*DictionaryList) Descriptor() ([]byte, []int) { + return file_rpc_core_proto_rawDescGZIP(), []int{35} } -func (x *CreateOrUpdateUserReq) GetDescription() string { +func (x *DictionaryList) GetTotal() uint64 { if x != nil { - return x.Description + return x.Total } - return "" + return 0 } -func (x *CreateOrUpdateUserReq) GetDepartmentId() uint64 { +func (x *DictionaryList) GetData() []*DictionaryInfo { if x != nil { - return x.DepartmentId + return x.Data } - return 0 + return nil } -type UserInfoResp struct { +// base message +type Empty struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Avatar string `protobuf:"bytes,2,opt,name=avatar,proto3" json:"avatar,omitempty"` - RoleId uint64 `protobuf:"varint,3,opt,name=role_id,json=roleId,proto3" json:"role_id,omitempty"` - Mobile string `protobuf:"bytes,4,opt,name=mobile,proto3" json:"mobile,omitempty"` - Email string `protobuf:"bytes,5,opt,name=email,proto3" json:"email,omitempty"` - Status uint32 `protobuf:"varint,6,opt,name=status,proto3" json:"status,omitempty"` - Username string `protobuf:"bytes,7,opt,name=username,proto3" json:"username,omitempty"` - Nickname string `protobuf:"bytes,8,opt,name=nickname,proto3" json:"nickname,omitempty"` - RoleName string `protobuf:"bytes,9,opt,name=roleName,proto3" json:"roleName,omitempty"` - CreatedAt int64 `protobuf:"varint,10,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt int64 `protobuf:"varint,11,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - RoleValue string `protobuf:"bytes,12,opt,name=roleValue,proto3" json:"roleValue,omitempty"` - HomePath string `protobuf:"bytes,13,opt,name=home_path,json=homePath,proto3" json:"home_path,omitempty"` - Description string `protobuf:"bytes,14,opt,name=description,proto3" json:"description,omitempty"` - DepartmentId uint64 `protobuf:"varint,15,opt,name=department_id,json=departmentId,proto3" json:"department_id,omitempty"` } -func (x *UserInfoResp) Reset() { - *x = UserInfoResp{} +func (x *Empty) Reset() { + *x = Empty{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[35] + mi := &file_rpc_core_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *UserInfoResp) String() string { +func (x *Empty) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UserInfoResp) ProtoMessage() {} +func (*Empty) ProtoMessage() {} -func (x *UserInfoResp) ProtoReflect() protoreflect.Message { - mi := &file_rpc_core_proto_msgTypes[35] +func (x *Empty) ProtoReflect() protoreflect.Message { + mi := &file_rpc_core_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2717,148 +2721,178 @@ func (x *UserInfoResp) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UserInfoResp.ProtoReflect.Descriptor instead. -func (*UserInfoResp) Descriptor() ([]byte, []int) { - return file_rpc_core_proto_rawDescGZIP(), []int{35} +// Deprecated: Use Empty.ProtoReflect.Descriptor instead. +func (*Empty) Descriptor() ([]byte, []int) { + return file_rpc_core_proto_rawDescGZIP(), []int{36} } -func (x *UserInfoResp) GetId() string { - if x != nil { - return x.Id +type DepartmentInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + CreatedAt int64 `protobuf:"varint,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt int64 `protobuf:"varint,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Status uint32 `protobuf:"varint,4,opt,name=status,proto3" json:"status,omitempty"` + Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name,omitempty"` + Ancestors string `protobuf:"bytes,6,opt,name=ancestors,proto3" json:"ancestors,omitempty"` + Leader string `protobuf:"bytes,7,opt,name=leader,proto3" json:"leader,omitempty"` + Phone string `protobuf:"bytes,8,opt,name=phone,proto3" json:"phone,omitempty"` + Email string `protobuf:"bytes,9,opt,name=email,proto3" json:"email,omitempty"` + Sort uint32 `protobuf:"varint,10,opt,name=sort,proto3" json:"sort,omitempty"` + Remark string `protobuf:"bytes,11,opt,name=remark,proto3" json:"remark,omitempty"` + ParentId uint64 `protobuf:"varint,12,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"` +} + +func (x *DepartmentInfo) Reset() { + *x = DepartmentInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_core_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *UserInfoResp) GetAvatar() string { - if x != nil { - return x.Avatar +func (x *DepartmentInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DepartmentInfo) ProtoMessage() {} + +func (x *DepartmentInfo) ProtoReflect() protoreflect.Message { + mi := &file_rpc_core_proto_msgTypes[37] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -func (x *UserInfoResp) GetRoleId() uint64 { +// Deprecated: Use DepartmentInfo.ProtoReflect.Descriptor instead. +func (*DepartmentInfo) Descriptor() ([]byte, []int) { + return file_rpc_core_proto_rawDescGZIP(), []int{37} +} + +func (x *DepartmentInfo) GetId() uint64 { if x != nil { - return x.RoleId + return x.Id } return 0 } -func (x *UserInfoResp) GetMobile() string { +func (x *DepartmentInfo) GetCreatedAt() int64 { if x != nil { - return x.Mobile + return x.CreatedAt } - return "" + return 0 } -func (x *UserInfoResp) GetEmail() string { +func (x *DepartmentInfo) GetUpdatedAt() int64 { if x != nil { - return x.Email + return x.UpdatedAt } - return "" + return 0 } -func (x *UserInfoResp) GetStatus() uint32 { +func (x *DepartmentInfo) GetStatus() uint32 { if x != nil { return x.Status } return 0 } -func (x *UserInfoResp) GetUsername() string { +func (x *DepartmentInfo) GetName() string { if x != nil { - return x.Username + return x.Name } return "" } -func (x *UserInfoResp) GetNickname() string { +func (x *DepartmentInfo) GetAncestors() string { if x != nil { - return x.Nickname + return x.Ancestors } return "" } -func (x *UserInfoResp) GetRoleName() string { +func (x *DepartmentInfo) GetLeader() string { if x != nil { - return x.RoleName + return x.Leader } return "" } -func (x *UserInfoResp) GetCreatedAt() int64 { - if x != nil { - return x.CreatedAt - } - return 0 -} - -func (x *UserInfoResp) GetUpdatedAt() int64 { +func (x *DepartmentInfo) GetPhone() string { if x != nil { - return x.UpdatedAt + return x.Phone } - return 0 + return "" } -func (x *UserInfoResp) GetRoleValue() string { +func (x *DepartmentInfo) GetEmail() string { if x != nil { - return x.RoleValue + return x.Email } return "" } -func (x *UserInfoResp) GetHomePath() string { +func (x *DepartmentInfo) GetSort() uint32 { if x != nil { - return x.HomePath + return x.Sort } - return "" + return 0 } -func (x *UserInfoResp) GetDescription() string { +func (x *DepartmentInfo) GetRemark() string { if x != nil { - return x.Description + return x.Remark } return "" } -func (x *UserInfoResp) GetDepartmentId() uint64 { +func (x *DepartmentInfo) GetParentId() uint64 { if x != nil { - return x.DepartmentId + return x.ParentId } return 0 } -// api message -type ApiInfo struct { +type DictionaryDetail struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - CreatedAt int64 `protobuf:"varint,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt int64 `protobuf:"varint,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - Path string `protobuf:"bytes,4,opt,name=path,proto3" json:"path,omitempty"` - Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"` - Group string `protobuf:"bytes,6,opt,name=group,proto3" json:"group,omitempty"` - Method string `protobuf:"bytes,7,opt,name=method,proto3" json:"method,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + Key string `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"` + Value string `protobuf:"bytes,4,opt,name=value,proto3" json:"value,omitempty"` + Status uint32 `protobuf:"varint,5,opt,name=status,proto3" json:"status,omitempty"` + CreatedAt int64 `protobuf:"varint,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt int64 `protobuf:"varint,7,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + DictionaryId uint64 `protobuf:"varint,8,opt,name=dictionary_id,json=dictionaryId,proto3" json:"dictionary_id,omitempty"` } -func (x *ApiInfo) Reset() { - *x = ApiInfo{} +func (x *DictionaryDetail) Reset() { + *x = DictionaryDetail{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[36] + mi := &file_rpc_core_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ApiInfo) String() string { +func (x *DictionaryDetail) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ApiInfo) ProtoMessage() {} +func (*DictionaryDetail) ProtoMessage() {} -func (x *ApiInfo) ProtoReflect() protoreflect.Message { - mi := &file_rpc_core_proto_msgTypes[36] +func (x *DictionaryDetail) ProtoReflect() protoreflect.Message { + mi := &file_rpc_core_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2869,124 +2903,94 @@ func (x *ApiInfo) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ApiInfo.ProtoReflect.Descriptor instead. -func (*ApiInfo) Descriptor() ([]byte, []int) { - return file_rpc_core_proto_rawDescGZIP(), []int{36} +// Deprecated: Use DictionaryDetail.ProtoReflect.Descriptor instead. +func (*DictionaryDetail) Descriptor() ([]byte, []int) { + return file_rpc_core_proto_rawDescGZIP(), []int{38} } -func (x *ApiInfo) GetId() uint64 { +func (x *DictionaryDetail) GetId() uint64 { if x != nil { return x.Id } return 0 } -func (x *ApiInfo) GetCreatedAt() int64 { +func (x *DictionaryDetail) GetTitle() string { if x != nil { - return x.CreatedAt + return x.Title } - return 0 + return "" } -func (x *ApiInfo) GetUpdatedAt() int64 { +func (x *DictionaryDetail) GetKey() string { if x != nil { - return x.UpdatedAt + return x.Key } - return 0 + return "" } -func (x *ApiInfo) GetPath() string { +func (x *DictionaryDetail) GetValue() string { if x != nil { - return x.Path + return x.Value } return "" } -func (x *ApiInfo) GetDescription() string { +func (x *DictionaryDetail) GetStatus() uint32 { if x != nil { - return x.Description + return x.Status } - return "" + return 0 } -func (x *ApiInfo) GetGroup() string { +func (x *DictionaryDetail) GetCreatedAt() int64 { if x != nil { - return x.Group + return x.CreatedAt } - return "" + return 0 } -func (x *ApiInfo) GetMethod() string { +func (x *DictionaryDetail) GetUpdatedAt() int64 { if x != nil { - return x.Method - } - return "" -} - -// base message -type Empty struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *Empty) Reset() { - *x = Empty{} - if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[37] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + return x.UpdatedAt } + return 0 } -func (x *Empty) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Empty) ProtoMessage() {} - -func (x *Empty) ProtoReflect() protoreflect.Message { - mi := &file_rpc_core_proto_msgTypes[37] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *DictionaryDetail) GetDictionaryId() uint64 { + if x != nil { + return x.DictionaryId } - return mi.MessageOf(x) -} - -// Deprecated: Use Empty.ProtoReflect.Descriptor instead. -func (*Empty) Descriptor() ([]byte, []int) { - return file_rpc_core_proto_rawDescGZIP(), []int{37} + return 0 } -type IDReq struct { +type ChangePasswordReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + OldPassword string `protobuf:"bytes,2,opt,name=old_password,json=oldPassword,proto3" json:"old_password,omitempty"` + NewPassword string `protobuf:"bytes,3,opt,name=new_password,json=newPassword,proto3" json:"new_password,omitempty"` } -func (x *IDReq) Reset() { - *x = IDReq{} +func (x *ChangePasswordReq) Reset() { + *x = ChangePasswordReq{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[38] + mi := &file_rpc_core_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IDReq) String() string { +func (x *ChangePasswordReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IDReq) ProtoMessage() {} +func (*ChangePasswordReq) ProtoMessage() {} -func (x *IDReq) ProtoReflect() protoreflect.Message { - mi := &file_rpc_core_proto_msgTypes[38] +func (x *ChangePasswordReq) ProtoReflect() protoreflect.Message { + mi := &file_rpc_core_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2997,76 +3001,42 @@ func (x *IDReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IDReq.ProtoReflect.Descriptor instead. -func (*IDReq) Descriptor() ([]byte, []int) { - return file_rpc_core_proto_rawDescGZIP(), []int{38} +// Deprecated: Use ChangePasswordReq.ProtoReflect.Descriptor instead. +func (*ChangePasswordReq) Descriptor() ([]byte, []int) { + return file_rpc_core_proto_rawDescGZIP(), []int{39} } -func (x *IDReq) GetId() uint64 { +func (x *ChangePasswordReq) GetId() string { if x != nil { return x.Id } - return 0 -} - -type BaseResp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"` -} - -func (x *BaseResp) Reset() { - *x = BaseResp{} - if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[39] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BaseResp) String() string { - return protoimpl.X.MessageStringOf(x) + return "" } -func (*BaseResp) ProtoMessage() {} - -func (x *BaseResp) ProtoReflect() protoreflect.Message { - mi := &file_rpc_core_proto_msgTypes[39] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *ChangePasswordReq) GetOldPassword() string { + if x != nil { + return x.OldPassword } - return mi.MessageOf(x) -} - -// Deprecated: Use BaseResp.ProtoReflect.Descriptor instead. -func (*BaseResp) Descriptor() ([]byte, []int) { - return file_rpc_core_proto_rawDescGZIP(), []int{39} + return "" } -func (x *BaseResp) GetMsg() string { +func (x *ChangePasswordReq) GetNewPassword() string { if x != nil { - return x.Msg + return x.NewPassword } return "" } -type DepartmentListResp struct { +type OauthRedirectResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total uint64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` - Data []*DepartmentInfo `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` + Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` } -func (x *DepartmentListResp) Reset() { - *x = DepartmentListResp{} +func (x *OauthRedirectResp) Reset() { + *x = OauthRedirectResp{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3074,13 +3044,13 @@ func (x *DepartmentListResp) Reset() { } } -func (x *DepartmentListResp) String() string { +func (x *OauthRedirectResp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DepartmentListResp) ProtoMessage() {} +func (*OauthRedirectResp) ProtoMessage() {} -func (x *DepartmentListResp) ProtoReflect() protoreflect.Message { +func (x *OauthRedirectResp) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3092,23 +3062,16 @@ func (x *DepartmentListResp) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DepartmentListResp.ProtoReflect.Descriptor instead. -func (*DepartmentListResp) Descriptor() ([]byte, []int) { +// Deprecated: Use OauthRedirectResp.ProtoReflect.Descriptor instead. +func (*OauthRedirectResp) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{40} } -func (x *DepartmentListResp) GetTotal() uint64 { - if x != nil { - return x.Total - } - return 0 -} - -func (x *DepartmentListResp) GetData() []*DepartmentInfo { +func (x *OauthRedirectResp) GetUrl() string { if x != nil { - return x.Data + return x.Url } - return nil + return "" } type ProviderListResp struct { @@ -3166,21 +3129,17 @@ func (x *ProviderListResp) GetData() []*ProviderInfo { return nil } -type TokenListReq struct { +type StatusCodeReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Page uint64 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` - PageSize uint64 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` - Username string `protobuf:"bytes,3,opt,name=username,proto3" json:"username,omitempty"` - Nickname string `protobuf:"bytes,4,opt,name=nickname,proto3" json:"nickname,omitempty"` - Email string `protobuf:"bytes,5,opt,name=email,proto3" json:"email,omitempty"` - Uuid string `protobuf:"bytes,6,opt,name=uuid,proto3" json:"uuid,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Status uint32 `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"` } -func (x *TokenListReq) Reset() { - *x = TokenListReq{} +func (x *StatusCodeReq) Reset() { + *x = StatusCodeReq{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3188,13 +3147,13 @@ func (x *TokenListReq) Reset() { } } -func (x *TokenListReq) String() string { +func (x *StatusCodeReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TokenListReq) ProtoMessage() {} +func (*StatusCodeReq) ProtoMessage() {} -func (x *TokenListReq) ProtoReflect() protoreflect.Message { +func (x *StatusCodeReq) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3206,79 +3165,106 @@ func (x *TokenListReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TokenListReq.ProtoReflect.Descriptor instead. -func (*TokenListReq) Descriptor() ([]byte, []int) { +// Deprecated: Use StatusCodeReq.ProtoReflect.Descriptor instead. +func (*StatusCodeReq) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{42} } -func (x *TokenListReq) GetPage() uint64 { +func (x *StatusCodeReq) GetId() uint64 { if x != nil { - return x.Page + return x.Id } return 0 } -func (x *TokenListReq) GetPageSize() uint64 { +func (x *StatusCodeReq) GetStatus() uint32 { if x != nil { - return x.PageSize + return x.Status } return 0 } -func (x *TokenListReq) GetUsername() string { - if x != nil { - return x.Username +type StatusCodeUUIDReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Status uint32 `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"` +} + +func (x *StatusCodeUUIDReq) Reset() { + *x = StatusCodeUUIDReq{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_core_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *TokenListReq) GetNickname() string { - if x != nil { - return x.Nickname +func (x *StatusCodeUUIDReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StatusCodeUUIDReq) ProtoMessage() {} + +func (x *StatusCodeUUIDReq) ProtoReflect() protoreflect.Message { + mi := &file_rpc_core_proto_msgTypes[43] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -func (x *TokenListReq) GetEmail() string { +// Deprecated: Use StatusCodeUUIDReq.ProtoReflect.Descriptor instead. +func (*StatusCodeUUIDReq) Descriptor() ([]byte, []int) { + return file_rpc_core_proto_rawDescGZIP(), []int{43} +} + +func (x *StatusCodeUUIDReq) GetId() string { if x != nil { - return x.Email + return x.Id } return "" } -func (x *TokenListReq) GetUuid() string { +func (x *StatusCodeUUIDReq) GetStatus() uint32 { if x != nil { - return x.Uuid + return x.Status } - return "" + return 0 } -// return the role's authorization menu's ids -type RoleMenuAuthorityResp struct { +type DepartmentListResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - MenuId []uint64 `protobuf:"varint,1,rep,packed,name=menu_id,json=menuId,proto3" json:"menu_id,omitempty"` + Total uint64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` + Data []*DepartmentInfo `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` } -func (x *RoleMenuAuthorityResp) Reset() { - *x = RoleMenuAuthorityResp{} +func (x *DepartmentListResp) Reset() { + *x = DepartmentListResp{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[43] + mi := &file_rpc_core_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *RoleMenuAuthorityResp) String() string { +func (x *DepartmentListResp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RoleMenuAuthorityResp) ProtoMessage() {} +func (*DepartmentListResp) ProtoMessage() {} -func (x *RoleMenuAuthorityResp) ProtoReflect() protoreflect.Message { - mi := &file_rpc_core_proto_msgTypes[43] +func (x *DepartmentListResp) ProtoReflect() protoreflect.Message { + mi := &file_rpc_core_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3289,43 +3275,57 @@ func (x *RoleMenuAuthorityResp) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RoleMenuAuthorityResp.ProtoReflect.Descriptor instead. -func (*RoleMenuAuthorityResp) Descriptor() ([]byte, []int) { - return file_rpc_core_proto_rawDescGZIP(), []int{43} +// Deprecated: Use DepartmentListResp.ProtoReflect.Descriptor instead. +func (*DepartmentListResp) Descriptor() ([]byte, []int) { + return file_rpc_core_proto_rawDescGZIP(), []int{44} } -func (x *RoleMenuAuthorityResp) GetMenuId() []uint64 { +func (x *DepartmentListResp) GetTotal() uint64 { if x != nil { - return x.MenuId + return x.Total + } + return 0 +} + +func (x *DepartmentListResp) GetData() []*DepartmentInfo { + if x != nil { + return x.Data } return nil } -type UUIDReq struct { +type TokenInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + CreatedAt int64 `protobuf:"varint,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt int64 `protobuf:"varint,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Uuid string `protobuf:"bytes,4,opt,name=uuid,proto3" json:"uuid,omitempty"` + Token string `protobuf:"bytes,5,opt,name=token,proto3" json:"token,omitempty"` + Source string `protobuf:"bytes,6,opt,name=source,proto3" json:"source,omitempty"` + Status uint32 `protobuf:"varint,7,opt,name=status,proto3" json:"status,omitempty"` + ExpiredAt int64 `protobuf:"varint,8,opt,name=expired_at,json=expiredAt,proto3" json:"expired_at,omitempty"` } -func (x *UUIDReq) Reset() { - *x = UUIDReq{} +func (x *TokenInfo) Reset() { + *x = TokenInfo{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[44] + mi := &file_rpc_core_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *UUIDReq) String() string { +func (x *TokenInfo) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UUIDReq) ProtoMessage() {} +func (*TokenInfo) ProtoMessage() {} -func (x *UUIDReq) ProtoReflect() protoreflect.Message { - mi := &file_rpc_core_proto_msgTypes[44] +func (x *TokenInfo) ProtoReflect() protoreflect.Message { + mi := &file_rpc_core_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3336,54 +3336,103 @@ func (x *UUIDReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UUIDReq.ProtoReflect.Descriptor instead. -func (*UUIDReq) Descriptor() ([]byte, []int) { - return file_rpc_core_proto_rawDescGZIP(), []int{44} +// Deprecated: Use TokenInfo.ProtoReflect.Descriptor instead. +func (*TokenInfo) Descriptor() ([]byte, []int) { + return file_rpc_core_proto_rawDescGZIP(), []int{45} } -func (x *UUIDReq) GetId() string { +func (x *TokenInfo) GetId() string { if x != nil { return x.Id } return "" } -type DepartmentInfo struct { +func (x *TokenInfo) GetCreatedAt() int64 { + if x != nil { + return x.CreatedAt + } + return 0 +} + +func (x *TokenInfo) GetUpdatedAt() int64 { + if x != nil { + return x.UpdatedAt + } + return 0 +} + +func (x *TokenInfo) GetUuid() string { + if x != nil { + return x.Uuid + } + return "" +} + +func (x *TokenInfo) GetToken() string { + if x != nil { + return x.Token + } + return "" +} + +func (x *TokenInfo) GetSource() string { + if x != nil { + return x.Source + } + return "" +} + +func (x *TokenInfo) GetStatus() uint32 { + if x != nil { + return x.Status + } + return 0 +} + +func (x *TokenInfo) GetExpiredAt() int64 { + if x != nil { + return x.ExpiredAt + } + return 0 +} + +type CreateOrUpdateUserReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - CreatedAt int64 `protobuf:"varint,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt int64 `protobuf:"varint,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - Status uint32 `protobuf:"varint,4,opt,name=status,proto3" json:"status,omitempty"` - Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name,omitempty"` - Ancestors string `protobuf:"bytes,6,opt,name=ancestors,proto3" json:"ancestors,omitempty"` - Leader string `protobuf:"bytes,7,opt,name=leader,proto3" json:"leader,omitempty"` - Phone string `protobuf:"bytes,8,opt,name=phone,proto3" json:"phone,omitempty"` - Email string `protobuf:"bytes,9,opt,name=email,proto3" json:"email,omitempty"` - Sort uint32 `protobuf:"varint,10,opt,name=sort,proto3" json:"sort,omitempty"` - Remark string `protobuf:"bytes,11,opt,name=remark,proto3" json:"remark,omitempty"` - ParentId uint64 `protobuf:"varint,12,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Avatar string `protobuf:"bytes,2,opt,name=avatar,proto3" json:"avatar,omitempty"` + RoleId uint64 `protobuf:"varint,3,opt,name=role_id,json=roleId,proto3" json:"role_id,omitempty"` + Mobile string `protobuf:"bytes,4,opt,name=mobile,proto3" json:"mobile,omitempty"` + Email string `protobuf:"bytes,5,opt,name=email,proto3" json:"email,omitempty"` + Status uint32 `protobuf:"varint,6,opt,name=status,proto3" json:"status,omitempty"` + Username string `protobuf:"bytes,7,opt,name=username,proto3" json:"username,omitempty"` + Nickname string `protobuf:"bytes,8,opt,name=nickname,proto3" json:"nickname,omitempty"` + Password string `protobuf:"bytes,9,opt,name=password,proto3" json:"password,omitempty"` + HomePath string `protobuf:"bytes,10,opt,name=home_path,json=homePath,proto3" json:"home_path,omitempty"` + Description string `protobuf:"bytes,11,opt,name=description,proto3" json:"description,omitempty"` + DepartmentId uint64 `protobuf:"varint,12,opt,name=department_id,json=departmentId,proto3" json:"department_id,omitempty"` } -func (x *DepartmentInfo) Reset() { - *x = DepartmentInfo{} +func (x *CreateOrUpdateUserReq) Reset() { + *x = CreateOrUpdateUserReq{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[45] + mi := &file_rpc_core_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DepartmentInfo) String() string { +func (x *CreateOrUpdateUserReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DepartmentInfo) ProtoMessage() {} +func (*CreateOrUpdateUserReq) ProtoMessage() {} -func (x *DepartmentInfo) ProtoReflect() protoreflect.Message { - mi := &file_rpc_core_proto_msgTypes[45] +func (x *CreateOrUpdateUserReq) ProtoReflect() protoreflect.Message { + mi := &file_rpc_core_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3394,127 +3443,179 @@ func (x *DepartmentInfo) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DepartmentInfo.ProtoReflect.Descriptor instead. -func (*DepartmentInfo) Descriptor() ([]byte, []int) { - return file_rpc_core_proto_rawDescGZIP(), []int{45} +// Deprecated: Use CreateOrUpdateUserReq.ProtoReflect.Descriptor instead. +func (*CreateOrUpdateUserReq) Descriptor() ([]byte, []int) { + return file_rpc_core_proto_rawDescGZIP(), []int{46} } -func (x *DepartmentInfo) GetId() uint64 { +func (x *CreateOrUpdateUserReq) GetId() string { if x != nil { return x.Id } - return 0 + return "" } -func (x *DepartmentInfo) GetCreatedAt() int64 { +func (x *CreateOrUpdateUserReq) GetAvatar() string { if x != nil { - return x.CreatedAt + return x.Avatar } - return 0 + return "" } -func (x *DepartmentInfo) GetUpdatedAt() int64 { +func (x *CreateOrUpdateUserReq) GetRoleId() uint64 { if x != nil { - return x.UpdatedAt + return x.RoleId } return 0 } -func (x *DepartmentInfo) GetStatus() uint32 { +func (x *CreateOrUpdateUserReq) GetMobile() string { + if x != nil { + return x.Mobile + } + return "" +} + +func (x *CreateOrUpdateUserReq) GetEmail() string { + if x != nil { + return x.Email + } + return "" +} + +func (x *CreateOrUpdateUserReq) GetStatus() uint32 { if x != nil { return x.Status } return 0 } -func (x *DepartmentInfo) GetName() string { +func (x *CreateOrUpdateUserReq) GetUsername() string { if x != nil { - return x.Name + return x.Username } return "" } -func (x *DepartmentInfo) GetAncestors() string { +func (x *CreateOrUpdateUserReq) GetNickname() string { if x != nil { - return x.Ancestors + return x.Nickname } return "" } -func (x *DepartmentInfo) GetLeader() string { +func (x *CreateOrUpdateUserReq) GetPassword() string { if x != nil { - return x.Leader + return x.Password } return "" } -func (x *DepartmentInfo) GetPhone() string { +func (x *CreateOrUpdateUserReq) GetHomePath() string { if x != nil { - return x.Phone + return x.HomePath } return "" } -func (x *DepartmentInfo) GetEmail() string { +func (x *CreateOrUpdateUserReq) GetDescription() string { if x != nil { - return x.Email + return x.Description } return "" } -func (x *DepartmentInfo) GetSort() uint32 { - if x != nil { - return x.Sort - } - return 0 +func (x *CreateOrUpdateUserReq) GetDepartmentId() uint64 { + if x != nil { + return x.DepartmentId + } + return 0 +} + +type MenuInfoList struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Total uint64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` + Data []*MenuInfo `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` +} + +func (x *MenuInfoList) Reset() { + *x = MenuInfoList{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_core_proto_msgTypes[47] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MenuInfoList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MenuInfoList) ProtoMessage() {} + +func (x *MenuInfoList) ProtoReflect() protoreflect.Message { + mi := &file_rpc_core_proto_msgTypes[47] + 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 MenuInfoList.ProtoReflect.Descriptor instead. +func (*MenuInfoList) Descriptor() ([]byte, []int) { + return file_rpc_core_proto_rawDescGZIP(), []int{47} } -func (x *DepartmentInfo) GetRemark() string { +func (x *MenuInfoList) GetTotal() uint64 { if x != nil { - return x.Remark + return x.Total } - return "" + return 0 } -func (x *DepartmentInfo) GetParentId() uint64 { +func (x *MenuInfoList) GetData() []*MenuInfo { if x != nil { - return x.ParentId + return x.Data } - return 0 + return nil } -// dictionary message -type DictionaryInfo struct { +type CreateOrUpdateMenuParamReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` - Status uint32 `protobuf:"varint,4,opt,name=status,proto3" json:"status,omitempty"` - Desc string `protobuf:"bytes,5,opt,name=desc,proto3" json:"desc,omitempty"` - CreatedAt int64 `protobuf:"varint,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt int64 `protobuf:"varint,7,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + MenuId uint64 `protobuf:"varint,2,opt,name=menu_id,json=menuId,proto3" json:"menu_id,omitempty"` + Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` + Key string `protobuf:"bytes,4,opt,name=key,proto3" json:"key,omitempty"` + Value string `protobuf:"bytes,5,opt,name=value,proto3" json:"value,omitempty"` } -func (x *DictionaryInfo) Reset() { - *x = DictionaryInfo{} +func (x *CreateOrUpdateMenuParamReq) Reset() { + *x = CreateOrUpdateMenuParamReq{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[46] + mi := &file_rpc_core_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DictionaryInfo) String() string { +func (x *CreateOrUpdateMenuParamReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DictionaryInfo) ProtoMessage() {} +func (*CreateOrUpdateMenuParamReq) ProtoMessage() {} -func (x *DictionaryInfo) ProtoReflect() protoreflect.Message { - mi := &file_rpc_core_proto_msgTypes[46] +func (x *CreateOrUpdateMenuParamReq) ProtoReflect() protoreflect.Message { + mi := &file_rpc_core_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3525,58 +3626,99 @@ func (x *DictionaryInfo) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DictionaryInfo.ProtoReflect.Descriptor instead. -func (*DictionaryInfo) Descriptor() ([]byte, []int) { - return file_rpc_core_proto_rawDescGZIP(), []int{46} +// Deprecated: Use CreateOrUpdateMenuParamReq.ProtoReflect.Descriptor instead. +func (*CreateOrUpdateMenuParamReq) Descriptor() ([]byte, []int) { + return file_rpc_core_proto_rawDescGZIP(), []int{48} } -func (x *DictionaryInfo) GetId() uint64 { +func (x *CreateOrUpdateMenuParamReq) GetId() uint64 { if x != nil { return x.Id } return 0 } -func (x *DictionaryInfo) GetTitle() string { +func (x *CreateOrUpdateMenuParamReq) GetMenuId() uint64 { if x != nil { - return x.Title + return x.MenuId } - return "" + return 0 } -func (x *DictionaryInfo) GetName() string { +func (x *CreateOrUpdateMenuParamReq) GetType() string { if x != nil { - return x.Name + return x.Type } return "" } -func (x *DictionaryInfo) GetStatus() uint32 { +func (x *CreateOrUpdateMenuParamReq) GetKey() string { if x != nil { - return x.Status + return x.Key } - return 0 + return "" } -func (x *DictionaryInfo) GetDesc() string { +func (x *CreateOrUpdateMenuParamReq) GetValue() string { if x != nil { - return x.Desc + return x.Value } return "" } -func (x *DictionaryInfo) GetCreatedAt() int64 { +type TokenListResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Total uint64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` + Data []*TokenInfo `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` +} + +func (x *TokenListResp) Reset() { + *x = TokenListResp{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_core_proto_msgTypes[49] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TokenListResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TokenListResp) ProtoMessage() {} + +func (x *TokenListResp) ProtoReflect() protoreflect.Message { + mi := &file_rpc_core_proto_msgTypes[49] + 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 TokenListResp.ProtoReflect.Descriptor instead. +func (*TokenListResp) Descriptor() ([]byte, []int) { + return file_rpc_core_proto_rawDescGZIP(), []int{49} +} + +func (x *TokenListResp) GetTotal() uint64 { if x != nil { - return x.CreatedAt + return x.Total } return 0 } -func (x *DictionaryInfo) GetUpdatedAt() int64 { +func (x *TokenListResp) GetData() []*TokenInfo { if x != nil { - return x.UpdatedAt + return x.Data } - return 0 + return nil } type MenuParamResp struct { @@ -3595,7 +3737,7 @@ type MenuParamResp struct { func (x *MenuParamResp) Reset() { *x = MenuParamResp{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[47] + mi := &file_rpc_core_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3608,7 +3750,7 @@ func (x *MenuParamResp) String() string { func (*MenuParamResp) ProtoMessage() {} func (x *MenuParamResp) ProtoReflect() protoreflect.Message { - mi := &file_rpc_core_proto_msgTypes[47] + mi := &file_rpc_core_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3621,7 +3763,7 @@ func (x *MenuParamResp) ProtoReflect() protoreflect.Message { // Deprecated: Use MenuParamResp.ProtoReflect.Descriptor instead. func (*MenuParamResp) Descriptor() ([]byte, []int) { - return file_rpc_core_proto_rawDescGZIP(), []int{47} + return file_rpc_core_proto_rawDescGZIP(), []int{50} } func (x *MenuParamResp) GetId() uint64 { @@ -3666,33 +3808,31 @@ func (x *MenuParamResp) GetUpdatedAt() int64 { return 0 } -// oauth message -type OauthLoginReq struct { +type IDReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - State string `protobuf:"bytes,1,opt,name=state,proto3" json:"state,omitempty"` - Provider string `protobuf:"bytes,2,opt,name=provider,proto3" json:"provider,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` } -func (x *OauthLoginReq) Reset() { - *x = OauthLoginReq{} +func (x *IDReq) Reset() { + *x = IDReq{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[48] + mi := &file_rpc_core_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *OauthLoginReq) String() string { +func (x *IDReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*OauthLoginReq) ProtoMessage() {} +func (*IDReq) ProtoMessage() {} -func (x *OauthLoginReq) ProtoReflect() protoreflect.Message { - mi := &file_rpc_core_proto_msgTypes[48] +func (x *IDReq) ProtoReflect() protoreflect.Message { + mi := &file_rpc_core_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3703,150 +3843,170 @@ func (x *OauthLoginReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use OauthLoginReq.ProtoReflect.Descriptor instead. -func (*OauthLoginReq) Descriptor() ([]byte, []int) { - return file_rpc_core_proto_rawDescGZIP(), []int{48} -} - -func (x *OauthLoginReq) GetState() string { - if x != nil { - return x.State - } - return "" +// Deprecated: Use IDReq.ProtoReflect.Descriptor instead. +func (*IDReq) Descriptor() ([]byte, []int) { + return file_rpc_core_proto_rawDescGZIP(), []int{51} } -func (x *OauthLoginReq) GetProvider() string { +func (x *IDReq) GetId() uint64 { if x != nil { - return x.Provider + return x.Id } - return "" + return 0 } -type UserListResp struct { +type Meta struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total uint64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` - Data []*UserInfoResp `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` + Icon string `protobuf:"bytes,2,opt,name=icon,proto3" json:"icon,omitempty"` + HideMenu bool `protobuf:"varint,3,opt,name=hide_menu,json=hideMenu,proto3" json:"hide_menu,omitempty"` + HideBreadcrumb bool `protobuf:"varint,4,opt,name=hide_breadcrumb,json=hideBreadcrumb,proto3" json:"hide_breadcrumb,omitempty"` + CurrentActiveMenu string `protobuf:"bytes,5,opt,name=current_active_menu,json=currentActiveMenu,proto3" json:"current_active_menu,omitempty"` + IgnoreKeepAlive bool `protobuf:"varint,6,opt,name=ignore_keep_alive,json=ignoreKeepAlive,proto3" json:"ignore_keep_alive,omitempty"` + HideTab bool `protobuf:"varint,7,opt,name=hide_tab,json=hideTab,proto3" json:"hide_tab,omitempty"` + FrameSrc string `protobuf:"bytes,8,opt,name=frame_src,json=frameSrc,proto3" json:"frame_src,omitempty"` + CarryParam bool `protobuf:"varint,9,opt,name=carry_param,json=carryParam,proto3" json:"carry_param,omitempty"` + HideChildrenInMenu bool `protobuf:"varint,10,opt,name=hide_children_in_menu,json=hideChildrenInMenu,proto3" json:"hide_children_in_menu,omitempty"` + Affix bool `protobuf:"varint,11,opt,name=affix,proto3" json:"affix,omitempty"` + DynamicLevel uint32 `protobuf:"varint,12,opt,name=dynamic_level,json=dynamicLevel,proto3" json:"dynamic_level,omitempty"` + RealPath string `protobuf:"bytes,13,opt,name=real_path,json=realPath,proto3" json:"real_path,omitempty"` } -func (x *UserListResp) Reset() { - *x = UserListResp{} +func (x *Meta) Reset() { + *x = Meta{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[49] + mi := &file_rpc_core_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *UserListResp) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *Meta) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Meta) ProtoMessage() {} + +func (x *Meta) ProtoReflect() protoreflect.Message { + mi := &file_rpc_core_proto_msgTypes[52] + 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 Meta.ProtoReflect.Descriptor instead. +func (*Meta) Descriptor() ([]byte, []int) { + return file_rpc_core_proto_rawDescGZIP(), []int{52} +} + +func (x *Meta) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *Meta) GetIcon() string { + if x != nil { + return x.Icon + } + return "" +} + +func (x *Meta) GetHideMenu() bool { + if x != nil { + return x.HideMenu + } + return false +} + +func (x *Meta) GetHideBreadcrumb() bool { + if x != nil { + return x.HideBreadcrumb + } + return false +} + +func (x *Meta) GetCurrentActiveMenu() string { + if x != nil { + return x.CurrentActiveMenu + } + return "" +} + +func (x *Meta) GetIgnoreKeepAlive() bool { + if x != nil { + return x.IgnoreKeepAlive + } + return false +} + +func (x *Meta) GetHideTab() bool { + if x != nil { + return x.HideTab + } + return false +} + +func (x *Meta) GetFrameSrc() string { + if x != nil { + return x.FrameSrc + } + return "" } -func (*UserListResp) ProtoMessage() {} +func (x *Meta) GetCarryParam() bool { + if x != nil { + return x.CarryParam + } + return false +} -func (x *UserListResp) ProtoReflect() protoreflect.Message { - mi := &file_rpc_core_proto_msgTypes[49] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *Meta) GetHideChildrenInMenu() bool { + if x != nil { + return x.HideChildrenInMenu } - return mi.MessageOf(x) + return false } -// Deprecated: Use UserListResp.ProtoReflect.Descriptor instead. -func (*UserListResp) Descriptor() ([]byte, []int) { - return file_rpc_core_proto_rawDescGZIP(), []int{49} +func (x *Meta) GetAffix() bool { + if x != nil { + return x.Affix + } + return false } -func (x *UserListResp) GetTotal() uint64 { +func (x *Meta) GetDynamicLevel() uint32 { if x != nil { - return x.Total + return x.DynamicLevel } return 0 } -func (x *UserListResp) GetData() []*UserInfoResp { +func (x *Meta) GetRealPath() string { if x != nil { - return x.Data + return x.RealPath } - return nil + return "" } var File_rpc_core_proto protoreflect.FileDescriptor var file_rpc_core_proto_rawDesc = []byte{ 0x0a, 0x0e, 0x72, 0x70, 0x63, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x12, 0x04, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x37, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, - 0x70, 0x0a, 0x11, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, - 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x61, 0x67, - 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x22, 0xda, 0x02, 0x0a, 0x08, 0x4d, 0x65, 0x6e, 0x75, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, - 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 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, 0x03, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x14, 0x0a, 0x05, - 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x65, 0x76, - 0x65, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, - 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x64, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x64, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x04, 0x73, 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, - 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, - 0x64, 0x12, 0x1e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0a, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, - 0x61, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x6e, 0x75, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0d, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x6d, 0x65, 0x6e, 0x75, 0x54, 0x79, 0x70, 0x65, 0x22, 0x52, - 0x0a, 0x11, 0x4d, 0x65, 0x6e, 0x75, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x27, 0x0a, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4d, - 0x65, 0x6e, 0x75, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x52, 0x04, 0x64, 0x61, - 0x74, 0x61, 0x22, 0xcd, 0x01, 0x0a, 0x08, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, - 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 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, 0x12, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, - 0x73, 0x6f, 0x72, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, - 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x41, 0x74, 0x22, 0x42, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x1a, - 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, - 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, - 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0xa6, 0x01, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6e, - 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, - 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x16, 0x0a, - 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, - 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x20, 0x0a, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, + 0x12, 0x04, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x1c, 0x0a, 0x08, 0x55, 0x55, 0x49, 0x44, 0x73, 0x52, + 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x03, 0x69, 0x64, 0x73, 0x22, 0x29, 0x0a, 0x13, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xe5, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, @@ -3861,87 +4021,401 @@ var file_rpc_core_proto_rawDesc = []byte{ 0x65, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x61, 0x72, - 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x48, 0x0a, 0x14, 0x52, 0x6f, 0x6c, 0x65, 0x4d, - 0x65, 0x6e, 0x75, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x12, - 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x6d, 0x65, 0x6e, 0x75, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x6d, 0x65, 0x6e, 0x75, 0x49, - 0x64, 0x22, 0x50, 0x0a, 0x0e, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x4c, - 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x44, - 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x22, 0x29, 0x0a, 0x13, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, - 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xdf, - 0x02, 0x0a, 0x0c, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, - 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, - 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x64, - 0x69, 0x72, 0x65, 0x63, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x6f, 0x70, - 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, - 0x12, 0x19, 0x0a, 0x08, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x61, 0x75, 0x74, 0x68, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, - 0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x61, 0x75, - 0x74, 0x68, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6e, 0x66, 0x6f, 0x5f, - 0x75, 0x72, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6e, 0x66, 0x6f, 0x55, - 0x72, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 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, - 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, - 0x22, 0x37, 0x0a, 0x0b, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x12, - 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x48, 0x0a, 0x0c, 0x52, 0x6f, 0x6c, - 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, - 0x22, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x22, 0xd2, 0x01, 0x0a, 0x09, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xa1, 0x01, 0x0a, 0x0a, 0x41, 0x70, 0x69, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, + 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, + 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x20, 0x0a, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, + 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, + 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x52, 0x0a, 0x11, 0x4d, + 0x65, 0x6e, 0x75, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x27, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x6e, 0x75, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, + 0x52, 0x0a, 0x0b, 0x50, 0x6f, 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x12, + 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x70, 0x61, + 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x22, 0xa9, 0x02, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x6e, 0x75, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, + 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x65, + 0x76, 0x65, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, + 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x70, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x64, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x64, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, + 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, + 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, + 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, + 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0a, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, + 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x6e, 0x75, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x6d, 0x65, 0x6e, 0x75, 0x54, 0x79, 0x70, 0x65, 0x22, + 0x50, 0x0a, 0x10, 0x4d, 0x65, 0x6e, 0x75, 0x52, 0x6f, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x26, 0x0a, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4d, + 0x65, 0x6e, 0x75, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x22, 0x1a, 0x0a, 0x06, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x69, + 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x1c, 0x0a, + 0x08, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0xc4, 0x01, 0x0a, 0x08, + 0x50, 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 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, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, + 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x73, 0x6f, + 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, + 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, + 0x72, 0x6b, 0x22, 0x48, 0x0a, 0x0c, 0x50, 0x6f, 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x22, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x6f, + 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xda, 0x02, 0x0a, + 0x08, 0x4d, 0x65, 0x6e, 0x75, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 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, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1b, 0x0a, + 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, + 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x1c, + 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x73, 0x6f, 0x72, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, + 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x04, + 0x6d, 0x65, 0x74, 0x61, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x1b, 0x0a, 0x09, + 0x6d, 0x65, 0x6e, 0x75, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x08, 0x6d, 0x65, 0x6e, 0x75, 0x54, 0x79, 0x70, 0x65, 0x22, 0x41, 0x0a, 0x0d, 0x4f, 0x61, 0x75, + 0x74, 0x68, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, 0xdf, 0x02, 0x0a, + 0x0c, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x23, + 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, + 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x64, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x12, 0x19, + 0x0a, 0x08, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x61, 0x75, 0x74, 0x68, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x73, + 0x74, 0x79, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, + 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x75, 0x72, + 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6e, 0x66, 0x6f, 0x55, 0x72, 0x6c, + 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x03, 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, 0x0c, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x58, + 0x0a, 0x14, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x2a, 0x0a, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xa9, 0x03, 0x0a, 0x0c, 0x55, 0x73, 0x65, + 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, + 0x74, 0x61, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, + 0x72, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, + 0x62, 0x69, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x6f, 0x62, 0x69, + 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x6f, 0x6c, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 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, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x6d, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x20, 0x0a, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x0f, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, + 0x6e, 0x74, 0x49, 0x64, 0x22, 0xb4, 0x01, 0x0a, 0x0e, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, + 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x1d, 0x0a, + 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x03, 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, 0x07, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0xa6, 0x01, 0x0a, 0x10, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, + 0x69, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, + 0x61, 0x74, 0x61, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, + 0x61, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x42, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, + 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x4c, 0x0a, 0x0c, 0x55, 0x73, 0x65, 0x72, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x26, + 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, + 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x3e, 0x0a, 0x0b, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, + 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x61, + 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x50, 0x0a, 0x0c, 0x4d, 0x65, 0x6e, 0x75, 0x52, 0x6f, + 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x6d, 0x65, 0x6e, 0x75, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6d, 0x65, 0x6e, 0x75, 0x49, 0x64, 0x12, + 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x37, 0x0a, 0x0b, 0x43, 0x61, 0x6c, 0x6c, + 0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, + 0x65, 0x22, 0xa1, 0x01, 0x0a, 0x0c, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, + 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, + 0x69, 0x7a, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, + 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, + 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x75, 0x75, 0x69, 0x64, 0x22, 0xbb, 0x01, 0x0a, 0x07, 0x41, 0x70, 0x69, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 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, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, - 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x78, 0x70, - 0x69, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x65, - 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x41, 0x74, 0x22, 0x58, 0x0a, 0x14, 0x44, 0x69, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x4c, 0x69, 0x73, 0x74, + 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, + 0x61, 0x74, 0x68, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x6d, + 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, + 0x68, 0x6f, 0x64, 0x22, 0x46, 0x0a, 0x0b, 0x41, 0x70, 0x69, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x21, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x70, + 0x69, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x6e, 0x0a, 0x11, 0x44, + 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, + 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, + 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1b, + 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x48, 0x0a, 0x14, 0x52, + 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x6e, 0x75, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, + 0x6d, 0x65, 0x6e, 0x75, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x6d, + 0x65, 0x6e, 0x75, 0x49, 0x64, 0x22, 0x19, 0x0a, 0x07, 0x55, 0x55, 0x49, 0x44, 0x52, 0x65, 0x71, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, + 0x22, 0x48, 0x0a, 0x0c, 0x52, 0x6f, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x2a, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x44, 0x69, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x04, 0x64, 0x61, - 0x74, 0x61, 0x22, 0xa9, 0x02, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x6e, 0x75, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, - 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x65, 0x76, - 0x65, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, - 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x64, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x64, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x04, 0x73, 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, - 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, - 0x64, 0x12, 0x1e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0a, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, - 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x6e, 0x75, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x6d, 0x65, 0x6e, 0x75, 0x54, 0x79, 0x70, 0x65, 0x22, 0xb6, + 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x22, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x6f, 0x6c, 0x65, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xcd, 0x01, 0x0a, 0x08, 0x52, + 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x72, 0x6f, 0x75, + 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 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, 0x12, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x12, 0x1c, 0x0a, 0x09, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x70, 0x0a, 0x09, 0x4c, 0x6f, + 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x30, 0x0a, 0x15, + 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x6e, 0x75, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x52, 0x65, 0x73, 0x70, 0x12, 0x17, 0x0a, 0x07, 0x6d, 0x65, 0x6e, 0x75, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x6d, 0x65, 0x6e, 0x75, 0x49, 0x64, 0x22, 0x70, + 0x0a, 0x11, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, + 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, + 0x53, 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x22, 0x50, 0x0a, 0x0e, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x4c, 0x69, + 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x44, 0x69, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x22, 0x07, 0x0a, 0x05, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xb5, 0x02, 0x0a, 0x0e, + 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, + 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x03, 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, 0x03, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x16, 0x0a, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x6e, 0x63, 0x65, + 0x73, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6e, 0x63, + 0x65, 0x73, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x14, + 0x0a, 0x05, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, + 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6f, + 0x72, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x12, 0x16, + 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x49, 0x64, 0x22, 0xdb, 0x01, 0x0a, 0x10, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, + 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x03, 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, 0x07, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x23, 0x0a, 0x0d, + 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x0c, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x49, + 0x64, 0x22, 0x69, 0x0a, 0x11, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, + 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x6c, 0x64, 0x5f, 0x70, 0x61, + 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x6c, + 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x65, 0x77, + 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x6e, 0x65, 0x77, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x25, 0x0a, 0x11, + 0x4f, 0x61, 0x75, 0x74, 0x68, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x75, 0x72, 0x6c, 0x22, 0x50, 0x0a, 0x10, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x26, 0x0a, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x37, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, + 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x3b, + 0x0a, 0x11, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x55, 0x55, 0x49, 0x44, + 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x54, 0x0a, 0x12, 0x44, + 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x44, 0x65, 0x70, + 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x22, 0xd2, 0x01, 0x0a, 0x09, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 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, 0x03, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, + 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x65, 0x78, 0x70, + 0x69, 0x72, 0x65, 0x64, 0x41, 0x74, 0x22, 0xd6, 0x02, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, + 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, + 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, + 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x68, + 0x6f, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x68, 0x6f, 0x6d, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, + 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, + 0x48, 0x0a, 0x0c, 0x4d, 0x65, 0x6e, 0x75, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, + 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x22, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x6e, 0x75, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x81, 0x01, 0x0a, 0x1a, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x6e, 0x75, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x6d, 0x65, 0x6e, 0x75, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6d, 0x65, 0x6e, 0x75, 0x49, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x4a, 0x0a, + 0x0d, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, + 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x23, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x99, 0x01, 0x0a, 0x0d, 0x4d, 0x65, + 0x6e, 0x75, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 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, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x17, 0x0a, 0x05, 0x49, 0x44, 0x52, 0x65, 0x71, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x22, 0xb6, 0x03, 0x0a, 0x04, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x63, 0x6f, @@ -3969,413 +4443,199 @@ var file_rpc_core_proto_rawDesc = []byte{ 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x6c, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, - 0x65, 0x61, 0x6c, 0x50, 0x61, 0x74, 0x68, 0x22, 0x48, 0x0a, 0x0c, 0x4d, 0x65, 0x6e, 0x75, 0x49, - 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x22, 0x0a, - 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x6e, 0x75, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x22, 0x25, 0x0a, 0x11, 0x4f, 0x61, 0x75, 0x74, 0x68, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x4a, 0x0a, 0x0d, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, - 0x23, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x22, 0x70, 0x0a, 0x09, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, - 0x0a, 0x0a, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x17, 0x0a, - 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, - 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x1a, 0x0a, 0x06, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, - 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x03, 0x69, - 0x64, 0x73, 0x22, 0x1c, 0x0a, 0x08, 0x55, 0x55, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x12, 0x10, - 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x69, 0x64, 0x73, - 0x22, 0x6e, 0x0a, 0x11, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x70, - 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, - 0x22, 0x50, 0x0a, 0x0c, 0x4d, 0x65, 0x6e, 0x75, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x17, 0x0a, 0x07, 0x6d, 0x65, 0x6e, 0x75, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x06, 0x6d, 0x65, 0x6e, 0x75, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6c, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, - 0x49, 0x64, 0x22, 0x81, 0x01, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x6e, 0x75, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x65, - 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x17, 0x0a, 0x07, 0x6d, 0x65, 0x6e, 0x75, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x06, 0x6d, 0x65, 0x6e, 0x75, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x46, 0x0a, 0x0b, 0x41, 0x70, 0x69, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x21, 0x0a, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x41, 0x70, 0x69, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x3e, - 0x0a, 0x0b, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, - 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x70, 0x61, 0x67, - 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x3b, - 0x0a, 0x11, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x55, 0x55, 0x49, 0x44, - 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xdb, 0x01, 0x0a, 0x10, - 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 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, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x41, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x64, 0x69, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x49, 0x64, 0x22, 0x50, 0x0a, 0x10, 0x4d, 0x65, 0x6e, - 0x75, 0x52, 0x6f, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, - 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x12, 0x26, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x12, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x6e, 0x75, 0x52, 0x6f, 0x6c, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xa1, 0x01, 0x0a, 0x0a, - 0x41, 0x70, 0x69, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, - 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1b, - 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, - 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, - 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, - 0x69, 0x0a, 0x11, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, - 0x64, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x6c, 0x64, 0x5f, 0x70, 0x61, 0x73, 0x73, - 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x6c, 0x64, 0x50, - 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x65, 0x77, 0x5f, 0x70, - 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, - 0x65, 0x77, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0xd6, 0x02, 0x0a, 0x15, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x17, 0x0a, 0x07, - 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x72, - 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, - 0x61, 0x69, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x75, - 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, - 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, - 0x1b, 0x0a, 0x09, 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x6d, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x20, 0x0a, 0x0b, - 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, - 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x0c, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, - 0x74, 0x49, 0x64, 0x22, 0xa9, 0x03, 0x0a, 0x0c, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x17, 0x0a, 0x07, - 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x72, - 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, - 0x61, 0x69, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x75, - 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, - 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x03, 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, 0x0b, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, - 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x68, - 0x6f, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x68, 0x6f, 0x6d, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, - 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, - 0xbb, 0x01, 0x0a, 0x07, 0x41, 0x70, 0x69, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 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, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, - 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x20, 0x0a, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0x07, 0x0a, - 0x05, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x17, 0x0a, 0x05, 0x49, 0x44, 0x52, 0x65, 0x71, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x22, - 0x1c, 0x0a, 0x08, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x6d, - 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x54, 0x0a, - 0x12, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x44, - 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x22, 0x50, 0x0a, 0x10, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x26, 0x0a, - 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xa1, 0x01, 0x0a, 0x0c, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, - 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, - 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x22, 0x30, 0x0a, 0x15, 0x52, 0x6f, 0x6c, - 0x65, 0x4d, 0x65, 0x6e, 0x75, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x17, 0x0a, 0x07, 0x6d, 0x65, 0x6e, 0x75, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x04, 0x52, 0x06, 0x6d, 0x65, 0x6e, 0x75, 0x49, 0x64, 0x22, 0x19, 0x0a, 0x07, 0x55, - 0x55, 0x49, 0x44, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xb5, 0x02, 0x0a, 0x0e, 0x44, 0x65, 0x70, 0x61, 0x72, - 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 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, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x73, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, - 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x68, 0x6f, - 0x6e, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, - 0x61, 0x72, 0x6b, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, - 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xb4, - 0x01, 0x0a, 0x0e, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 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, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x99, 0x01, 0x0a, 0x0d, 0x4d, 0x65, 0x6e, 0x75, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, - 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 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, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, - 0x74, 0x22, 0x41, 0x0a, 0x0d, 0x4f, 0x61, 0x75, 0x74, 0x68, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, - 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x22, 0x4c, 0x0a, 0x0c, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x26, 0x0a, 0x04, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x52, 0x04, 0x64, 0x61, - 0x74, 0x61, 0x32, 0xe9, 0x15, 0x0a, 0x04, 0x43, 0x6f, 0x72, 0x65, 0x12, 0x32, 0x0a, 0x11, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x69, - 0x12, 0x0d, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x70, 0x69, 0x49, 0x6e, 0x66, 0x6f, 0x1a, - 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x28, 0x0a, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x69, 0x12, 0x0b, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x31, 0x0a, 0x0a, 0x67, 0x65, 0x74, - 0x41, 0x70, 0x69, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x10, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, - 0x70, 0x69, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x41, 0x70, 0x69, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3c, 0x0a, 0x10, - 0x67, 0x65, 0x74, 0x4d, 0x65, 0x6e, 0x75, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, - 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x6e, 0x75, 0x41, 0x75, 0x74, - 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x12, 0x49, 0x0a, 0x1b, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x6e, 0x75, - 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x6e, 0x75, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, - 0x74, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2b, 0x0a, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x44, 0x61, 0x74, - 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x40, 0x0a, 0x18, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x14, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, + 0x65, 0x61, 0x6c, 0x50, 0x61, 0x74, 0x68, 0x32, 0xea, 0x17, 0x0a, 0x04, 0x43, 0x6f, 0x72, 0x65, + 0x12, 0x32, 0x0a, 0x11, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x41, 0x70, 0x69, 0x12, 0x0d, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x70, 0x69, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x46, 0x0a, 0x11, 0x67, 0x65, 0x74, 0x44, 0x65, 0x70, 0x61, 0x72, - 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x17, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, - 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2f, 0x0a, 0x10, - 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, - 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x28, 0x0a, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, + 0x69, 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x31, + 0x0a, 0x0a, 0x67, 0x65, 0x74, 0x41, 0x70, 0x69, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x10, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x70, 0x69, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x11, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x70, 0x69, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x3c, 0x0a, 0x10, 0x67, 0x65, 0x74, 0x4d, 0x65, 0x6e, 0x75, 0x41, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x44, 0x52, + 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, + 0x6e, 0x75, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x49, 0x0a, 0x1b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x4d, 0x65, 0x6e, 0x75, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1a, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x6e, 0x75, 0x41, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2b, 0x0a, 0x0c, 0x69, 0x6e, + 0x69, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, + 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x40, 0x0a, 0x18, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x14, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x44, 0x65, 0x70, 0x61, 0x72, + 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x46, 0x0a, 0x11, 0x67, 0x65, 0x74, + 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x17, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x44, + 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x2f, 0x0a, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x70, 0x61, 0x72, + 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x44, 0x52, + 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x35, 0x0a, 0x15, 0x62, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x0c, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3d, 0x0a, 0x16, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x13, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x40, 0x0a, 0x18, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x72, 0x79, 0x12, 0x14, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x44, 0x69, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2f, 0x0a, 0x10, 0x64, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x12, 0x0b, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x42, 0x0a, 0x11, 0x67, + 0x65, 0x74, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, + 0x12, 0x17, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x12, + 0x52, 0x0a, 0x19, 0x67, 0x65, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x42, 0x79, 0x44, 0x69, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x44, + 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x4c, + 0x69, 0x73, 0x74, 0x12, 0x48, 0x0a, 0x1e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x16, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x44, 0x69, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x35, 0x0a, - 0x15, 0x62, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x70, 0x61, - 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x0c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x44, - 0x73, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x3d, 0x0a, 0x16, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, - 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x13, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, - 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x40, 0x0a, 0x18, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x12, - 0x14, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, - 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2f, 0x0a, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, - 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, - 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x42, 0x0a, 0x11, 0x67, 0x65, 0x74, 0x44, 0x69, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x17, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x44, 0x69, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x52, 0x0a, 0x19, 0x67, 0x65, - 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x42, 0x79, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x44, - 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, - 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x61, 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x48, - 0x0a, 0x1e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x12, 0x16, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x35, 0x0a, 0x16, 0x64, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, - 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x41, 0x0a, 0x12, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x4d, 0x65, 0x6e, 0x75, 0x12, 0x1b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x6e, 0x75, 0x52, + 0x16, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, + 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, + 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x41, 0x0a, 0x12, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x6e, 0x75, 0x12, 0x1b, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x4d, 0x65, 0x6e, 0x75, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, + 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x29, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x4d, 0x65, 0x6e, 0x75, 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x29, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x65, 0x6e, 0x75, - 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x34, 0x0a, - 0x11, 0x67, 0x65, 0x74, 0x4d, 0x65, 0x6e, 0x75, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x79, 0x52, 0x6f, - 0x6c, 0x65, 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, - 0x12, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x6e, 0x75, 0x49, 0x6e, 0x66, 0x6f, 0x4c, - 0x69, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x4d, 0x65, 0x6e, 0x75, 0x4c, 0x69, - 0x73, 0x74, 0x12, 0x11, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x6e, - 0x75, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x4b, 0x0a, 0x17, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x6e, 0x75, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x12, 0x20, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x6e, 0x75, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, - 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2e, 0x0a, 0x0f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x4d, 0x65, 0x6e, 0x75, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, - 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x40, 0x0a, 0x18, 0x67, 0x65, 0x74, 0x4d, 0x65, 0x6e, - 0x75, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x79, 0x4d, 0x65, 0x6e, 0x75, - 0x49, 0x64, 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, - 0x17, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x6e, 0x75, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3c, 0x0a, 0x16, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x72, 0x12, 0x12, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, - 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2d, 0x0a, 0x0e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3c, 0x0a, 0x0f, 0x67, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x11, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x3a, 0x0a, 0x0a, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x4c, 0x6f, 0x67, 0x69, - 0x6e, 0x12, 0x13, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, 0x61, 0x75, 0x74, 0x68, 0x4c, 0x6f, - 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, 0x61, - 0x75, 0x74, 0x68, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x33, 0x0a, 0x0d, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, - 0x12, 0x11, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, - 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x34, 0x0a, 0x12, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x0e, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x29, 0x0a, 0x0a, 0x64, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2a, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, - 0x42, 0x79, 0x49, 0x64, 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x44, 0x52, 0x65, - 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x34, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, - 0x12, 0x11, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x37, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x13, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, + 0x73, 0x70, 0x12, 0x34, 0x0a, 0x11, 0x67, 0x65, 0x74, 0x4d, 0x65, 0x6e, 0x75, 0x4c, 0x69, 0x73, + 0x74, 0x42, 0x79, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, + 0x44, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x6e, 0x75, + 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x4d, + 0x65, 0x6e, 0x75, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x11, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, + 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x4d, 0x65, 0x6e, 0x75, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x4b, + 0x0a, 0x17, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x4d, 0x65, 0x6e, 0x75, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x20, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, + 0x65, 0x6e, 0x75, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2e, 0x0a, 0x0f, 0x64, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x65, 0x6e, 0x75, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x0b, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x40, 0x0a, 0x18, 0x67, + 0x65, 0x74, 0x4d, 0x65, 0x6e, 0x75, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x42, + 0x79, 0x4d, 0x65, 0x6e, 0x75, 0x49, 0x64, 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, + 0x44, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x6e, 0x75, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3c, 0x0a, + 0x16, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x12, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2d, 0x0a, 0x0e, 0x64, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x0b, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3c, 0x0a, 0x0f, 0x67, 0x65, + 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x11, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, + 0x1a, 0x16, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3a, 0x0a, 0x0a, 0x6f, 0x61, 0x75, 0x74, + 0x68, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x13, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, 0x61, + 0x75, 0x74, 0x68, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x4f, 0x61, 0x75, 0x74, 0x68, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x33, 0x0a, 0x0d, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x43, 0x61, 0x6c, + 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x12, 0x11, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x61, 0x6c, + 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x34, 0x0a, 0x12, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x73, 0x74, 0x12, + 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x1a, + 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x34, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x11, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x71, 0x1a, 0x12, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x29, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, + 0x6f, 0x73, 0x74, 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x36, 0x0a, 0x13, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x0f, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2c, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x0d, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, - 0x55, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, - 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x32, 0x0a, 0x10, 0x62, 0x61, 0x74, 0x63, 0x68, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x0e, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x55, 0x55, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x37, 0x0a, 0x0c, 0x67, 0x65, - 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x12, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x13, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x3c, 0x0a, 0x11, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x17, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x55, 0x55, 0x49, 0x44, 0x52, 0x65, + 0x12, 0x2f, 0x0a, 0x0f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, + 0x6f, 0x73, 0x74, 0x12, 0x0c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x32, 0x0a, 0x11, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x41, 0x6c, - 0x6c, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x0d, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x55, - 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x28, 0x0a, 0x05, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x0e, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x0f, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x39, 0x0a, 0x0e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, - 0x64, 0x12, 0x17, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, - 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x41, 0x0a, 0x12, 0x63, 0x72, + 0x70, 0x12, 0x37, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x73, 0x74, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x13, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x34, 0x0a, 0x12, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, + 0x12, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, + 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x29, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x0b, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2a, 0x0a, 0x0b, 0x67, + 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x79, 0x49, 0x64, 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, + 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x52, 0x6f, + 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x11, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, + 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x37, 0x0a, + 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x13, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, + 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, + 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x36, 0x0a, 0x13, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x0f, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x0e, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2c, + 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x0d, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x55, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x32, 0x0a, 0x10, + 0x62, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x12, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x55, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, + 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x37, 0x0a, 0x0c, 0x67, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4c, 0x69, 0x73, 0x74, + 0x12, 0x12, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3c, 0x0a, 0x11, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x17, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, + 0x55, 0x55, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, + 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x32, 0x0a, 0x11, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x55, 0x73, 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x0d, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x55, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x28, 0x0a, 0x05, 0x6c, + 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x69, + 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x69, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x39, 0x0a, 0x0e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, + 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x17, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, + 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x41, 0x0a, 0x12, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, - 0x12, 0x1b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, - 0x0b, 0x67, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x42, 0x79, 0x49, 0x64, 0x12, 0x0d, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x55, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x37, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x14, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2b, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0d, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x55, - 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x31, 0x0a, 0x0f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x55, 0x55, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x37, 0x0a, 0x0d, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x16, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, - 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x3b, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x17, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x55, 0x55, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x42, 0x08, - 0x5a, 0x06, 0x2e, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x42, 0x79, + 0x49, 0x64, 0x12, 0x0d, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x55, 0x49, 0x44, 0x52, 0x65, + 0x71, 0x1a, 0x12, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x37, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, + 0x4c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x55, + 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2b, + 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0d, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x55, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x31, 0x0a, 0x0f, 0x62, + 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0e, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x55, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x0e, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x37, + 0x0a, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, + 0x16, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, + 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3b, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x17, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x55, 0x55, 0x49, + 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x42, 0x08, 0x5a, 0x06, 0x2e, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -4390,176 +4650,190 @@ func file_rpc_core_proto_rawDescGZIP() []byte { return file_rpc_core_proto_rawDescData } -var file_rpc_core_proto_msgTypes = make([]protoimpl.MessageInfo, 50) +var file_rpc_core_proto_msgTypes = make([]protoimpl.MessageInfo, 53) var file_rpc_core_proto_goTypes = []interface{}{ - (*StatusCodeReq)(nil), // 0: core.StatusCodeReq - (*DepartmentListReq)(nil), // 1: core.DepartmentListReq - (*MenuInfo)(nil), // 2: core.MenuInfo - (*MenuParamListResp)(nil), // 3: core.MenuParamListResp - (*RoleInfo)(nil), // 4: core.RoleInfo - (*LoginReq)(nil), // 5: core.LoginReq - (*UpdateProfileReq)(nil), // 6: core.UpdateProfileReq - (*GetUserListReq)(nil), // 7: core.GetUserListReq - (*RoleMenuAuthorityReq)(nil), // 8: core.RoleMenuAuthorityReq - (*DictionaryList)(nil), // 9: core.DictionaryList - (*DictionaryDetailReq)(nil), // 10: core.DictionaryDetailReq - (*ProviderInfo)(nil), // 11: core.ProviderInfo - (*CallbackReq)(nil), // 12: core.CallbackReq - (*RoleListResp)(nil), // 13: core.RoleListResp - (*TokenInfo)(nil), // 14: core.TokenInfo + (*UUIDsReq)(nil), // 0: core.UUIDsReq + (*DictionaryDetailReq)(nil), // 1: core.DictionaryDetailReq + (*GetUserListReq)(nil), // 2: core.GetUserListReq + (*ApiListReq)(nil), // 3: core.ApiListReq + (*MenuParamListResp)(nil), // 4: core.MenuParamListResp + (*PostListReq)(nil), // 5: core.PostListReq + (*CreateOrUpdateMenuReq)(nil), // 6: core.CreateOrUpdateMenuReq + (*MenuRoleListResp)(nil), // 7: core.MenuRoleListResp + (*IDsReq)(nil), // 8: core.IDsReq + (*BaseResp)(nil), // 9: core.BaseResp + (*PostInfo)(nil), // 10: core.PostInfo + (*PostListResp)(nil), // 11: core.PostListResp + (*MenuInfo)(nil), // 12: core.MenuInfo + (*OauthLoginReq)(nil), // 13: core.OauthLoginReq + (*ProviderInfo)(nil), // 14: core.ProviderInfo (*DictionaryDetailList)(nil), // 15: core.DictionaryDetailList - (*CreateOrUpdateMenuReq)(nil), // 16: core.CreateOrUpdateMenuReq - (*Meta)(nil), // 17: core.Meta - (*MenuInfoList)(nil), // 18: core.MenuInfoList - (*OauthRedirectResp)(nil), // 19: core.OauthRedirectResp - (*TokenListResp)(nil), // 20: core.TokenListResp - (*LoginResp)(nil), // 21: core.LoginResp - (*IDsReq)(nil), // 22: core.IDsReq - (*UUIDsReq)(nil), // 23: core.UUIDsReq - (*DictionaryListReq)(nil), // 24: core.DictionaryListReq - (*MenuRoleInfo)(nil), // 25: core.MenuRoleInfo - (*CreateOrUpdateMenuParamReq)(nil), // 26: core.CreateOrUpdateMenuParamReq - (*ApiListResp)(nil), // 27: core.ApiListResp - (*PageInfoReq)(nil), // 28: core.PageInfoReq - (*StatusCodeUUIDReq)(nil), // 29: core.StatusCodeUUIDReq - (*DictionaryDetail)(nil), // 30: core.DictionaryDetail - (*MenuRoleListResp)(nil), // 31: core.MenuRoleListResp - (*ApiListReq)(nil), // 32: core.ApiListReq - (*ChangePasswordReq)(nil), // 33: core.ChangePasswordReq - (*CreateOrUpdateUserReq)(nil), // 34: core.CreateOrUpdateUserReq - (*UserInfoResp)(nil), // 35: core.UserInfoResp - (*ApiInfo)(nil), // 36: core.ApiInfo - (*Empty)(nil), // 37: core.Empty - (*IDReq)(nil), // 38: core.IDReq - (*BaseResp)(nil), // 39: core.BaseResp - (*DepartmentListResp)(nil), // 40: core.DepartmentListResp + (*UserInfoResp)(nil), // 16: core.UserInfoResp + (*DictionaryInfo)(nil), // 17: core.DictionaryInfo + (*UpdateProfileReq)(nil), // 18: core.UpdateProfileReq + (*LoginReq)(nil), // 19: core.LoginReq + (*UserListResp)(nil), // 20: core.UserListResp + (*PageInfoReq)(nil), // 21: core.PageInfoReq + (*MenuRoleInfo)(nil), // 22: core.MenuRoleInfo + (*CallbackReq)(nil), // 23: core.CallbackReq + (*TokenListReq)(nil), // 24: core.TokenListReq + (*ApiInfo)(nil), // 25: core.ApiInfo + (*ApiListResp)(nil), // 26: core.ApiListResp + (*DictionaryListReq)(nil), // 27: core.DictionaryListReq + (*RoleMenuAuthorityReq)(nil), // 28: core.RoleMenuAuthorityReq + (*UUIDReq)(nil), // 29: core.UUIDReq + (*RoleListResp)(nil), // 30: core.RoleListResp + (*RoleInfo)(nil), // 31: core.RoleInfo + (*LoginResp)(nil), // 32: core.LoginResp + (*RoleMenuAuthorityResp)(nil), // 33: core.RoleMenuAuthorityResp + (*DepartmentListReq)(nil), // 34: core.DepartmentListReq + (*DictionaryList)(nil), // 35: core.DictionaryList + (*Empty)(nil), // 36: core.Empty + (*DepartmentInfo)(nil), // 37: core.DepartmentInfo + (*DictionaryDetail)(nil), // 38: core.DictionaryDetail + (*ChangePasswordReq)(nil), // 39: core.ChangePasswordReq + (*OauthRedirectResp)(nil), // 40: core.OauthRedirectResp (*ProviderListResp)(nil), // 41: core.ProviderListResp - (*TokenListReq)(nil), // 42: core.TokenListReq - (*RoleMenuAuthorityResp)(nil), // 43: core.RoleMenuAuthorityResp - (*UUIDReq)(nil), // 44: core.UUIDReq - (*DepartmentInfo)(nil), // 45: core.DepartmentInfo - (*DictionaryInfo)(nil), // 46: core.DictionaryInfo - (*MenuParamResp)(nil), // 47: core.MenuParamResp - (*OauthLoginReq)(nil), // 48: core.OauthLoginReq - (*UserListResp)(nil), // 49: core.UserListResp + (*StatusCodeReq)(nil), // 42: core.StatusCodeReq + (*StatusCodeUUIDReq)(nil), // 43: core.StatusCodeUUIDReq + (*DepartmentListResp)(nil), // 44: core.DepartmentListResp + (*TokenInfo)(nil), // 45: core.TokenInfo + (*CreateOrUpdateUserReq)(nil), // 46: core.CreateOrUpdateUserReq + (*MenuInfoList)(nil), // 47: core.MenuInfoList + (*CreateOrUpdateMenuParamReq)(nil), // 48: core.CreateOrUpdateMenuParamReq + (*TokenListResp)(nil), // 49: core.TokenListResp + (*MenuParamResp)(nil), // 50: core.MenuParamResp + (*IDReq)(nil), // 51: core.IDReq + (*Meta)(nil), // 52: core.Meta } var file_rpc_core_proto_depIdxs = []int32{ - 17, // 0: core.MenuInfo.meta:type_name -> core.Meta - 47, // 1: core.MenuParamListResp.data:type_name -> core.MenuParamResp - 46, // 2: core.DictionaryList.data:type_name -> core.DictionaryInfo - 4, // 3: core.RoleListResp.data:type_name -> core.RoleInfo - 30, // 4: core.DictionaryDetailList.data:type_name -> core.DictionaryDetail - 17, // 5: core.CreateOrUpdateMenuReq.meta:type_name -> core.Meta - 2, // 6: core.MenuInfoList.data:type_name -> core.MenuInfo - 14, // 7: core.TokenListResp.data:type_name -> core.TokenInfo - 36, // 8: core.ApiListResp.data:type_name -> core.ApiInfo - 25, // 9: core.MenuRoleListResp.data:type_name -> core.MenuRoleInfo - 45, // 10: core.DepartmentListResp.data:type_name -> core.DepartmentInfo - 11, // 11: core.ProviderListResp.data:type_name -> core.ProviderInfo - 35, // 12: core.UserListResp.data:type_name -> core.UserInfoResp - 36, // 13: core.Core.createOrUpdateApi:input_type -> core.ApiInfo - 38, // 14: core.Core.deleteApi:input_type -> core.IDReq - 32, // 15: core.Core.getApiList:input_type -> core.ApiListReq - 38, // 16: core.Core.getMenuAuthority:input_type -> core.IDReq - 8, // 17: core.Core.createOrUpdateMenuAuthority:input_type -> core.RoleMenuAuthorityReq - 37, // 18: core.Core.initDatabase:input_type -> core.Empty - 45, // 19: core.Core.createOrUpdateDepartment:input_type -> core.DepartmentInfo - 1, // 20: core.Core.getDepartmentList:input_type -> core.DepartmentListReq - 38, // 21: core.Core.deleteDepartment:input_type -> core.IDReq - 22, // 22: core.Core.batchDeleteDepartment:input_type -> core.IDsReq - 0, // 23: core.Core.updateDepartmentStatus:input_type -> core.StatusCodeReq - 46, // 24: core.Core.createOrUpdateDictionary:input_type -> core.DictionaryInfo - 38, // 25: core.Core.deleteDictionary:input_type -> core.IDReq - 24, // 26: core.Core.getDictionaryList:input_type -> core.DictionaryListReq - 10, // 27: core.Core.getDetailByDictionaryName:input_type -> core.DictionaryDetailReq - 30, // 28: core.Core.createOrUpdateDictionaryDetail:input_type -> core.DictionaryDetail - 38, // 29: core.Core.deleteDictionaryDetail:input_type -> core.IDReq - 16, // 30: core.Core.createOrUpdateMenu:input_type -> core.CreateOrUpdateMenuReq - 38, // 31: core.Core.deleteMenu:input_type -> core.IDReq - 38, // 32: core.Core.getMenuListByRole:input_type -> core.IDReq - 28, // 33: core.Core.getMenuList:input_type -> core.PageInfoReq - 26, // 34: core.Core.createOrUpdateMenuParam:input_type -> core.CreateOrUpdateMenuParamReq - 38, // 35: core.Core.deleteMenuParam:input_type -> core.IDReq - 38, // 36: core.Core.getMenuParamListByMenuId:input_type -> core.IDReq - 11, // 37: core.Core.createOrUpdateProvider:input_type -> core.ProviderInfo - 38, // 38: core.Core.deleteProvider:input_type -> core.IDReq - 28, // 39: core.Core.getProviderList:input_type -> core.PageInfoReq - 48, // 40: core.Core.oauthLogin:input_type -> core.OauthLoginReq - 12, // 41: core.Core.oauthCallback:input_type -> core.CallbackReq - 4, // 42: core.Core.createOrUpdateRole:input_type -> core.RoleInfo - 38, // 43: core.Core.deleteRole:input_type -> core.IDReq - 38, // 44: core.Core.getRoleById:input_type -> core.IDReq - 28, // 45: core.Core.getRoleList:input_type -> core.PageInfoReq - 0, // 46: core.Core.updateRoleStatus:input_type -> core.StatusCodeReq - 14, // 47: core.Core.createOrUpdateToken:input_type -> core.TokenInfo - 44, // 48: core.Core.deleteToken:input_type -> core.UUIDReq - 23, // 49: core.Core.batchDeleteToken:input_type -> core.UUIDsReq - 42, // 50: core.Core.getTokenList:input_type -> core.TokenListReq - 29, // 51: core.Core.updateTokenStatus:input_type -> core.StatusCodeUUIDReq - 44, // 52: core.Core.blockUserAllToken:input_type -> core.UUIDReq - 5, // 53: core.Core.login:input_type -> core.LoginReq - 33, // 54: core.Core.changePassword:input_type -> core.ChangePasswordReq - 34, // 55: core.Core.createOrUpdateUser:input_type -> core.CreateOrUpdateUserReq - 44, // 56: core.Core.getUserById:input_type -> core.UUIDReq - 7, // 57: core.Core.getUserList:input_type -> core.GetUserListReq - 44, // 58: core.Core.deleteUser:input_type -> core.UUIDReq - 23, // 59: core.Core.batchDeleteUser:input_type -> core.UUIDsReq - 6, // 60: core.Core.updateProfile:input_type -> core.UpdateProfileReq - 29, // 61: core.Core.updateUserStatus:input_type -> core.StatusCodeUUIDReq - 39, // 62: core.Core.createOrUpdateApi:output_type -> core.BaseResp - 39, // 63: core.Core.deleteApi:output_type -> core.BaseResp - 27, // 64: core.Core.getApiList:output_type -> core.ApiListResp - 43, // 65: core.Core.getMenuAuthority:output_type -> core.RoleMenuAuthorityResp - 39, // 66: core.Core.createOrUpdateMenuAuthority:output_type -> core.BaseResp - 39, // 67: core.Core.initDatabase:output_type -> core.BaseResp - 39, // 68: core.Core.createOrUpdateDepartment:output_type -> core.BaseResp - 40, // 69: core.Core.getDepartmentList:output_type -> core.DepartmentListResp - 39, // 70: core.Core.deleteDepartment:output_type -> core.BaseResp - 39, // 71: core.Core.batchDeleteDepartment:output_type -> core.BaseResp - 39, // 72: core.Core.updateDepartmentStatus:output_type -> core.BaseResp - 39, // 73: core.Core.createOrUpdateDictionary:output_type -> core.BaseResp - 39, // 74: core.Core.deleteDictionary:output_type -> core.BaseResp - 9, // 75: core.Core.getDictionaryList:output_type -> core.DictionaryList - 15, // 76: core.Core.getDetailByDictionaryName:output_type -> core.DictionaryDetailList - 39, // 77: core.Core.createOrUpdateDictionaryDetail:output_type -> core.BaseResp - 39, // 78: core.Core.deleteDictionaryDetail:output_type -> core.BaseResp - 39, // 79: core.Core.createOrUpdateMenu:output_type -> core.BaseResp - 39, // 80: core.Core.deleteMenu:output_type -> core.BaseResp - 18, // 81: core.Core.getMenuListByRole:output_type -> core.MenuInfoList - 18, // 82: core.Core.getMenuList:output_type -> core.MenuInfoList - 39, // 83: core.Core.createOrUpdateMenuParam:output_type -> core.BaseResp - 39, // 84: core.Core.deleteMenuParam:output_type -> core.BaseResp - 3, // 85: core.Core.getMenuParamListByMenuId:output_type -> core.MenuParamListResp - 39, // 86: core.Core.createOrUpdateProvider:output_type -> core.BaseResp - 39, // 87: core.Core.deleteProvider:output_type -> core.BaseResp - 41, // 88: core.Core.getProviderList:output_type -> core.ProviderListResp - 19, // 89: core.Core.oauthLogin:output_type -> core.OauthRedirectResp - 21, // 90: core.Core.oauthCallback:output_type -> core.LoginResp - 39, // 91: core.Core.createOrUpdateRole:output_type -> core.BaseResp - 39, // 92: core.Core.deleteRole:output_type -> core.BaseResp - 4, // 93: core.Core.getRoleById:output_type -> core.RoleInfo - 13, // 94: core.Core.getRoleList:output_type -> core.RoleListResp - 39, // 95: core.Core.updateRoleStatus:output_type -> core.BaseResp - 39, // 96: core.Core.createOrUpdateToken:output_type -> core.BaseResp - 39, // 97: core.Core.deleteToken:output_type -> core.BaseResp - 39, // 98: core.Core.batchDeleteToken:output_type -> core.BaseResp - 20, // 99: core.Core.getTokenList:output_type -> core.TokenListResp - 39, // 100: core.Core.updateTokenStatus:output_type -> core.BaseResp - 39, // 101: core.Core.blockUserAllToken:output_type -> core.BaseResp - 21, // 102: core.Core.login:output_type -> core.LoginResp - 39, // 103: core.Core.changePassword:output_type -> core.BaseResp - 39, // 104: core.Core.createOrUpdateUser:output_type -> core.BaseResp - 35, // 105: core.Core.getUserById:output_type -> core.UserInfoResp - 49, // 106: core.Core.getUserList:output_type -> core.UserListResp - 39, // 107: core.Core.deleteUser:output_type -> core.BaseResp - 39, // 108: core.Core.batchDeleteUser:output_type -> core.BaseResp - 39, // 109: core.Core.updateProfile:output_type -> core.BaseResp - 39, // 110: core.Core.updateUserStatus:output_type -> core.BaseResp - 62, // [62:111] is the sub-list for method output_type - 13, // [13:62] is the sub-list for method input_type - 13, // [13:13] is the sub-list for extension type_name - 13, // [13:13] is the sub-list for extension extendee - 0, // [0:13] is the sub-list for field type_name + 50, // 0: core.MenuParamListResp.data:type_name -> core.MenuParamResp + 52, // 1: core.CreateOrUpdateMenuReq.meta:type_name -> core.Meta + 22, // 2: core.MenuRoleListResp.data:type_name -> core.MenuRoleInfo + 10, // 3: core.PostListResp.data:type_name -> core.PostInfo + 52, // 4: core.MenuInfo.meta:type_name -> core.Meta + 38, // 5: core.DictionaryDetailList.data:type_name -> core.DictionaryDetail + 16, // 6: core.UserListResp.data:type_name -> core.UserInfoResp + 25, // 7: core.ApiListResp.data:type_name -> core.ApiInfo + 31, // 8: core.RoleListResp.data:type_name -> core.RoleInfo + 17, // 9: core.DictionaryList.data:type_name -> core.DictionaryInfo + 14, // 10: core.ProviderListResp.data:type_name -> core.ProviderInfo + 37, // 11: core.DepartmentListResp.data:type_name -> core.DepartmentInfo + 12, // 12: core.MenuInfoList.data:type_name -> core.MenuInfo + 45, // 13: core.TokenListResp.data:type_name -> core.TokenInfo + 25, // 14: core.Core.createOrUpdateApi:input_type -> core.ApiInfo + 51, // 15: core.Core.deleteApi:input_type -> core.IDReq + 3, // 16: core.Core.getApiList:input_type -> core.ApiListReq + 51, // 17: core.Core.getMenuAuthority:input_type -> core.IDReq + 28, // 18: core.Core.createOrUpdateMenuAuthority:input_type -> core.RoleMenuAuthorityReq + 36, // 19: core.Core.initDatabase:input_type -> core.Empty + 37, // 20: core.Core.createOrUpdateDepartment:input_type -> core.DepartmentInfo + 34, // 21: core.Core.getDepartmentList:input_type -> core.DepartmentListReq + 51, // 22: core.Core.deleteDepartment:input_type -> core.IDReq + 8, // 23: core.Core.batchDeleteDepartment:input_type -> core.IDsReq + 42, // 24: core.Core.updateDepartmentStatus:input_type -> core.StatusCodeReq + 17, // 25: core.Core.createOrUpdateDictionary:input_type -> core.DictionaryInfo + 51, // 26: core.Core.deleteDictionary:input_type -> core.IDReq + 27, // 27: core.Core.getDictionaryList:input_type -> core.DictionaryListReq + 1, // 28: core.Core.getDetailByDictionaryName:input_type -> core.DictionaryDetailReq + 38, // 29: core.Core.createOrUpdateDictionaryDetail:input_type -> core.DictionaryDetail + 51, // 30: core.Core.deleteDictionaryDetail:input_type -> core.IDReq + 6, // 31: core.Core.createOrUpdateMenu:input_type -> core.CreateOrUpdateMenuReq + 51, // 32: core.Core.deleteMenu:input_type -> core.IDReq + 51, // 33: core.Core.getMenuListByRole:input_type -> core.IDReq + 21, // 34: core.Core.getMenuList:input_type -> core.PageInfoReq + 48, // 35: core.Core.createOrUpdateMenuParam:input_type -> core.CreateOrUpdateMenuParamReq + 51, // 36: core.Core.deleteMenuParam:input_type -> core.IDReq + 51, // 37: core.Core.getMenuParamListByMenuId:input_type -> core.IDReq + 14, // 38: core.Core.createOrUpdateProvider:input_type -> core.ProviderInfo + 51, // 39: core.Core.deleteProvider:input_type -> core.IDReq + 21, // 40: core.Core.getProviderList:input_type -> core.PageInfoReq + 13, // 41: core.Core.oauthLogin:input_type -> core.OauthLoginReq + 23, // 42: core.Core.oauthCallback:input_type -> core.CallbackReq + 10, // 43: core.Core.createOrUpdatePost:input_type -> core.PostInfo + 5, // 44: core.Core.getPostList:input_type -> core.PostListReq + 51, // 45: core.Core.deletePost:input_type -> core.IDReq + 8, // 46: core.Core.batchDeletePost:input_type -> core.IDsReq + 42, // 47: core.Core.updatePostStatus:input_type -> core.StatusCodeReq + 31, // 48: core.Core.createOrUpdateRole:input_type -> core.RoleInfo + 51, // 49: core.Core.deleteRole:input_type -> core.IDReq + 51, // 50: core.Core.getRoleById:input_type -> core.IDReq + 21, // 51: core.Core.getRoleList:input_type -> core.PageInfoReq + 42, // 52: core.Core.updateRoleStatus:input_type -> core.StatusCodeReq + 45, // 53: core.Core.createOrUpdateToken:input_type -> core.TokenInfo + 29, // 54: core.Core.deleteToken:input_type -> core.UUIDReq + 0, // 55: core.Core.batchDeleteToken:input_type -> core.UUIDsReq + 24, // 56: core.Core.getTokenList:input_type -> core.TokenListReq + 43, // 57: core.Core.updateTokenStatus:input_type -> core.StatusCodeUUIDReq + 29, // 58: core.Core.blockUserAllToken:input_type -> core.UUIDReq + 19, // 59: core.Core.login:input_type -> core.LoginReq + 39, // 60: core.Core.changePassword:input_type -> core.ChangePasswordReq + 46, // 61: core.Core.createOrUpdateUser:input_type -> core.CreateOrUpdateUserReq + 29, // 62: core.Core.getUserById:input_type -> core.UUIDReq + 2, // 63: core.Core.getUserList:input_type -> core.GetUserListReq + 29, // 64: core.Core.deleteUser:input_type -> core.UUIDReq + 0, // 65: core.Core.batchDeleteUser:input_type -> core.UUIDsReq + 18, // 66: core.Core.updateProfile:input_type -> core.UpdateProfileReq + 43, // 67: core.Core.updateUserStatus:input_type -> core.StatusCodeUUIDReq + 9, // 68: core.Core.createOrUpdateApi:output_type -> core.BaseResp + 9, // 69: core.Core.deleteApi:output_type -> core.BaseResp + 26, // 70: core.Core.getApiList:output_type -> core.ApiListResp + 33, // 71: core.Core.getMenuAuthority:output_type -> core.RoleMenuAuthorityResp + 9, // 72: core.Core.createOrUpdateMenuAuthority:output_type -> core.BaseResp + 9, // 73: core.Core.initDatabase:output_type -> core.BaseResp + 9, // 74: core.Core.createOrUpdateDepartment:output_type -> core.BaseResp + 44, // 75: core.Core.getDepartmentList:output_type -> core.DepartmentListResp + 9, // 76: core.Core.deleteDepartment:output_type -> core.BaseResp + 9, // 77: core.Core.batchDeleteDepartment:output_type -> core.BaseResp + 9, // 78: core.Core.updateDepartmentStatus:output_type -> core.BaseResp + 9, // 79: core.Core.createOrUpdateDictionary:output_type -> core.BaseResp + 9, // 80: core.Core.deleteDictionary:output_type -> core.BaseResp + 35, // 81: core.Core.getDictionaryList:output_type -> core.DictionaryList + 15, // 82: core.Core.getDetailByDictionaryName:output_type -> core.DictionaryDetailList + 9, // 83: core.Core.createOrUpdateDictionaryDetail:output_type -> core.BaseResp + 9, // 84: core.Core.deleteDictionaryDetail:output_type -> core.BaseResp + 9, // 85: core.Core.createOrUpdateMenu:output_type -> core.BaseResp + 9, // 86: core.Core.deleteMenu:output_type -> core.BaseResp + 47, // 87: core.Core.getMenuListByRole:output_type -> core.MenuInfoList + 47, // 88: core.Core.getMenuList:output_type -> core.MenuInfoList + 9, // 89: core.Core.createOrUpdateMenuParam:output_type -> core.BaseResp + 9, // 90: core.Core.deleteMenuParam:output_type -> core.BaseResp + 4, // 91: core.Core.getMenuParamListByMenuId:output_type -> core.MenuParamListResp + 9, // 92: core.Core.createOrUpdateProvider:output_type -> core.BaseResp + 9, // 93: core.Core.deleteProvider:output_type -> core.BaseResp + 41, // 94: core.Core.getProviderList:output_type -> core.ProviderListResp + 40, // 95: core.Core.oauthLogin:output_type -> core.OauthRedirectResp + 32, // 96: core.Core.oauthCallback:output_type -> core.LoginResp + 9, // 97: core.Core.createOrUpdatePost:output_type -> core.BaseResp + 11, // 98: core.Core.getPostList:output_type -> core.PostListResp + 9, // 99: core.Core.deletePost:output_type -> core.BaseResp + 9, // 100: core.Core.batchDeletePost:output_type -> core.BaseResp + 9, // 101: core.Core.updatePostStatus:output_type -> core.BaseResp + 9, // 102: core.Core.createOrUpdateRole:output_type -> core.BaseResp + 9, // 103: core.Core.deleteRole:output_type -> core.BaseResp + 31, // 104: core.Core.getRoleById:output_type -> core.RoleInfo + 30, // 105: core.Core.getRoleList:output_type -> core.RoleListResp + 9, // 106: core.Core.updateRoleStatus:output_type -> core.BaseResp + 9, // 107: core.Core.createOrUpdateToken:output_type -> core.BaseResp + 9, // 108: core.Core.deleteToken:output_type -> core.BaseResp + 9, // 109: core.Core.batchDeleteToken:output_type -> core.BaseResp + 49, // 110: core.Core.getTokenList:output_type -> core.TokenListResp + 9, // 111: core.Core.updateTokenStatus:output_type -> core.BaseResp + 9, // 112: core.Core.blockUserAllToken:output_type -> core.BaseResp + 32, // 113: core.Core.login:output_type -> core.LoginResp + 9, // 114: core.Core.changePassword:output_type -> core.BaseResp + 9, // 115: core.Core.createOrUpdateUser:output_type -> core.BaseResp + 16, // 116: core.Core.getUserById:output_type -> core.UserInfoResp + 20, // 117: core.Core.getUserList:output_type -> core.UserListResp + 9, // 118: core.Core.deleteUser:output_type -> core.BaseResp + 9, // 119: core.Core.batchDeleteUser:output_type -> core.BaseResp + 9, // 120: core.Core.updateProfile:output_type -> core.BaseResp + 9, // 121: core.Core.updateUserStatus:output_type -> core.BaseResp + 68, // [68:122] is the sub-list for method output_type + 14, // [14:68] is the sub-list for method input_type + 14, // [14:14] is the sub-list for extension type_name + 14, // [14:14] is the sub-list for extension extendee + 0, // [0:14] is the sub-list for field type_name } func init() { file_rpc_core_proto_init() } @@ -4569,7 +4843,7 @@ func file_rpc_core_proto_init() { } if !protoimpl.UnsafeEnabled { file_rpc_core_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatusCodeReq); i { + switch v := v.(*UUIDsReq); i { case 0: return &v.state case 1: @@ -4581,7 +4855,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DepartmentListReq); i { + switch v := v.(*DictionaryDetailReq); i { case 0: return &v.state case 1: @@ -4593,7 +4867,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MenuInfo); i { + switch v := v.(*GetUserListReq); i { case 0: return &v.state case 1: @@ -4605,7 +4879,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MenuParamListResp); i { + switch v := v.(*ApiListReq); i { case 0: return &v.state case 1: @@ -4617,7 +4891,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RoleInfo); i { + switch v := v.(*MenuParamListResp); i { case 0: return &v.state case 1: @@ -4629,7 +4903,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LoginReq); i { + switch v := v.(*PostListReq); i { case 0: return &v.state case 1: @@ -4641,7 +4915,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateProfileReq); i { + switch v := v.(*CreateOrUpdateMenuReq); i { case 0: return &v.state case 1: @@ -4653,7 +4927,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetUserListReq); i { + switch v := v.(*MenuRoleListResp); i { case 0: return &v.state case 1: @@ -4665,7 +4939,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RoleMenuAuthorityReq); i { + switch v := v.(*IDsReq); i { case 0: return &v.state case 1: @@ -4677,7 +4951,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DictionaryList); i { + switch v := v.(*BaseResp); i { case 0: return &v.state case 1: @@ -4689,7 +4963,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DictionaryDetailReq); i { + switch v := v.(*PostInfo); i { case 0: return &v.state case 1: @@ -4701,7 +4975,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProviderInfo); i { + switch v := v.(*PostListResp); i { case 0: return &v.state case 1: @@ -4713,7 +4987,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CallbackReq); i { + switch v := v.(*MenuInfo); i { case 0: return &v.state case 1: @@ -4725,7 +4999,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RoleListResp); i { + switch v := v.(*OauthLoginReq); i { case 0: return &v.state case 1: @@ -4737,7 +5011,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TokenInfo); i { + switch v := v.(*ProviderInfo); i { case 0: return &v.state case 1: @@ -4761,7 +5035,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateOrUpdateMenuReq); i { + switch v := v.(*UserInfoResp); i { case 0: return &v.state case 1: @@ -4773,7 +5047,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Meta); i { + switch v := v.(*DictionaryInfo); i { case 0: return &v.state case 1: @@ -4785,7 +5059,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MenuInfoList); i { + switch v := v.(*UpdateProfileReq); i { case 0: return &v.state case 1: @@ -4797,7 +5071,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OauthRedirectResp); i { + switch v := v.(*LoginReq); i { case 0: return &v.state case 1: @@ -4809,7 +5083,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TokenListResp); i { + switch v := v.(*UserListResp); i { case 0: return &v.state case 1: @@ -4821,7 +5095,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LoginResp); i { + switch v := v.(*PageInfoReq); i { case 0: return &v.state case 1: @@ -4833,7 +5107,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IDsReq); i { + switch v := v.(*MenuRoleInfo); i { case 0: return &v.state case 1: @@ -4845,7 +5119,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UUIDsReq); i { + switch v := v.(*CallbackReq); i { case 0: return &v.state case 1: @@ -4857,7 +5131,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DictionaryListReq); i { + switch v := v.(*TokenListReq); i { case 0: return &v.state case 1: @@ -4869,7 +5143,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MenuRoleInfo); i { + switch v := v.(*ApiInfo); i { case 0: return &v.state case 1: @@ -4881,7 +5155,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateOrUpdateMenuParamReq); i { + switch v := v.(*ApiListResp); i { case 0: return &v.state case 1: @@ -4893,7 +5167,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ApiListResp); i { + switch v := v.(*DictionaryListReq); i { case 0: return &v.state case 1: @@ -4905,7 +5179,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PageInfoReq); i { + switch v := v.(*RoleMenuAuthorityReq); i { case 0: return &v.state case 1: @@ -4917,7 +5191,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatusCodeUUIDReq); i { + switch v := v.(*UUIDReq); i { case 0: return &v.state case 1: @@ -4929,7 +5203,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DictionaryDetail); i { + switch v := v.(*RoleListResp); i { case 0: return &v.state case 1: @@ -4941,7 +5215,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MenuRoleListResp); i { + switch v := v.(*RoleInfo); i { case 0: return &v.state case 1: @@ -4953,7 +5227,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ApiListReq); i { + switch v := v.(*LoginResp); i { case 0: return &v.state case 1: @@ -4965,7 +5239,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChangePasswordReq); i { + switch v := v.(*RoleMenuAuthorityResp); i { case 0: return &v.state case 1: @@ -4977,7 +5251,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateOrUpdateUserReq); i { + switch v := v.(*DepartmentListReq); i { case 0: return &v.state case 1: @@ -4989,7 +5263,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UserInfoResp); i { + switch v := v.(*DictionaryList); i { case 0: return &v.state case 1: @@ -5001,7 +5275,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ApiInfo); i { + switch v := v.(*Empty); i { case 0: return &v.state case 1: @@ -5013,7 +5287,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Empty); i { + switch v := v.(*DepartmentInfo); i { case 0: return &v.state case 1: @@ -5025,7 +5299,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IDReq); i { + switch v := v.(*DictionaryDetail); i { case 0: return &v.state case 1: @@ -5037,7 +5311,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BaseResp); i { + switch v := v.(*ChangePasswordReq); i { case 0: return &v.state case 1: @@ -5049,7 +5323,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DepartmentListResp); i { + switch v := v.(*OauthRedirectResp); i { case 0: return &v.state case 1: @@ -5073,7 +5347,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TokenListReq); i { + switch v := v.(*StatusCodeReq); i { case 0: return &v.state case 1: @@ -5085,7 +5359,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RoleMenuAuthorityResp); i { + switch v := v.(*StatusCodeUUIDReq); i { case 0: return &v.state case 1: @@ -5097,7 +5371,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UUIDReq); i { + switch v := v.(*DepartmentListResp); i { case 0: return &v.state case 1: @@ -5109,7 +5383,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DepartmentInfo); i { + switch v := v.(*TokenInfo); i { case 0: return &v.state case 1: @@ -5121,7 +5395,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DictionaryInfo); i { + switch v := v.(*CreateOrUpdateUserReq); i { case 0: return &v.state case 1: @@ -5133,7 +5407,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MenuParamResp); i { + switch v := v.(*MenuInfoList); i { case 0: return &v.state case 1: @@ -5145,7 +5419,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OauthLoginReq); i { + switch v := v.(*CreateOrUpdateMenuParamReq); i { case 0: return &v.state case 1: @@ -5157,7 +5431,43 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UserListResp); i { + switch v := v.(*TokenListResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_core_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MenuParamResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_core_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IDReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_core_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Meta); i { case 0: return &v.state case 1: @@ -5175,7 +5485,7 @@ func file_rpc_core_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_rpc_core_proto_rawDesc, NumEnums: 0, - NumMessages: 50, + NumMessages: 53, NumExtensions: 0, NumServices: 1, }, diff --git a/rpc/types/core/core_grpc.pb.go b/rpc/types/core/core_grpc.pb.go index 8a0f64a0..ced38299 100644 --- a/rpc/types/core/core_grpc.pb.go +++ b/rpc/types/core/core_grpc.pb.go @@ -81,6 +81,17 @@ type CoreClient interface { OauthLogin(ctx context.Context, in *OauthLoginReq, opts ...grpc.CallOption) (*OauthRedirectResp, error) // group: oauth OauthCallback(ctx context.Context, in *CallbackReq, opts ...grpc.CallOption) (*LoginResp, error) + // Post management + // group: post + CreateOrUpdatePost(ctx context.Context, in *PostInfo, opts ...grpc.CallOption) (*BaseResp, error) + // group: post + GetPostList(ctx context.Context, in *PostListReq, opts ...grpc.CallOption) (*PostListResp, error) + // group: post + DeletePost(ctx context.Context, in *IDReq, opts ...grpc.CallOption) (*BaseResp, error) + // group: post + BatchDeletePost(ctx context.Context, in *IDsReq, opts ...grpc.CallOption) (*BaseResp, error) + // group: post + UpdatePostStatus(ctx context.Context, in *StatusCodeReq, opts ...grpc.CallOption) (*BaseResp, error) // group: role CreateOrUpdateRole(ctx context.Context, in *RoleInfo, opts ...grpc.CallOption) (*BaseResp, error) // group: role @@ -392,6 +403,51 @@ func (c *coreClient) OauthCallback(ctx context.Context, in *CallbackReq, opts .. return out, nil } +func (c *coreClient) CreateOrUpdatePost(ctx context.Context, in *PostInfo, opts ...grpc.CallOption) (*BaseResp, error) { + out := new(BaseResp) + err := c.cc.Invoke(ctx, "/core.Core/createOrUpdatePost", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *coreClient) GetPostList(ctx context.Context, in *PostListReq, opts ...grpc.CallOption) (*PostListResp, error) { + out := new(PostListResp) + err := c.cc.Invoke(ctx, "/core.Core/getPostList", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *coreClient) DeletePost(ctx context.Context, in *IDReq, opts ...grpc.CallOption) (*BaseResp, error) { + out := new(BaseResp) + err := c.cc.Invoke(ctx, "/core.Core/deletePost", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *coreClient) BatchDeletePost(ctx context.Context, in *IDsReq, opts ...grpc.CallOption) (*BaseResp, error) { + out := new(BaseResp) + err := c.cc.Invoke(ctx, "/core.Core/batchDeletePost", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *coreClient) UpdatePostStatus(ctx context.Context, in *StatusCodeReq, opts ...grpc.CallOption) (*BaseResp, error) { + out := new(BaseResp) + err := c.cc.Invoke(ctx, "/core.Core/updatePostStatus", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *coreClient) CreateOrUpdateRole(ctx context.Context, in *RoleInfo, opts ...grpc.CallOption) (*BaseResp, error) { out := new(BaseResp) err := c.cc.Invoke(ctx, "/core.Core/createOrUpdateRole", in, out, opts...) @@ -635,6 +691,17 @@ type CoreServer interface { OauthLogin(context.Context, *OauthLoginReq) (*OauthRedirectResp, error) // group: oauth OauthCallback(context.Context, *CallbackReq) (*LoginResp, error) + // Post management + // group: post + CreateOrUpdatePost(context.Context, *PostInfo) (*BaseResp, error) + // group: post + GetPostList(context.Context, *PostListReq) (*PostListResp, error) + // group: post + DeletePost(context.Context, *IDReq) (*BaseResp, error) + // group: post + BatchDeletePost(context.Context, *IDsReq) (*BaseResp, error) + // group: post + UpdatePostStatus(context.Context, *StatusCodeReq) (*BaseResp, error) // group: role CreateOrUpdateRole(context.Context, *RoleInfo) (*BaseResp, error) // group: role @@ -769,6 +836,21 @@ func (UnimplementedCoreServer) OauthLogin(context.Context, *OauthLoginReq) (*Oau func (UnimplementedCoreServer) OauthCallback(context.Context, *CallbackReq) (*LoginResp, error) { return nil, status.Errorf(codes.Unimplemented, "method OauthCallback not implemented") } +func (UnimplementedCoreServer) CreateOrUpdatePost(context.Context, *PostInfo) (*BaseResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateOrUpdatePost not implemented") +} +func (UnimplementedCoreServer) GetPostList(context.Context, *PostListReq) (*PostListResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetPostList not implemented") +} +func (UnimplementedCoreServer) DeletePost(context.Context, *IDReq) (*BaseResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeletePost not implemented") +} +func (UnimplementedCoreServer) BatchDeletePost(context.Context, *IDsReq) (*BaseResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method BatchDeletePost not implemented") +} +func (UnimplementedCoreServer) UpdatePostStatus(context.Context, *StatusCodeReq) (*BaseResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdatePostStatus not implemented") +} func (UnimplementedCoreServer) CreateOrUpdateRole(context.Context, *RoleInfo) (*BaseResp, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateOrUpdateRole not implemented") } @@ -1364,6 +1446,96 @@ func _Core_OauthCallback_Handler(srv interface{}, ctx context.Context, dec func( return interceptor(ctx, in, info, handler) } +func _Core_CreateOrUpdatePost_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(PostInfo) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CoreServer).CreateOrUpdatePost(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/core.Core/createOrUpdatePost", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CoreServer).CreateOrUpdatePost(ctx, req.(*PostInfo)) + } + return interceptor(ctx, in, info, handler) +} + +func _Core_GetPostList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(PostListReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CoreServer).GetPostList(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/core.Core/getPostList", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CoreServer).GetPostList(ctx, req.(*PostListReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Core_DeletePost_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(IDReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CoreServer).DeletePost(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/core.Core/deletePost", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CoreServer).DeletePost(ctx, req.(*IDReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Core_BatchDeletePost_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(IDsReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CoreServer).BatchDeletePost(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/core.Core/batchDeletePost", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CoreServer).BatchDeletePost(ctx, req.(*IDsReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Core_UpdatePostStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(StatusCodeReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CoreServer).UpdatePostStatus(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/core.Core/updatePostStatus", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CoreServer).UpdatePostStatus(ctx, req.(*StatusCodeReq)) + } + return interceptor(ctx, in, info, handler) +} + func _Core_CreateOrUpdateRole_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(RoleInfo) if err := dec(in); err != nil { @@ -1847,6 +2019,26 @@ var Core_ServiceDesc = grpc.ServiceDesc{ MethodName: "oauthCallback", Handler: _Core_OauthCallback_Handler, }, + { + MethodName: "createOrUpdatePost", + Handler: _Core_CreateOrUpdatePost_Handler, + }, + { + MethodName: "getPostList", + Handler: _Core_GetPostList_Handler, + }, + { + MethodName: "deletePost", + Handler: _Core_DeletePost_Handler, + }, + { + MethodName: "batchDeletePost", + Handler: _Core_BatchDeletePost_Handler, + }, + { + MethodName: "updatePostStatus", + Handler: _Core_UpdatePostStatus_Handler, + }, { MethodName: "createOrUpdateRole", Handler: _Core_CreateOrUpdateRole_Handler, From b7afbc620afb8117d1da844f9a53329acfc61819 Mon Sep 17 00:00:00 2001 From: Ryan SU <1137661202@qq.com> Date: Sun, 5 Feb 2023 13:57:47 +0800 Subject: [PATCH 2/2] feat: post management in rpc and api --- api/desc/all.api | 3 +- api/desc/post.api | 101 + api/desc/user.api | 9 + .../handler/post/batch_delete_post_handler.go | 45 + .../post/create_or_update_post_handler.go | 45 + .../handler/post/delete_post_handler.go | 45 + .../handler/post/get_post_list_handler.go | 45 + .../post/update_post_status_handler.go | 45 + api/internal/handler/routes.go | 35 + .../logic/post/batch_delete_post_logic.go | 39 + .../logic/post/create_or_update_post_logic.go | 44 + api/internal/logic/post/delete_post_logic.go | 39 + .../logic/post/get_post_list_logic.go | 63 + .../logic/post/update_post_status_logic.go | 40 + .../logic/user/create_or_update_user_logic.go | 1 + .../logic/user/get_user_list_logic.go | 8 +- api/internal/types/types.go | 66 + core.yml | 105 + pkg/ent/post.go | 4 +- pkg/ent/schema/post.go | 4 +- pkg/ent/schema/user.go | 2 +- pkg/ent/user.go | 2 +- pkg/i18n/locale/en.json | 14 +- pkg/i18n/locale/zh.json | 14 +- rpc/core.proto | 485 +- rpc/desc/user.proto | 3 + .../logic/base/init_database_logic.go | 82 +- rpc/internal/logic/post/delete_post_logic.go | 19 +- .../logic/user/create_or_update_user_logic.go | 3 + .../logic/user/get_user_list_logic.go | 5 + rpc/types/core/core.pb.go | 5065 +++++++++-------- 31 files changed, 3702 insertions(+), 2778 deletions(-) create mode 100644 api/desc/post.api create mode 100644 api/internal/handler/post/batch_delete_post_handler.go create mode 100644 api/internal/handler/post/create_or_update_post_handler.go create mode 100644 api/internal/handler/post/delete_post_handler.go create mode 100644 api/internal/handler/post/get_post_list_handler.go create mode 100644 api/internal/handler/post/update_post_status_handler.go create mode 100644 api/internal/logic/post/batch_delete_post_logic.go create mode 100644 api/internal/logic/post/create_or_update_post_logic.go create mode 100644 api/internal/logic/post/delete_post_logic.go create mode 100644 api/internal/logic/post/get_post_list_logic.go create mode 100644 api/internal/logic/post/update_post_status_logic.go diff --git a/api/desc/all.api b/api/desc/all.api index 5ca7182d..e88f6e12 100644 --- a/api/desc/all.api +++ b/api/desc/all.api @@ -8,4 +8,5 @@ import "dictionary.api" import "oauth.api" import "token.api" import "core.api" -import "department.api" \ No newline at end of file +import "department.api" +import "post.api" \ No newline at end of file diff --git a/api/desc/post.api b/api/desc/post.api new file mode 100644 index 00000000..63e3be20 --- /dev/null +++ b/api/desc/post.api @@ -0,0 +1,101 @@ +import "base.api" + +type ( + // The response data of post information | 职位信息 + PostInfo { + BaseInfo + + // Name translation | 名称翻译 + Trans string `json:"trans"` + + // Status + Status uint32 `json:"status"` + + // Sort + Sort uint32 `json:"sort"` + + // Name + Name string `json:"name"` + + // Code + Code string `json:"code"` + + // Remark + Remark string `json:"remark"` + } + + // Create or update post information request | 创建或更新职位信息 + CreateOrUpdatePostReq { + // ID + // Required: true + Id uint64 `json:"id"` + + // Status + Status uint32 `json:"status"` + + // Sort + Sort uint32 `json:"sort"` + + // Name + Name string `json:"name"` + + // Code + Code string `json:"code"` + + // Remark + Remark string `json:"remark"` + } + + // The response data of post list | 职位列表数据 + PostListResp { + BaseDataInfo + + // Post list data | 职位 列表数据 + Data PostListInfo `json:"data"` + } + + // Post list data | 职位 列表数据 + PostListInfo { + BaseListInfo + + // The API list data | 职位 列表数据 + Data []PostInfo `json:"data"` + } + + // Get post list request params | 职位列表请求参数 + PostListReq { + PageInfo + + // Name + Name string `json:"name,optional"` + } +) + +@server( + jwt: Auth + group: post + middleware: Authority +) + +service core { + // Create or update post information | 创建或更新职位 + @handler createOrUpdatePost + post /post/create_or_update (CreateOrUpdatePostReq) returns (BaseMsgResp) + + // Delete post information | 删除职位信息 + @handler deletePost + post /post/delete (IDReq) returns (BaseMsgResp) + + // Get post list | 获取职位列表 + @handler getPostList + post /post/list (PostListReq) returns (PostListResp) + + // Delete post information | 删除职位信息 + @handler batchDeletePost + post /post/batch_delete (IDsReq) returns (BaseMsgResp) + + // Set post's status | 更新职位状态 + @handler updatePostStatus + post /post/status (StatusCodeReq) returns (BaseMsgResp) + +} diff --git a/api/desc/user.api b/api/desc/user.api index 1155464e..dac6b1d7 100644 --- a/api/desc/user.api +++ b/api/desc/user.api @@ -187,6 +187,9 @@ type ( // User's department id | 用户的部门ID DepartmentId uint64 `json:"departmentId"` + + // User's post id | 用户的职位ID + PostId uint64 `json:"postId"` } // The response data of user's basic information | 用户基本信息返回数据 @@ -311,6 +314,9 @@ type ( // The description of user | 用户的描述信息 Description string `json:"desc,optional"` + + // User's post id | 用户的职位ID + PostId uint64 `json:"postId"` } // Get user list request | 获取用户列表请求参数 @@ -346,6 +352,9 @@ type ( // The user's department ID | 用户所属部门ID DepartmentId uint64 `json:"departmentId,optional"` + + // User's post id | 用户的职位ID + PostId uint64 `json:"postId,optional"` } ) diff --git a/api/internal/handler/post/batch_delete_post_handler.go b/api/internal/handler/post/batch_delete_post_handler.go new file mode 100644 index 00000000..60d26671 --- /dev/null +++ b/api/internal/handler/post/batch_delete_post_handler.go @@ -0,0 +1,45 @@ +package post + +import ( + "net/http" + + "github.com/zeromicro/go-zero/rest/httpx" + + "github.com/suyuan32/simple-admin-core/api/internal/logic/post" + "github.com/suyuan32/simple-admin-core/api/internal/svc" + "github.com/suyuan32/simple-admin-core/api/internal/types" +) + +// swagger:route post /post/batch_delete post BatchDeletePost +// +// Delete post information | 删除职位信息 +// +// Delete post information | 删除职位信息 +// +// Parameters: +// + name: body +// require: true +// in: body +// type: IDsReq +// +// Responses: +// 200: BaseMsgResp + +func BatchDeletePostHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.IDsReq + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := post.NewBatchDeletePostLogic(r, svcCtx) + resp, err := l.BatchDeletePost(&req) + if err != nil { + err = svcCtx.Trans.TransError(r.Header.Get("Accept-Language"), err) + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/api/internal/handler/post/create_or_update_post_handler.go b/api/internal/handler/post/create_or_update_post_handler.go new file mode 100644 index 00000000..b1d35a33 --- /dev/null +++ b/api/internal/handler/post/create_or_update_post_handler.go @@ -0,0 +1,45 @@ +package post + +import ( + "net/http" + + "github.com/zeromicro/go-zero/rest/httpx" + + "github.com/suyuan32/simple-admin-core/api/internal/logic/post" + "github.com/suyuan32/simple-admin-core/api/internal/svc" + "github.com/suyuan32/simple-admin-core/api/internal/types" +) + +// swagger:route post /post/create_or_update post CreateOrUpdatePost +// +// Create or update post information | 创建或更新职位 +// +// Create or update post information | 创建或更新职位 +// +// Parameters: +// + name: body +// require: true +// in: body +// type: CreateOrUpdatePostReq +// +// Responses: +// 200: BaseMsgResp + +func CreateOrUpdatePostHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.CreateOrUpdatePostReq + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := post.NewCreateOrUpdatePostLogic(r, svcCtx) + resp, err := l.CreateOrUpdatePost(&req) + if err != nil { + err = svcCtx.Trans.TransError(r.Header.Get("Accept-Language"), err) + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/api/internal/handler/post/delete_post_handler.go b/api/internal/handler/post/delete_post_handler.go new file mode 100644 index 00000000..09419232 --- /dev/null +++ b/api/internal/handler/post/delete_post_handler.go @@ -0,0 +1,45 @@ +package post + +import ( + "net/http" + + "github.com/zeromicro/go-zero/rest/httpx" + + "github.com/suyuan32/simple-admin-core/api/internal/logic/post" + "github.com/suyuan32/simple-admin-core/api/internal/svc" + "github.com/suyuan32/simple-admin-core/api/internal/types" +) + +// swagger:route post /post/delete post DeletePost +// +// Delete post information | 删除职位信息 +// +// Delete post information | 删除职位信息 +// +// Parameters: +// + name: body +// require: true +// in: body +// type: IDReq +// +// Responses: +// 200: BaseMsgResp + +func DeletePostHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.IDReq + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := post.NewDeletePostLogic(r, svcCtx) + resp, err := l.DeletePost(&req) + if err != nil { + err = svcCtx.Trans.TransError(r.Header.Get("Accept-Language"), err) + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/api/internal/handler/post/get_post_list_handler.go b/api/internal/handler/post/get_post_list_handler.go new file mode 100644 index 00000000..25878e09 --- /dev/null +++ b/api/internal/handler/post/get_post_list_handler.go @@ -0,0 +1,45 @@ +package post + +import ( + "net/http" + + "github.com/zeromicro/go-zero/rest/httpx" + + "github.com/suyuan32/simple-admin-core/api/internal/logic/post" + "github.com/suyuan32/simple-admin-core/api/internal/svc" + "github.com/suyuan32/simple-admin-core/api/internal/types" +) + +// swagger:route post /post/list post GetPostList +// +// Get post list | 获取职位列表 +// +// Get post list | 获取职位列表 +// +// Parameters: +// + name: body +// require: true +// in: body +// type: PostListReq +// +// Responses: +// 200: PostListResp + +func GetPostListHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.PostListReq + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := post.NewGetPostListLogic(r, svcCtx) + resp, err := l.GetPostList(&req) + if err != nil { + err = svcCtx.Trans.TransError(r.Header.Get("Accept-Language"), err) + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/api/internal/handler/post/update_post_status_handler.go b/api/internal/handler/post/update_post_status_handler.go new file mode 100644 index 00000000..c784cc7a --- /dev/null +++ b/api/internal/handler/post/update_post_status_handler.go @@ -0,0 +1,45 @@ +package post + +import ( + "net/http" + + "github.com/zeromicro/go-zero/rest/httpx" + + "github.com/suyuan32/simple-admin-core/api/internal/logic/post" + "github.com/suyuan32/simple-admin-core/api/internal/svc" + "github.com/suyuan32/simple-admin-core/api/internal/types" +) + +// swagger:route post /post/status post UpdatePostStatus +// +// Set post's status | 更新职位状态 +// +// Set post's status | 更新职位状态 +// +// Parameters: +// + name: body +// require: true +// in: body +// type: StatusCodeReq +// +// Responses: +// 200: BaseMsgResp + +func UpdatePostStatusHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.StatusCodeReq + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := post.NewUpdatePostStatusLogic(r, svcCtx) + resp, err := l.UpdatePostStatus(&req) + if err != nil { + err = svcCtx.Trans.TransError(r.Header.Get("Accept-Language"), err) + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/api/internal/handler/routes.go b/api/internal/handler/routes.go index eb143914..7e201fee 100644 --- a/api/internal/handler/routes.go +++ b/api/internal/handler/routes.go @@ -12,6 +12,7 @@ import ( dictionary "github.com/suyuan32/simple-admin-core/api/internal/handler/dictionary" menu "github.com/suyuan32/simple-admin-core/api/internal/handler/menu" oauth "github.com/suyuan32/simple-admin-core/api/internal/handler/oauth" + post "github.com/suyuan32/simple-admin-core/api/internal/handler/post" role "github.com/suyuan32/simple-admin-core/api/internal/handler/role" token "github.com/suyuan32/simple-admin-core/api/internal/handler/token" user "github.com/suyuan32/simple-admin-core/api/internal/handler/user" @@ -401,4 +402,38 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) { ), rest.WithJwt(serverCtx.Config.Auth.AccessSecret), ) + + server.AddRoutes( + rest.WithMiddlewares( + []rest.Middleware{serverCtx.Authority}, + []rest.Route{ + { + Method: http.MethodPost, + Path: "/post/create_or_update", + Handler: post.CreateOrUpdatePostHandler(serverCtx), + }, + { + Method: http.MethodPost, + Path: "/post/delete", + Handler: post.DeletePostHandler(serverCtx), + }, + { + Method: http.MethodPost, + Path: "/post/list", + Handler: post.GetPostListHandler(serverCtx), + }, + { + Method: http.MethodPost, + Path: "/post/batch_delete", + Handler: post.BatchDeletePostHandler(serverCtx), + }, + { + Method: http.MethodPost, + Path: "/post/status", + Handler: post.UpdatePostStatusHandler(serverCtx), + }, + }..., + ), + rest.WithJwt(serverCtx.Config.Auth.AccessSecret), + ) } diff --git a/api/internal/logic/post/batch_delete_post_logic.go b/api/internal/logic/post/batch_delete_post_logic.go new file mode 100644 index 00000000..0a3097f1 --- /dev/null +++ b/api/internal/logic/post/batch_delete_post_logic.go @@ -0,0 +1,39 @@ +package post + +import ( + "context" + "net/http" + + "github.com/suyuan32/simple-admin-core/api/internal/svc" + "github.com/suyuan32/simple-admin-core/api/internal/types" + "github.com/suyuan32/simple-admin-core/rpc/types/core" + + "github.com/zeromicro/go-zero/core/logx" +) + +type BatchDeletePostLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext + lang string +} + +func NewBatchDeletePostLogic(r *http.Request, svcCtx *svc.ServiceContext) *BatchDeletePostLogic { + return &BatchDeletePostLogic{ + Logger: logx.WithContext(r.Context()), + ctx: r.Context(), + svcCtx: svcCtx, + lang: r.Header.Get("Accept-Language"), + } +} + +func (l *BatchDeletePostLogic) BatchDeletePost(req *types.IDsReq) (resp *types.BaseMsgResp, err error) { + result, err := l.svcCtx.CoreRpc.BatchDeletePost(l.ctx, &core.IDsReq{ + Ids: req.Ids, + }) + if err != nil { + return nil, err + } + + return &types.BaseMsgResp{Msg: l.svcCtx.Trans.Trans(l.lang, result.Msg)}, nil +} diff --git a/api/internal/logic/post/create_or_update_post_logic.go b/api/internal/logic/post/create_or_update_post_logic.go new file mode 100644 index 00000000..c97ab30a --- /dev/null +++ b/api/internal/logic/post/create_or_update_post_logic.go @@ -0,0 +1,44 @@ +package post + +import ( + "context" + "net/http" + + "github.com/suyuan32/simple-admin-core/api/internal/svc" + "github.com/suyuan32/simple-admin-core/api/internal/types" + "github.com/suyuan32/simple-admin-core/rpc/types/core" + + "github.com/zeromicro/go-zero/core/logx" +) + +type CreateOrUpdatePostLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext + lang string +} + +func NewCreateOrUpdatePostLogic(r *http.Request, svcCtx *svc.ServiceContext) *CreateOrUpdatePostLogic { + return &CreateOrUpdatePostLogic{ + Logger: logx.WithContext(r.Context()), + ctx: r.Context(), + svcCtx: svcCtx, + lang: r.Header.Get("Accept-Language"), + } +} + +func (l *CreateOrUpdatePostLogic) CreateOrUpdatePost(req *types.CreateOrUpdatePostReq) (resp *types.BaseMsgResp, err error) { + data, err := l.svcCtx.CoreRpc.CreateOrUpdatePost(l.ctx, + &core.PostInfo{ + Id: req.Id, + Status: req.Status, + Sort: req.Sort, + Name: req.Name, + Code: req.Code, + Remark: req.Remark, + }) + if err != nil { + return nil, err + } + return &types.BaseMsgResp{Msg: l.svcCtx.Trans.Trans(l.lang, data.Msg)}, nil +} diff --git a/api/internal/logic/post/delete_post_logic.go b/api/internal/logic/post/delete_post_logic.go new file mode 100644 index 00000000..3bd3597c --- /dev/null +++ b/api/internal/logic/post/delete_post_logic.go @@ -0,0 +1,39 @@ +package post + +import ( + "context" + "net/http" + + "github.com/suyuan32/simple-admin-core/api/internal/svc" + "github.com/suyuan32/simple-admin-core/api/internal/types" + "github.com/suyuan32/simple-admin-core/rpc/types/core" + + "github.com/zeromicro/go-zero/core/logx" +) + +type DeletePostLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext + lang string +} + +func NewDeletePostLogic(r *http.Request, svcCtx *svc.ServiceContext) *DeletePostLogic { + return &DeletePostLogic{ + Logger: logx.WithContext(r.Context()), + ctx: r.Context(), + svcCtx: svcCtx, + lang: r.Header.Get("Accept-Language"), + } +} + +func (l *DeletePostLogic) DeletePost(req *types.IDReq) (resp *types.BaseMsgResp, err error) { + result, err := l.svcCtx.CoreRpc.DeletePost(l.ctx, &core.IDReq{ + Id: req.Id, + }) + if err != nil { + return nil, err + } + + return &types.BaseMsgResp{Msg: l.svcCtx.Trans.Trans(l.lang, result.Msg)}, nil +} diff --git a/api/internal/logic/post/get_post_list_logic.go b/api/internal/logic/post/get_post_list_logic.go new file mode 100644 index 00000000..ce5613ac --- /dev/null +++ b/api/internal/logic/post/get_post_list_logic.go @@ -0,0 +1,63 @@ +package post + +import ( + "context" + "net/http" + + "github.com/suyuan32/simple-admin-core/api/internal/svc" + "github.com/suyuan32/simple-admin-core/api/internal/types" + "github.com/suyuan32/simple-admin-core/rpc/types/core" + + "github.com/zeromicro/go-zero/core/logx" + + "github.com/suyuan32/simple-admin-core/pkg/i18n" +) + +type GetPostListLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext + lang string +} + +func NewGetPostListLogic(r *http.Request, svcCtx *svc.ServiceContext) *GetPostListLogic { + return &GetPostListLogic{ + Logger: logx.WithContext(r.Context()), + ctx: r.Context(), + svcCtx: svcCtx, + lang: r.Header.Get("Accept-Language"), + } +} + +func (l *GetPostListLogic) GetPostList(req *types.PostListReq) (resp *types.PostListResp, err error) { + data, err := l.svcCtx.CoreRpc.GetPostList(l.ctx, + &core.PostListReq{ + Page: req.Page, + PageSize: req.PageSize, + Name: req.Name, + }) + if err != nil { + return nil, err + } + resp = &types.PostListResp{} + resp.Msg = l.svcCtx.Trans.Trans(l.lang, i18n.Success) + resp.Data.Total = data.GetTotal() + + for _, v := range data.Data { + resp.Data.Data = append(resp.Data.Data, + types.PostInfo{ + BaseInfo: types.BaseInfo{ + Id: v.Id, + CreatedAt: v.CreatedAt, + UpdatedAt: v.UpdatedAt, + }, + Trans: l.svcCtx.Trans.Trans(l.lang, v.Name), + Status: v.Status, + Sort: v.Sort, + Name: v.Name, + Code: v.Code, + Remark: v.Remark, + }) + } + return resp, nil +} diff --git a/api/internal/logic/post/update_post_status_logic.go b/api/internal/logic/post/update_post_status_logic.go new file mode 100644 index 00000000..d8f5e2b8 --- /dev/null +++ b/api/internal/logic/post/update_post_status_logic.go @@ -0,0 +1,40 @@ +package post + +import ( + "context" + "net/http" + + "github.com/suyuan32/simple-admin-core/api/internal/svc" + "github.com/suyuan32/simple-admin-core/api/internal/types" + "github.com/suyuan32/simple-admin-core/rpc/types/core" + + "github.com/zeromicro/go-zero/core/logx" +) + +type UpdatePostStatusLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext + lang string +} + +func NewUpdatePostStatusLogic(r *http.Request, svcCtx *svc.ServiceContext) *UpdatePostStatusLogic { + return &UpdatePostStatusLogic{ + Logger: logx.WithContext(r.Context()), + ctx: r.Context(), + svcCtx: svcCtx, + lang: r.Header.Get("Accept-Language"), + } +} + +func (l *UpdatePostStatusLogic) UpdatePostStatus(req *types.StatusCodeReq) (resp *types.BaseMsgResp, err error) { + result, err := l.svcCtx.CoreRpc.UpdatePostStatus(l.ctx, &core.StatusCodeReq{ + Id: req.Id, + Status: req.Status, + }) + if err != nil { + return nil, err + } + + return &types.BaseMsgResp{Msg: l.svcCtx.Trans.Trans(l.lang, result.Msg)}, nil +} diff --git a/api/internal/logic/user/create_or_update_user_logic.go b/api/internal/logic/user/create_or_update_user_logic.go index cad33d2b..106c2cd5 100644 --- a/api/internal/logic/user/create_or_update_user_logic.go +++ b/api/internal/logic/user/create_or_update_user_logic.go @@ -41,6 +41,7 @@ func (l *CreateOrUpdateUserLogic) CreateOrUpdateUser(req *types.CreateOrUpdateUs Description: req.Description, HomePath: req.HomePath, DepartmentId: req.DepartmentId, + PostId: req.PostId, }) if err != nil { return nil, err diff --git a/api/internal/logic/user/get_user_list_logic.go b/api/internal/logic/user/get_user_list_logic.go index 913a5e56..6deba441 100644 --- a/api/internal/logic/user/get_user_list_logic.go +++ b/api/internal/logic/user/get_user_list_logic.go @@ -38,13 +38,14 @@ func (l *GetUserListLogic) GetUserList(req *types.GetUserListReq) (resp *types.U Mobile: req.Mobile, RoleId: req.RoleId, DepartmentId: req.DepartmentId, + PostId: req.PostId, }) if err != nil { return nil, err } - var res []types.UserInfoResp + resp = &types.UserListResp{} for _, v := range data.Data { - res = append(res, types.UserInfoResp{ + resp.Data.Data = append(resp.Data.Data, types.UserInfoResp{ BaseUUIDInfo: types.BaseUUIDInfo{ Id: v.Id, CreatedAt: v.CreatedAt, @@ -60,11 +61,10 @@ func (l *GetUserListLogic) GetUserList(req *types.GetUserListReq) (resp *types.U Description: v.Description, HomePath: v.HomePath, DepartmentId: v.DepartmentId, + PostId: v.PostId, }) } - resp = &types.UserListResp{} resp.Data.Total = data.Total resp.Msg = l.svcCtx.Trans.Trans(l.lang, i18n.Success) - resp.Data.Data = res return resp, nil } diff --git a/api/internal/types/types.go b/api/internal/types/types.go index d8051be3..78fe4b2f 100644 --- a/api/internal/types/types.go +++ b/api/internal/types/types.go @@ -337,6 +337,8 @@ type UserInfoResp struct { Description string `json:"desc"` // User's department id | 用户的部门ID DepartmentId uint64 `json:"departmentId"` + // User's post id | 用户的职位ID + PostId uint64 `json:"postId"` } // The response data of user's basic information | 用户基本信息返回数据 @@ -446,6 +448,8 @@ type CreateOrUpdateUserReq struct { HomePath string `json:"homePath,optional"` // The description of user | 用户的描述信息 Description string `json:"desc,optional"` + // User's post id | 用户的职位ID + PostId uint64 `json:"postId"` } // Get user list request | 获取用户列表请求参数 @@ -475,6 +479,8 @@ type GetUserListReq struct { RoleId uint64 `json:"roleId,optional" validate:"omitempty,number,max=1000"` // The user's department ID | 用户所属部门ID DepartmentId uint64 `json:"departmentId,optional"` + // User's post id | 用户的职位ID + PostId uint64 `json:"postId,optional"` } // The response data of menu information | 菜单返回数据 @@ -1262,3 +1268,63 @@ type DepartmentListReq struct { // Leader Leader string `json:"leader,optional"` } + +// The response data of post information | 职位信息 +// swagger:model PostInfo +type PostInfo struct { + BaseInfo + // Name translation | 名称翻译 + Trans string `json:"trans"` + // Status + Status uint32 `json:"status"` + // Sort + Sort uint32 `json:"sort"` + // Name + Name string `json:"name"` + // Code + Code string `json:"code"` + // Remark + Remark string `json:"remark"` +} + +// Create or update post information request | 创建或更新职位信息 +// swagger:model CreateOrUpdatePostReq +type CreateOrUpdatePostReq struct { + // ID + // Required: true + Id uint64 `json:"id"` + // Status + Status uint32 `json:"status"` + // Sort + Sort uint32 `json:"sort"` + // Name + Name string `json:"name"` + // Code + Code string `json:"code"` + // Remark + Remark string `json:"remark"` +} + +// The response data of post list | 职位列表数据 +// swagger:model PostListResp +type PostListResp struct { + BaseDataInfo + // Post list data | 职位 列表数据 + Data PostListInfo `json:"data"` +} + +// Post list data | 职位 列表数据 +// swagger:model PostListInfo +type PostListInfo struct { + BaseListInfo + // The API list data | 职位 列表数据 + Data []PostInfo `json:"data"` +} + +// Get post list request params | 职位列表请求参数 +// swagger:model PostListReq +type PostListReq struct { + PageInfo + // Name + Name string `json:"name,optional"` +} diff --git a/core.yml b/core.yml index 88ec983b..208ec937 100644 --- a/core.yml +++ b/core.yml @@ -71,6 +71,9 @@ definitions: CreateOrUpdateMenuReq: description: Create or update menu information request params | 创建或更新菜单信息参数 x-go-package: github.com/suyuan32/simple-admin-core/api/internal/types + CreateOrUpdatePostReq: + description: Create or update post information request | 创建或更新职位信息 + x-go-package: github.com/suyuan32/simple-admin-core/api/internal/types CreateOrUpdateProviderReq: description: Create or update provider information request | 创建或更新提供商信息 x-go-package: github.com/suyuan32/simple-admin-core/api/internal/types @@ -188,6 +191,18 @@ definitions: PermCodeResp: description: The permission code for front end permission control | 权限码: 用于前端权限控制 x-go-package: github.com/suyuan32/simple-admin-core/api/internal/types + PostInfo: + description: The response data of post information | 职位信息 + x-go-package: github.com/suyuan32/simple-admin-core/api/internal/types + PostListInfo: + description: Post list data | 职位 列表数据 + x-go-package: github.com/suyuan32/simple-admin-core/api/internal/types + PostListReq: + description: Get post list request params | 职位列表请求参数 + x-go-package: github.com/suyuan32/simple-admin-core/api/internal/types + PostListResp: + description: The response data of post list | 职位列表数据 + x-go-package: github.com/suyuan32/simple-admin-core/api/internal/types ProfileInfo: description: The profile information | 个人信息 x-go-package: github.com/suyuan32/simple-admin-core/api/internal/types @@ -822,6 +837,96 @@ paths: summary: Get provider list | 获取提供商列表 tags: - oauth + /post/batch_delete: + post: + description: Delete post information | 删除职位信息 + operationId: BatchDeletePost + parameters: + - in: body + name: body + schema: + $ref: '#/definitions/IDsReq' + type: object + responses: + "200": + description: BaseMsgResp + schema: + $ref: '#/definitions/BaseMsgResp' + summary: Delete post information | 删除职位信息 + tags: + - post + /post/create_or_update: + post: + description: Create or update post information | 创建或更新职位 + operationId: CreateOrUpdatePost + parameters: + - in: body + name: body + schema: + $ref: '#/definitions/CreateOrUpdatePostReq' + type: object + responses: + "200": + description: BaseMsgResp + schema: + $ref: '#/definitions/BaseMsgResp' + summary: Create or update post information | 创建或更新职位 + tags: + - post + /post/delete: + post: + description: Delete post information | 删除职位信息 + operationId: DeletePost + parameters: + - in: body + name: body + schema: + $ref: '#/definitions/IDReq' + type: object + responses: + "200": + description: BaseMsgResp + schema: + $ref: '#/definitions/BaseMsgResp' + summary: Delete post information | 删除职位信息 + tags: + - post + /post/list: + post: + description: Get post list | 获取职位列表 + operationId: GetPostList + parameters: + - in: body + name: body + schema: + $ref: '#/definitions/PostListReq' + type: object + responses: + "200": + description: PostListResp + schema: + $ref: '#/definitions/PostListResp' + summary: Get post list | 获取职位列表 + tags: + - post + /post/status: + post: + description: Set post's status | 更新职位状态 + operationId: UpdatePostStatus + parameters: + - in: body + name: body + schema: + $ref: '#/definitions/StatusCodeReq' + type: object + responses: + "200": + description: BaseMsgResp + schema: + $ref: '#/definitions/BaseMsgResp' + summary: Set post's status | 更新职位状态 + tags: + - post /role/create_or_update: post: description: Create or update role information | 创建或更新角色 diff --git a/pkg/ent/post.go b/pkg/ent/post.go index 945ab3e9..8d1bcc38 100644 --- a/pkg/ent/post.go +++ b/pkg/ent/post.go @@ -24,9 +24,9 @@ type Post struct { Status uint8 `json:"status,omitempty"` // Sort number | 排序编号 Sort uint32 `json:"sort,omitempty"` - // Post Name | 岗位名称 + // Post Name | 职位名称 Name string `json:"name,omitempty"` - // The code of post | 岗位编码 + // The code of post | 职位编码 Code string `json:"code,omitempty"` // Remark | 备注 Remark string `json:"remark,omitempty"` diff --git a/pkg/ent/schema/post.go b/pkg/ent/schema/post.go index fbd8b55a..2b2e2412 100644 --- a/pkg/ent/schema/post.go +++ b/pkg/ent/schema/post.go @@ -16,8 +16,8 @@ type Post struct { func (Post) Fields() []ent.Field { return []ent.Field{ - field.String("name").Comment("Post Name | 岗位名称"), - field.String("code").Comment("The code of post | 岗位编码"), + field.String("name").Comment("Post Name | 职位名称"), + field.String("code").Comment("The code of post | 职位编码"), field.String("remark").Comment("Remark | 备注"), } } diff --git a/pkg/ent/schema/user.go b/pkg/ent/schema/user.go index 815394c3..1525c264 100644 --- a/pkg/ent/schema/user.go +++ b/pkg/ent/schema/user.go @@ -32,7 +32,7 @@ func (User) Fields() []ent.Field { Default(""). Comment("avatar | 头像路径"), field.Uint64("department_id").Optional().Default(1).Comment("Department ID | 部门ID"), - field.Uint64("post_id").Optional().Default(1).Comment("Post ID | 岗位ID"), + field.Uint64("post_id").Optional().Default(1).Comment("Post ID | 职位ID"), } } diff --git a/pkg/ent/user.go b/pkg/ent/user.go index 323fbbdd..343899dd 100644 --- a/pkg/ent/user.go +++ b/pkg/ent/user.go @@ -46,7 +46,7 @@ type User struct { Avatar string `json:"avatar,omitempty"` // Department ID | 部门ID DepartmentID uint64 `json:"department_id,omitempty"` - // Post ID | 岗位ID + // Post ID | 职位ID PostID uint64 `json:"post_id,omitempty"` // Edges holds the relations/edges for other nodes in the graph. // The values are being populated by the UserQuery when eager-loading is set. diff --git a/pkg/i18n/locale/en.json b/pkg/i18n/locale/en.json index a37ac92c..c431ead1 100644 --- a/pkg/i18n/locale/en.json +++ b/pkg/i18n/locale/en.json @@ -77,7 +77,12 @@ "deleteDepartment": "Delete a department", "batchDeleteDepartment": "Batch delete departments", "getDepartmentList": "Get department list", - "updateDepartmentStatus": "Modify the department status" + "updateDepartmentStatus": "Modify the department status", + "createOrUpdatePost": "Create or update a post", + "deletePost": "Delete a post", + "batchDeletePost": "Batch delete posts", + "getPostList": "Get post list", + "updatePostStatus": "Modify the post status" }, "route": { "dashboard": "Dashboard", @@ -93,7 +98,8 @@ "oauthManagement": "Oauth", "tokenManagement": "Token", "otherPages": "Other pages", - "departmentManagement": "Department Management" + "departmentManagement": "Department", + "postManagement": "Post" }, "login": { "loginSuccessTitle": "Login successful", @@ -140,5 +146,9 @@ }, "department": { "managementDepartment": "Management Department" + }, + "post": { + "userExistError": "There are users under this position, it is forbidden to delete.", + "ceo": "CEO" } } diff --git a/pkg/i18n/locale/zh.json b/pkg/i18n/locale/zh.json index 0b7b87e4..e81d4b73 100644 --- a/pkg/i18n/locale/zh.json +++ b/pkg/i18n/locale/zh.json @@ -77,7 +77,12 @@ "deleteDepartment": "删除一个部门", "batchDeleteDepartment": "批量删除部门", "getDepartmentList": "获取部门列表", - "updateDepartmentStatus": "修改部门状态" + "updateDepartmentStatus": "修改部门状态", + "createOrUpdatePost": "创建或更新职位信息", + "deletePost": "删除一个职位", + "batchDeletePost": "批量删除职位", + "getPostList": "获取职位列表", + "updatePostStatus": "修改职位状态" }, "route": { "dashboard": "控制台", @@ -93,7 +98,8 @@ "oauthManagement": "Oauth管理", "tokenManagement": "Token管理", "otherPages": "其他页面", - "departmentManagement": "部门管理" + "departmentManagement": "部门管理", + "postManagement": "职位管理" }, "login": { "loginSuccessTitle": "登录成功", @@ -140,5 +146,9 @@ }, "department": { "managementDepartment": "核心管理部门" + }, + "post": { + "userExistError": "该职位下存在用户,禁止删除", + "ceo": "CEO" } } diff --git a/rpc/core.proto b/rpc/core.proto index 73069f34..476f51ae 100755 --- a/rpc/core.proto +++ b/rpc/core.proto @@ -3,25 +3,6 @@ syntax = "proto3"; package core; option go_package="./core"; -message UUIDsReq { - repeated string ids = 1; -} - -message DictionaryDetailReq { - string name = 1; -} - -message GetUserListReq { - uint64 page = 1; - uint64 page_size = 2; - string username = 3; - string nickname = 4; - string email = 5; - string mobile = 6; - uint64 role_id = 7; - uint64 department_id = 8; -} - message ApiListReq { uint64 page = 1; uint64 page_size = 2; @@ -31,75 +12,69 @@ message ApiListReq { string group = 6; } -message MenuParamListResp { - uint64 total = 1; - repeated MenuParamResp data = 2; +message BaseResp { + string msg = 1; } -message PostListReq { +message DepartmentListReq { uint64 page = 1; uint64 page_size = 2; string name = 3; + string leader = 4; } -// menu messages -message CreateOrUpdateMenuReq { - uint32 level = 1; - uint64 parent_id = 2; - string path = 3; - string name = 4; - string redirect = 5; - string component = 6; - uint32 sort = 7; - bool disabled = 8; - Meta meta = 9; - uint64 id = 10; - uint32 menu_type = 11; +message PostListResp { + uint64 total = 1; + repeated PostInfo data = 2; } -message MenuRoleListResp { +message StatusCodeUUIDReq { + string id = 1; + uint32 status = 2; +} + +message UserListResp { uint64 total = 1; - repeated MenuRoleInfo data = 2; + repeated UserInfoResp data = 2; } -message IDsReq { - repeated uint64 ids = 1; +message ApiListResp { + uint64 total = 1; + repeated ApiInfo data = 2; } -message BaseResp { - string msg = 1; +// base message +message Empty {} + +message UUIDReq { + string id = 1; } -message PostInfo { +// dictionary message +message DictionaryInfo { uint64 id = 1; - int64 created_at = 2; - int64 updated_at = 3; + string title = 2; + string name = 3; uint32 status = 4; - uint32 sort = 5; - string name = 6; - string code = 7; - string remark = 8; + string desc = 5; + int64 created_at = 6; + int64 updated_at = 7; } -message PostListResp { - uint64 total = 1; - repeated PostInfo data = 2; +message DictionaryDetail { + uint64 id = 1; + string title = 2; + string key = 3; + string value = 4; + uint32 status = 5; + int64 created_at = 6; + int64 updated_at = 7; + uint64 dictionary_id = 8; } -message MenuInfo { - uint64 id = 1; - int64 created_at = 2; - int64 updated_at = 3; - uint32 level = 4; - uint64 parent_id = 5; - string path = 6; - string name = 7; - string redirect = 8; - string component = 9; - uint32 sort = 10; - bool disabled = 11; - Meta meta = 12; - uint32 menu_type = 13; +message DictionaryDetailList { + uint64 total = 1; + repeated DictionaryDetail data = 2; } // oauth message @@ -108,53 +83,20 @@ message OauthLoginReq { string provider = 2; } -message ProviderInfo { - uint64 id = 1; - string name = 2; - string client_id = 3; - string client_secret = 4; - string redirect_url = 5; - string scopes = 6; - string auth_url = 7; - string token_url = 8; - uint64 auth_style = 9; - string info_url = 10; - int64 created_at = 11; - int64 updated_at = 12; -} - -message DictionaryDetailList { +message ProviderListResp { uint64 total = 1; - repeated DictionaryDetail data = 2; + repeated ProviderInfo data = 2; } -message UserInfoResp { - string id = 1; - string avatar = 2; - uint64 role_id = 3; - string mobile = 4; - string email = 5; - uint32 status = 6; - string username = 7; - string nickname = 8; - string roleName = 9; - int64 created_at = 10; - int64 updated_at = 11; - string roleValue = 12; - string home_path = 13; - string description = 14; - uint64 department_id = 15; +message PostListReq { + uint64 page = 1; + uint64 page_size = 2; + string name = 3; } -// dictionary message -message DictionaryInfo { - uint64 id = 1; - string title = 2; - string name = 3; - uint32 status = 4; - string desc = 5; - int64 created_at = 6; - int64 updated_at = 7; +message TokenListResp { + uint64 total = 1; + repeated TokenInfo data = 2; } message UpdateProfileReq { @@ -166,62 +108,52 @@ message UpdateProfileReq { string description = 6; } -message LoginReq { - string username = 1; - string password = 2; +message DictionaryDetailReq { + string name = 1; } -message UserListResp { +message MenuRoleListResp { uint64 total = 1; - repeated UserInfoResp data = 2; -} - -message PageInfoReq { - uint64 page = 1; - uint64 page_size = 2; + repeated MenuRoleInfo data = 2; } -message MenuRoleInfo { +message ProviderInfo { uint64 id = 1; - uint64 menu_id = 2; - uint64 role_id = 3; -} - -message CallbackReq { - string state = 1; - string code = 2; + string name = 2; + string client_id = 3; + string client_secret = 4; + string redirect_url = 5; + string scopes = 6; + string auth_url = 7; + string token_url = 8; + uint64 auth_style = 9; + string info_url = 10; + int64 created_at = 11; + int64 updated_at = 12; } -message TokenListReq { - uint64 page = 1; - uint64 page_size = 2; - string username = 3; - string nickname = 4; - string email = 5; - string uuid = 6; +message UUIDsReq { + repeated string ids = 1; } -// api message -message ApiInfo { +message IDReq { uint64 id = 1; - int64 created_at = 2; - int64 updated_at = 3; - string path = 4; - string description = 5; - string group = 6; - string method = 7; -} - -message ApiListResp { - uint64 total = 1; - repeated ApiInfo data = 2; } -message DictionaryListReq { +message Meta { string title = 1; - string name = 2; - uint64 page = 3; - uint64 page_size = 4; + string icon = 2; + bool hide_menu = 3; + bool hide_breadcrumb = 4; + string current_active_menu = 5; + bool ignore_keep_alive = 6; + bool hide_tab = 7; + string frame_src = 8; + bool carry_param = 9; + bool hide_children_in_menu = 10; + bool affix = 11; + uint32 dynamic_level = 12; + string real_path = 13; } // authorization message @@ -230,25 +162,32 @@ message RoleMenuAuthorityReq { repeated uint64 menu_id = 2; } -message UUIDReq { - string id = 1; +message MenuInfoList { + uint64 total = 1; + repeated MenuInfo data = 2; } -message RoleListResp { - uint64 total = 1; - repeated RoleInfo data = 2; +message MenuRoleInfo { + uint64 id = 1; + uint64 menu_id = 2; + uint64 role_id = 3; } -// role messages -message RoleInfo { +message CreateOrUpdateMenuParamReq { uint64 id = 1; - string name = 2; - string value = 3; - string default_router = 4; - uint32 status = 5; - string remark = 6; - uint32 sort = 7; - int64 createdAt = 8; + uint64 menu_id = 2; + string type = 3; + string key = 4; + string value = 5; +} + +message MenuParamResp { + uint64 id = 1; + string type = 2; + string key = 3; + string value = 4; + int64 created_at = 5; + int64 updated_at = 6; } message LoginResp { @@ -258,26 +197,37 @@ message LoginResp { uint64 role_id = 4; } -// return the role's authorization menu's ids -message RoleMenuAuthorityResp { - repeated uint64 menu_id = 1; +message DepartmentListResp { + uint64 total = 1; + repeated DepartmentInfo data = 2; } -message DepartmentListReq { - uint64 page = 1; - uint64 page_size = 2; - string name = 3; - string leader = 4; +// menu messages +message CreateOrUpdateMenuReq { + uint32 level = 1; + uint64 parent_id = 2; + string path = 3; + string name = 4; + string redirect = 5; + string component = 6; + uint32 sort = 7; + bool disabled = 8; + Meta meta = 9; + uint64 id = 10; + uint32 menu_type = 11; } -message DictionaryList { - uint64 total = 1; - repeated DictionaryInfo data = 2; +// api message +message ApiInfo { + uint64 id = 1; + int64 created_at = 2; + int64 updated_at = 3; + string path = 4; + string description = 5; + string group = 6; + string method = 7; } -// base message -message Empty {} - message DepartmentInfo { uint64 id = 1; int64 created_at = 2; @@ -293,30 +243,66 @@ message DepartmentInfo { uint64 parent_id = 12; } -message DictionaryDetail { +message PostInfo { uint64 id = 1; - string title = 2; - string key = 3; - string value = 4; + int64 created_at = 2; + int64 updated_at = 3; + uint32 status = 4; + uint32 sort = 5; + string name = 6; + string code = 7; + string remark = 8; +} + +// role messages +message RoleInfo { + uint64 id = 1; + string name = 2; + string value = 3; + string default_router = 4; uint32 status = 5; - int64 created_at = 6; - int64 updated_at = 7; - uint64 dictionary_id = 8; + string remark = 6; + uint32 sort = 7; + int64 createdAt = 8; } -message ChangePasswordReq { - string id = 1; - string old_password = 2; - string new_password = 3; +message IDsReq { + repeated uint64 ids = 1; } -message OauthRedirectResp { - string url = 1; +message MenuInfo { + uint64 id = 1; + int64 created_at = 2; + int64 updated_at = 3; + uint32 level = 4; + uint64 parent_id = 5; + string path = 6; + string name = 7; + string redirect = 8; + string component = 9; + uint32 sort = 10; + bool disabled = 11; + Meta meta = 12; + uint32 menu_type = 13; } -message ProviderListResp { - uint64 total = 1; - repeated ProviderInfo data = 2; +message UserInfoResp { + string id = 1; + string avatar = 2; + uint64 role_id = 3; + string mobile = 4; + string email = 5; + uint32 status = 6; + string username = 7; + string nickname = 8; + string roleName = 9; + int64 created_at = 10; + int64 updated_at = 11; + string roleValue = 12; + string home_path = 13; + string description = 14; + uint64 department_id = 15; + uint64 post_id = 16; } message StatusCodeReq { @@ -324,25 +310,48 @@ message StatusCodeReq { uint32 status = 2; } -message StatusCodeUUIDReq { - string id = 1; - uint32 status = 2; +message DictionaryListReq { + string title = 1; + string name = 2; + uint64 page = 3; + uint64 page_size = 4; } -message DepartmentListResp { +message MenuParamListResp { uint64 total = 1; - repeated DepartmentInfo data = 2; + repeated MenuParamResp data = 2; } -message TokenInfo { +message GetUserListReq { + uint64 page = 1; + uint64 page_size = 2; + string username = 3; + string nickname = 4; + string email = 5; + string mobile = 6; + uint64 role_id = 7; + uint64 department_id = 8; + uint64 post_id = 9; +} + +message PageInfoReq { + uint64 page = 1; + uint64 page_size = 2; +} + +message TokenListReq { + uint64 page = 1; + uint64 page_size = 2; + string username = 3; + string nickname = 4; + string email = 5; + string uuid = 6; +} + +message ChangePasswordReq { string id = 1; - int64 created_at = 2; - int64 updated_at = 3; - string uuid = 4; - string token = 5; - string source = 6; - uint32 status = 7; - int64 expired_at = 8; + string old_password = 2; + string new_password = 3; } message CreateOrUpdateUserReq { @@ -358,53 +367,47 @@ message CreateOrUpdateUserReq { string home_path = 10; string description = 11; uint64 department_id = 12; + uint64 post_id = 13; } -message MenuInfoList { +// return the role's authorization menu's ids +message RoleMenuAuthorityResp { + repeated uint64 menu_id = 1; +} + +message DictionaryList { uint64 total = 1; - repeated MenuInfo data = 2; + repeated DictionaryInfo data = 2; } -message CreateOrUpdateMenuParamReq { - uint64 id = 1; - uint64 menu_id = 2; - string type = 3; - string key = 4; - string value = 5; +message OauthRedirectResp { + string url = 1; } -message TokenListResp { - uint64 total = 1; - repeated TokenInfo data = 2; +message CallbackReq { + string state = 1; + string code = 2; } -message MenuParamResp { - uint64 id = 1; - string type = 2; - string key = 3; - string value = 4; - int64 created_at = 5; - int64 updated_at = 6; +message RoleListResp { + uint64 total = 1; + repeated RoleInfo data = 2; } -message IDReq { - uint64 id = 1; +message TokenInfo { + string id = 1; + int64 created_at = 2; + int64 updated_at = 3; + string uuid = 4; + string token = 5; + string source = 6; + uint32 status = 7; + int64 expired_at = 8; } -message Meta { - string title = 1; - string icon = 2; - bool hide_menu = 3; - bool hide_breadcrumb = 4; - string current_active_menu = 5; - bool ignore_keep_alive = 6; - bool hide_tab = 7; - string frame_src = 8; - bool carry_param = 9; - bool hide_children_in_menu = 10; - bool affix = 11; - uint32 dynamic_level = 12; - string real_path = 13; +message LoginReq { + string username = 1; + string password = 2; } service Core { diff --git a/rpc/desc/user.proto b/rpc/desc/user.proto index 6dc93618..ded99371 100644 --- a/rpc/desc/user.proto +++ b/rpc/desc/user.proto @@ -31,6 +31,7 @@ message CreateOrUpdateUserReq { string home_path = 10; string description = 11; uint64 department_id = 12; + uint64 post_id = 13; } message UserInfoResp { @@ -49,6 +50,7 @@ message UserInfoResp { string home_path = 13; string description = 14; uint64 department_id = 15; + uint64 post_id = 16; } message UserListResp { @@ -65,6 +67,7 @@ message GetUserListReq { string mobile = 6; uint64 role_id = 7; uint64 department_id = 8; + uint64 post_id = 9; } message UpdateProfileReq { diff --git a/rpc/internal/logic/base/init_database_logic.go b/rpc/internal/logic/base/init_database_logic.go index 97ca2abb..9328d0d1 100644 --- a/rpc/internal/logic/base/init_database_logic.go +++ b/rpc/internal/logic/base/init_database_logic.go @@ -128,6 +128,13 @@ func (l *InitDatabaseLogic) InitDatabase(in *core.Empty) (*core.BaseResp, error) return nil, statuserr.NewInternalError(err.Error()) } + err = l.insertPostData() + if err != nil { + logx.Errorw(logmsg.DatabaseError, logx.Field("detail", err.Error())) + l.svcCtx.Redis.Setex("database_error_msg", err.Error(), 300) + return nil, statuserr.NewInternalError(err.Error()) + } + l.svcCtx.Redis.Setex("database_init_state", "1", 300) return &core.BaseResp{Msg: i18n.Success}, nil } @@ -140,7 +147,9 @@ func (l *InitDatabaseLogic) insertUserData() error { SetNickname("admin"). SetPassword(utils.BcryptEncrypt("simple-admin")). SetEmail("simple_admin@gmail.com"). - SetRoleID(1), + SetRoleID(1). + SetDepartmentID(1). + SetPostID(1), ) err := l.svcCtx.DB.User.CreateBulk(users...).Exec(l.ctx) @@ -540,7 +549,7 @@ func (l *InitDatabaseLogic) insertApiData() error { SetMethod("POST"), ) - // department + // DEPARTMENT apis = append(apis, l.svcCtx.DB.API.Create(). SetPath("/department/create_or_update"). @@ -577,6 +586,43 @@ func (l *InitDatabaseLogic) insertApiData() error { SetMethod("POST"), ) + // POST + + apis = append(apis, l.svcCtx.DB.API.Create(). + SetPath("/post/create_or_update"). + SetDescription("apiDesc.createOrUpdatePost"). + SetAPIGroup("post"). + SetMethod("POST"), + ) + + apis = append(apis, l.svcCtx.DB.API.Create(). + SetPath("/post/batch_delete"). + SetDescription("apiDesc.batchDeletePost"). + SetAPIGroup("post"). + SetMethod("POST"), + ) + + apis = append(apis, l.svcCtx.DB.API.Create(). + SetPath("/post/delete"). + SetDescription("apiDesc.deletePost"). + SetAPIGroup("post"). + SetMethod("POST"), + ) + + apis = append(apis, l.svcCtx.DB.API.Create(). + SetPath("/post/list"). + SetDescription("apiDesc.getPostList"). + SetAPIGroup("post"). + SetMethod("POST"), + ) + + apis = append(apis, l.svcCtx.DB.API.Create(). + SetPath("/post/status"). + SetDescription("apiDesc.updatePostStatus"). + SetAPIGroup("post"). + SetMethod("POST"), + ) + err := l.svcCtx.DB.API.CreateBulk(apis...).Exec(l.ctx) if err != nil { logx.Errorw(err.Error()) @@ -664,7 +710,7 @@ func (l *InitDatabaseLogic) insertMenuData() error { SetComponent("/sys/department/index"). SetSort(4). SetTitle("route.departmentManagement"). - SetIcon("ant-design:lock-outlined"). + SetIcon("ic:outline-people-alt"). SetHideMenu(false), ) @@ -772,6 +818,19 @@ func (l *InitDatabaseLogic) insertMenuData() error { SetHideMenu(false), ) + menus = append(menus, l.svcCtx.DB.Menu.Create(). + SetMenuLevel(2). + SetMenuType(1). + SetParentID(2). + SetPath("/post"). + SetName("Post Management"). + SetComponent("/sys/post/index"). + SetSort(8). + SetTitle("route.postManagement"). + SetIcon("ic:twotone-work-outline"). + SetHideMenu(false), + ) + err := l.svcCtx.DB.Menu.CreateBulk(menus...).Exec(l.ctx) if err != nil { logx.Errorw(err.Error()) @@ -898,3 +957,20 @@ func (l *InitDatabaseLogic) insertDepartmentData() error { return nil } } + +// insert init post data +func (l *InitDatabaseLogic) insertPostData() error { + var posts []*ent.PostCreate + posts = append(posts, l.svcCtx.DB.Post.Create(). + SetName("post.ceo"). + SetRemark("CEO").SetCode("001").SetSort(1), + ) + + err := l.svcCtx.DB.Post.CreateBulk(posts...).Exec(l.ctx) + if err != nil { + logx.Errorw(err.Error()) + return statuserr.NewInternalError(err.Error()) + } else { + return nil + } +} diff --git a/rpc/internal/logic/post/delete_post_logic.go b/rpc/internal/logic/post/delete_post_logic.go index 0147c6c1..1a2df2f8 100644 --- a/rpc/internal/logic/post/delete_post_logic.go +++ b/rpc/internal/logic/post/delete_post_logic.go @@ -4,6 +4,7 @@ import ( "context" "github.com/suyuan32/simple-admin-core/pkg/ent" + "github.com/suyuan32/simple-admin-core/pkg/ent/user" "github.com/suyuan32/simple-admin-core/rpc/internal/svc" "github.com/suyuan32/simple-admin-core/rpc/types/core" @@ -29,7 +30,23 @@ func NewDeletePostLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Delete } func (l *DeletePostLogic) DeletePost(in *core.IDReq) (*core.BaseResp, error) { - err := l.svcCtx.DB.Post.DeleteOneID(in.Id).Exec(l.ctx) + exist, err := l.svcCtx.DB.User.Query().Where(user.PostIDEQ(in.Id)).Exist(l.ctx) + if err != nil { + switch { + case ent.IsNotFound(err): + logx.Errorw(err.Error(), logx.Field("detail", in)) + return nil, statuserr.NewInvalidArgumentError(i18n.TargetNotFound) + default: + logx.Errorw(logmsg.DatabaseError, logx.Field("detail", err.Error())) + return nil, statuserr.NewInternalError(i18n.DatabaseError) + } + } + + if exist { + return nil, statuserr.NewInvalidArgumentError("post.userExistError") + } + + err = l.svcCtx.DB.Post.DeleteOneID(in.Id).Exec(l.ctx) if err != nil { switch { case ent.IsNotFound(err): diff --git a/rpc/internal/logic/user/create_or_update_user_logic.go b/rpc/internal/logic/user/create_or_update_user_logic.go index 8bcc9ffe..edb99406 100644 --- a/rpc/internal/logic/user/create_or_update_user_logic.go +++ b/rpc/internal/logic/user/create_or_update_user_logic.go @@ -42,6 +42,7 @@ func (l *CreateOrUpdateUserLogic) CreateOrUpdateUser(in *core.CreateOrUpdateUser SetHomePath(in.HomePath). SetDescription(in.Description). SetDepartmentID(in.DepartmentId). + SetPostID(in.PostId). Exec(l.ctx) if err != nil { switch { @@ -69,6 +70,7 @@ func (l *CreateOrUpdateUserLogic) CreateOrUpdateUser(in *core.CreateOrUpdateUser SetHomePath(in.HomePath). SetDescription(in.Description). SetDepartmentID(in.DepartmentId). + SetPostID(in.PostId). Exec(l.ctx) } else { err = l.svcCtx.DB.User.UpdateOneID(uuidx.ParseUUIDString(in.Id)). @@ -81,6 +83,7 @@ func (l *CreateOrUpdateUserLogic) CreateOrUpdateUser(in *core.CreateOrUpdateUser SetHomePath(in.HomePath). SetDescription(in.Description). SetDepartmentID(in.DepartmentId). + SetPostID(in.PostId). Exec(l.ctx) } diff --git a/rpc/internal/logic/user/get_user_list_logic.go b/rpc/internal/logic/user/get_user_list_logic.go index 9a2dae90..b199178e 100644 --- a/rpc/internal/logic/user/get_user_list_logic.go +++ b/rpc/internal/logic/user/get_user_list_logic.go @@ -54,6 +54,10 @@ func (l *GetUserListLogic) GetUserList(in *core.GetUserListReq) (*core.UserListR predicates = append(predicates, user.DepartmentIDEQ(in.DepartmentId)) } + if in.PostId != 0 { + predicates = append(predicates, user.PostIDEQ(in.PostId)) + } + users, err := l.svcCtx.DB.User.Query().Where(predicates...).Page(l.ctx, in.Page, in.PageSize) if err != nil { logx.Error(err.Error()) @@ -76,6 +80,7 @@ func (l *GetUserListLogic) GetUserList(in *core.GetUserListReq) (*core.UserListR HomePath: v.HomePath, Description: v.Description, DepartmentId: v.DepartmentID, + PostId: v.PostID, CreatedAt: v.CreatedAt.UnixMilli(), UpdatedAt: v.UpdatedAt.UnixMilli(), }) diff --git a/rpc/types/core/core.pb.go b/rpc/types/core/core.pb.go index 05306e3a..1d70900b 100644 --- a/rpc/types/core/core.pb.go +++ b/rpc/types/core/core.pb.go @@ -20,16 +20,21 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -type UUIDsReq struct { +type ApiListReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Ids []string `protobuf:"bytes,1,rep,name=ids,proto3" json:"ids,omitempty"` + Page uint64 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` + PageSize uint64 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` + Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` + Method string `protobuf:"bytes,5,opt,name=method,proto3" json:"method,omitempty"` + Group string `protobuf:"bytes,6,opt,name=group,proto3" json:"group,omitempty"` } -func (x *UUIDsReq) Reset() { - *x = UUIDsReq{} +func (x *ApiListReq) Reset() { + *x = ApiListReq{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -37,13 +42,13 @@ func (x *UUIDsReq) Reset() { } } -func (x *UUIDsReq) String() string { +func (x *ApiListReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UUIDsReq) ProtoMessage() {} +func (*ApiListReq) ProtoMessage() {} -func (x *UUIDsReq) ProtoReflect() protoreflect.Message { +func (x *ApiListReq) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -55,28 +60,63 @@ func (x *UUIDsReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UUIDsReq.ProtoReflect.Descriptor instead. -func (*UUIDsReq) Descriptor() ([]byte, []int) { +// Deprecated: Use ApiListReq.ProtoReflect.Descriptor instead. +func (*ApiListReq) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{0} } -func (x *UUIDsReq) GetIds() []string { +func (x *ApiListReq) GetPage() uint64 { if x != nil { - return x.Ids + return x.Page } - return nil + return 0 } -type DictionaryDetailReq struct { +func (x *ApiListReq) GetPageSize() uint64 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *ApiListReq) GetPath() string { + if x != nil { + return x.Path + } + return "" +} + +func (x *ApiListReq) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *ApiListReq) GetMethod() string { + if x != nil { + return x.Method + } + return "" +} + +func (x *ApiListReq) GetGroup() string { + if x != nil { + return x.Group + } + return "" +} + +type BaseResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"` } -func (x *DictionaryDetailReq) Reset() { - *x = DictionaryDetailReq{} +func (x *BaseResp) Reset() { + *x = BaseResp{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -84,13 +124,13 @@ func (x *DictionaryDetailReq) Reset() { } } -func (x *DictionaryDetailReq) String() string { +func (x *BaseResp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DictionaryDetailReq) ProtoMessage() {} +func (*BaseResp) ProtoMessage() {} -func (x *DictionaryDetailReq) ProtoReflect() protoreflect.Message { +func (x *BaseResp) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -102,35 +142,31 @@ func (x *DictionaryDetailReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DictionaryDetailReq.ProtoReflect.Descriptor instead. -func (*DictionaryDetailReq) Descriptor() ([]byte, []int) { +// Deprecated: Use BaseResp.ProtoReflect.Descriptor instead. +func (*BaseResp) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{1} } -func (x *DictionaryDetailReq) GetName() string { +func (x *BaseResp) GetMsg() string { if x != nil { - return x.Name + return x.Msg } return "" } -type GetUserListReq struct { +type DepartmentListReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Page uint64 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` - PageSize uint64 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` - Username string `protobuf:"bytes,3,opt,name=username,proto3" json:"username,omitempty"` - Nickname string `protobuf:"bytes,4,opt,name=nickname,proto3" json:"nickname,omitempty"` - Email string `protobuf:"bytes,5,opt,name=email,proto3" json:"email,omitempty"` - Mobile string `protobuf:"bytes,6,opt,name=mobile,proto3" json:"mobile,omitempty"` - RoleId uint64 `protobuf:"varint,7,opt,name=role_id,json=roleId,proto3" json:"role_id,omitempty"` - DepartmentId uint64 `protobuf:"varint,8,opt,name=department_id,json=departmentId,proto3" json:"department_id,omitempty"` + Page uint64 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` + PageSize uint64 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Leader string `protobuf:"bytes,4,opt,name=leader,proto3" json:"leader,omitempty"` } -func (x *GetUserListReq) Reset() { - *x = GetUserListReq{} +func (x *DepartmentListReq) Reset() { + *x = DepartmentListReq{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -138,13 +174,13 @@ func (x *GetUserListReq) Reset() { } } -func (x *GetUserListReq) String() string { +func (x *DepartmentListReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetUserListReq) ProtoMessage() {} +func (*DepartmentListReq) ProtoMessage() {} -func (x *GetUserListReq) ProtoReflect() protoreflect.Message { +func (x *DepartmentListReq) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -156,82 +192,50 @@ func (x *GetUserListReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetUserListReq.ProtoReflect.Descriptor instead. -func (*GetUserListReq) Descriptor() ([]byte, []int) { +// Deprecated: Use DepartmentListReq.ProtoReflect.Descriptor instead. +func (*DepartmentListReq) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{2} } -func (x *GetUserListReq) GetPage() uint64 { +func (x *DepartmentListReq) GetPage() uint64 { if x != nil { return x.Page } return 0 } -func (x *GetUserListReq) GetPageSize() uint64 { +func (x *DepartmentListReq) GetPageSize() uint64 { if x != nil { return x.PageSize } return 0 } -func (x *GetUserListReq) GetUsername() string { - if x != nil { - return x.Username - } - return "" -} - -func (x *GetUserListReq) GetNickname() string { - if x != nil { - return x.Nickname - } - return "" -} - -func (x *GetUserListReq) GetEmail() string { +func (x *DepartmentListReq) GetName() string { if x != nil { - return x.Email + return x.Name } return "" } -func (x *GetUserListReq) GetMobile() string { +func (x *DepartmentListReq) GetLeader() string { if x != nil { - return x.Mobile + return x.Leader } return "" } -func (x *GetUserListReq) GetRoleId() uint64 { - if x != nil { - return x.RoleId - } - return 0 -} - -func (x *GetUserListReq) GetDepartmentId() uint64 { - if x != nil { - return x.DepartmentId - } - return 0 -} - -type ApiListReq struct { +type PostListResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Page uint64 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` - PageSize uint64 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` - Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` - Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` - Method string `protobuf:"bytes,5,opt,name=method,proto3" json:"method,omitempty"` - Group string `protobuf:"bytes,6,opt,name=group,proto3" json:"group,omitempty"` + Total uint64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` + Data []*PostInfo `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` } -func (x *ApiListReq) Reset() { - *x = ApiListReq{} +func (x *PostListResp) Reset() { + *x = PostListResp{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -239,13 +243,13 @@ func (x *ApiListReq) Reset() { } } -func (x *ApiListReq) String() string { +func (x *PostListResp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ApiListReq) ProtoMessage() {} +func (*PostListResp) ProtoMessage() {} -func (x *ApiListReq) ProtoReflect() protoreflect.Message { +func (x *PostListResp) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -257,64 +261,36 @@ func (x *ApiListReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ApiListReq.ProtoReflect.Descriptor instead. -func (*ApiListReq) Descriptor() ([]byte, []int) { +// Deprecated: Use PostListResp.ProtoReflect.Descriptor instead. +func (*PostListResp) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{3} } -func (x *ApiListReq) GetPage() uint64 { - if x != nil { - return x.Page - } - return 0 -} - -func (x *ApiListReq) GetPageSize() uint64 { +func (x *PostListResp) GetTotal() uint64 { if x != nil { - return x.PageSize + return x.Total } return 0 } -func (x *ApiListReq) GetPath() string { - if x != nil { - return x.Path - } - return "" -} - -func (x *ApiListReq) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *ApiListReq) GetMethod() string { - if x != nil { - return x.Method - } - return "" -} - -func (x *ApiListReq) GetGroup() string { +func (x *PostListResp) GetData() []*PostInfo { if x != nil { - return x.Group + return x.Data } - return "" + return nil } -type MenuParamListResp struct { +type StatusCodeUUIDReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total uint64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` - Data []*MenuParamResp `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Status uint32 `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"` } -func (x *MenuParamListResp) Reset() { - *x = MenuParamListResp{} +func (x *StatusCodeUUIDReq) Reset() { + *x = StatusCodeUUIDReq{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -322,13 +298,13 @@ func (x *MenuParamListResp) Reset() { } } -func (x *MenuParamListResp) String() string { +func (x *StatusCodeUUIDReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MenuParamListResp) ProtoMessage() {} +func (*StatusCodeUUIDReq) ProtoMessage() {} -func (x *MenuParamListResp) ProtoReflect() protoreflect.Message { +func (x *StatusCodeUUIDReq) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -340,37 +316,36 @@ func (x *MenuParamListResp) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use MenuParamListResp.ProtoReflect.Descriptor instead. -func (*MenuParamListResp) Descriptor() ([]byte, []int) { +// Deprecated: Use StatusCodeUUIDReq.ProtoReflect.Descriptor instead. +func (*StatusCodeUUIDReq) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{4} } -func (x *MenuParamListResp) GetTotal() uint64 { +func (x *StatusCodeUUIDReq) GetId() string { if x != nil { - return x.Total + return x.Id } - return 0 + return "" } -func (x *MenuParamListResp) GetData() []*MenuParamResp { +func (x *StatusCodeUUIDReq) GetStatus() uint32 { if x != nil { - return x.Data + return x.Status } - return nil + return 0 } -type PostListReq struct { +type UserListResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Page uint64 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` - PageSize uint64 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Total uint64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` + Data []*UserInfoResp `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` } -func (x *PostListReq) Reset() { - *x = PostListReq{} +func (x *UserListResp) Reset() { + *x = UserListResp{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -378,13 +353,13 @@ func (x *PostListReq) Reset() { } } -func (x *PostListReq) String() string { +func (x *UserListResp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PostListReq) ProtoMessage() {} +func (*UserListResp) ProtoMessage() {} -func (x *PostListReq) ProtoReflect() protoreflect.Message { +func (x *UserListResp) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -396,53 +371,36 @@ func (x *PostListReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PostListReq.ProtoReflect.Descriptor instead. -func (*PostListReq) Descriptor() ([]byte, []int) { +// Deprecated: Use UserListResp.ProtoReflect.Descriptor instead. +func (*UserListResp) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{5} } -func (x *PostListReq) GetPage() uint64 { - if x != nil { - return x.Page - } - return 0 -} - -func (x *PostListReq) GetPageSize() uint64 { +func (x *UserListResp) GetTotal() uint64 { if x != nil { - return x.PageSize + return x.Total } return 0 } -func (x *PostListReq) GetName() string { +func (x *UserListResp) GetData() []*UserInfoResp { if x != nil { - return x.Name + return x.Data } - return "" + return nil } -// menu messages -type CreateOrUpdateMenuReq struct { +type ApiListResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Level uint32 `protobuf:"varint,1,opt,name=level,proto3" json:"level,omitempty"` - ParentId uint64 `protobuf:"varint,2,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"` - Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` - Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` - Redirect string `protobuf:"bytes,5,opt,name=redirect,proto3" json:"redirect,omitempty"` - Component string `protobuf:"bytes,6,opt,name=component,proto3" json:"component,omitempty"` - Sort uint32 `protobuf:"varint,7,opt,name=sort,proto3" json:"sort,omitempty"` - Disabled bool `protobuf:"varint,8,opt,name=disabled,proto3" json:"disabled,omitempty"` - Meta *Meta `protobuf:"bytes,9,opt,name=meta,proto3" json:"meta,omitempty"` - Id uint64 `protobuf:"varint,10,opt,name=id,proto3" json:"id,omitempty"` - MenuType uint32 `protobuf:"varint,11,opt,name=menu_type,json=menuType,proto3" json:"menu_type,omitempty"` + Total uint64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` + Data []*ApiInfo `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` } -func (x *CreateOrUpdateMenuReq) Reset() { - *x = CreateOrUpdateMenuReq{} +func (x *ApiListResp) Reset() { + *x = ApiListResp{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -450,13 +408,13 @@ func (x *CreateOrUpdateMenuReq) Reset() { } } -func (x *CreateOrUpdateMenuReq) String() string { +func (x *ApiListResp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateOrUpdateMenuReq) ProtoMessage() {} +func (*ApiListResp) ProtoMessage() {} -func (x *CreateOrUpdateMenuReq) ProtoReflect() protoreflect.Message { +func (x *ApiListResp) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -468,99 +426,34 @@ func (x *CreateOrUpdateMenuReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateOrUpdateMenuReq.ProtoReflect.Descriptor instead. -func (*CreateOrUpdateMenuReq) Descriptor() ([]byte, []int) { +// Deprecated: Use ApiListResp.ProtoReflect.Descriptor instead. +func (*ApiListResp) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{6} } -func (x *CreateOrUpdateMenuReq) GetLevel() uint32 { - if x != nil { - return x.Level - } - return 0 -} - -func (x *CreateOrUpdateMenuReq) GetParentId() uint64 { - if x != nil { - return x.ParentId - } - return 0 -} - -func (x *CreateOrUpdateMenuReq) GetPath() string { - if x != nil { - return x.Path - } - return "" -} - -func (x *CreateOrUpdateMenuReq) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *CreateOrUpdateMenuReq) GetRedirect() string { - if x != nil { - return x.Redirect - } - return "" -} - -func (x *CreateOrUpdateMenuReq) GetComponent() string { - if x != nil { - return x.Component - } - return "" -} - -func (x *CreateOrUpdateMenuReq) GetSort() uint32 { +func (x *ApiListResp) GetTotal() uint64 { if x != nil { - return x.Sort + return x.Total } return 0 } -func (x *CreateOrUpdateMenuReq) GetDisabled() bool { - if x != nil { - return x.Disabled - } - return false -} - -func (x *CreateOrUpdateMenuReq) GetMeta() *Meta { +func (x *ApiListResp) GetData() []*ApiInfo { if x != nil { - return x.Meta + return x.Data } return nil } -func (x *CreateOrUpdateMenuReq) GetId() uint64 { - if x != nil { - return x.Id - } - return 0 -} - -func (x *CreateOrUpdateMenuReq) GetMenuType() uint32 { - if x != nil { - return x.MenuType - } - return 0 -} - -type MenuRoleListResp struct { +// base message +type Empty struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - Total uint64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` - Data []*MenuRoleInfo `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` } -func (x *MenuRoleListResp) Reset() { - *x = MenuRoleListResp{} +func (x *Empty) Reset() { + *x = Empty{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -568,13 +461,13 @@ func (x *MenuRoleListResp) Reset() { } } -func (x *MenuRoleListResp) String() string { +func (x *Empty) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MenuRoleListResp) ProtoMessage() {} +func (*Empty) ProtoMessage() {} -func (x *MenuRoleListResp) ProtoReflect() protoreflect.Message { +func (x *Empty) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -586,35 +479,21 @@ func (x *MenuRoleListResp) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use MenuRoleListResp.ProtoReflect.Descriptor instead. -func (*MenuRoleListResp) Descriptor() ([]byte, []int) { +// Deprecated: Use Empty.ProtoReflect.Descriptor instead. +func (*Empty) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{7} } -func (x *MenuRoleListResp) GetTotal() uint64 { - if x != nil { - return x.Total - } - return 0 -} - -func (x *MenuRoleListResp) GetData() []*MenuRoleInfo { - if x != nil { - return x.Data - } - return nil -} - -type IDsReq struct { +type UUIDReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Ids []uint64 `protobuf:"varint,1,rep,packed,name=ids,proto3" json:"ids,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } -func (x *IDsReq) Reset() { - *x = IDsReq{} +func (x *UUIDReq) Reset() { + *x = UUIDReq{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -622,13 +501,13 @@ func (x *IDsReq) Reset() { } } -func (x *IDsReq) String() string { +func (x *UUIDReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IDsReq) ProtoMessage() {} +func (*UUIDReq) ProtoMessage() {} -func (x *IDsReq) ProtoReflect() protoreflect.Message { +func (x *UUIDReq) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -640,28 +519,35 @@ func (x *IDsReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IDsReq.ProtoReflect.Descriptor instead. -func (*IDsReq) Descriptor() ([]byte, []int) { +// Deprecated: Use UUIDReq.ProtoReflect.Descriptor instead. +func (*UUIDReq) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{8} } -func (x *IDsReq) GetIds() []uint64 { +func (x *UUIDReq) GetId() string { if x != nil { - return x.Ids + return x.Id } - return nil + return "" } -type BaseResp struct { +// dictionary message +type DictionaryInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Status uint32 `protobuf:"varint,4,opt,name=status,proto3" json:"status,omitempty"` + Desc string `protobuf:"bytes,5,opt,name=desc,proto3" json:"desc,omitempty"` + CreatedAt int64 `protobuf:"varint,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt int64 `protobuf:"varint,7,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` } -func (x *BaseResp) Reset() { - *x = BaseResp{} +func (x *DictionaryInfo) Reset() { + *x = DictionaryInfo{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -669,13 +555,13 @@ func (x *BaseResp) Reset() { } } -func (x *BaseResp) String() string { +func (x *DictionaryInfo) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BaseResp) ProtoMessage() {} +func (*DictionaryInfo) ProtoMessage() {} -func (x *BaseResp) ProtoReflect() protoreflect.Message { +func (x *DictionaryInfo) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -687,49 +573,91 @@ func (x *BaseResp) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BaseResp.ProtoReflect.Descriptor instead. -func (*BaseResp) Descriptor() ([]byte, []int) { +// Deprecated: Use DictionaryInfo.ProtoReflect.Descriptor instead. +func (*DictionaryInfo) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{9} } -func (x *BaseResp) GetMsg() string { +func (x *DictionaryInfo) GetId() uint64 { if x != nil { - return x.Msg + return x.Id } - return "" + return 0 } -type PostInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - CreatedAt int64 `protobuf:"varint,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt int64 `protobuf:"varint,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - Status uint32 `protobuf:"varint,4,opt,name=status,proto3" json:"status,omitempty"` - Sort uint32 `protobuf:"varint,5,opt,name=sort,proto3" json:"sort,omitempty"` - Name string `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"` - Code string `protobuf:"bytes,7,opt,name=code,proto3" json:"code,omitempty"` - Remark string `protobuf:"bytes,8,opt,name=remark,proto3" json:"remark,omitempty"` +func (x *DictionaryInfo) GetTitle() string { + if x != nil { + return x.Title + } + return "" } -func (x *PostInfo) Reset() { - *x = PostInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *DictionaryInfo) GetName() string { + if x != nil { + return x.Name } + return "" } -func (x *PostInfo) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *DictionaryInfo) GetStatus() uint32 { + if x != nil { + return x.Status + } + return 0 } -func (*PostInfo) ProtoMessage() {} +func (x *DictionaryInfo) GetDesc() string { + if x != nil { + return x.Desc + } + return "" +} -func (x *PostInfo) ProtoReflect() protoreflect.Message { +func (x *DictionaryInfo) GetCreatedAt() int64 { + if x != nil { + return x.CreatedAt + } + return 0 +} + +func (x *DictionaryInfo) GetUpdatedAt() int64 { + if x != nil { + return x.UpdatedAt + } + return 0 +} + +type DictionaryDetail struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + Key string `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"` + Value string `protobuf:"bytes,4,opt,name=value,proto3" json:"value,omitempty"` + Status uint32 `protobuf:"varint,5,opt,name=status,proto3" json:"status,omitempty"` + CreatedAt int64 `protobuf:"varint,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt int64 `protobuf:"varint,7,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + DictionaryId uint64 `protobuf:"varint,8,opt,name=dictionary_id,json=dictionaryId,proto3" json:"dictionary_id,omitempty"` +} + +func (x *DictionaryDetail) Reset() { + *x = DictionaryDetail{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_core_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DictionaryDetail) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DictionaryDetail) ProtoMessage() {} + +func (x *DictionaryDetail) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -741,78 +669,78 @@ func (x *PostInfo) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PostInfo.ProtoReflect.Descriptor instead. -func (*PostInfo) Descriptor() ([]byte, []int) { +// Deprecated: Use DictionaryDetail.ProtoReflect.Descriptor instead. +func (*DictionaryDetail) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{10} } -func (x *PostInfo) GetId() uint64 { +func (x *DictionaryDetail) GetId() uint64 { if x != nil { return x.Id } return 0 } -func (x *PostInfo) GetCreatedAt() int64 { +func (x *DictionaryDetail) GetTitle() string { if x != nil { - return x.CreatedAt + return x.Title } - return 0 + return "" } -func (x *PostInfo) GetUpdatedAt() int64 { +func (x *DictionaryDetail) GetKey() string { if x != nil { - return x.UpdatedAt + return x.Key } - return 0 + return "" } -func (x *PostInfo) GetStatus() uint32 { +func (x *DictionaryDetail) GetValue() string { if x != nil { - return x.Status + return x.Value } - return 0 + return "" } -func (x *PostInfo) GetSort() uint32 { +func (x *DictionaryDetail) GetStatus() uint32 { if x != nil { - return x.Sort + return x.Status } return 0 } -func (x *PostInfo) GetName() string { +func (x *DictionaryDetail) GetCreatedAt() int64 { if x != nil { - return x.Name + return x.CreatedAt } - return "" + return 0 } -func (x *PostInfo) GetCode() string { +func (x *DictionaryDetail) GetUpdatedAt() int64 { if x != nil { - return x.Code + return x.UpdatedAt } - return "" + return 0 } -func (x *PostInfo) GetRemark() string { +func (x *DictionaryDetail) GetDictionaryId() uint64 { if x != nil { - return x.Remark + return x.DictionaryId } - return "" + return 0 } -type PostListResp struct { +type DictionaryDetailList struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total uint64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` - Data []*PostInfo `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` + Total uint64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` + Data []*DictionaryDetail `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` } -func (x *PostListResp) Reset() { - *x = PostListResp{} +func (x *DictionaryDetailList) Reset() { + *x = DictionaryDetailList{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -820,13 +748,13 @@ func (x *PostListResp) Reset() { } } -func (x *PostListResp) String() string { +func (x *DictionaryDetailList) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PostListResp) ProtoMessage() {} +func (*DictionaryDetailList) ProtoMessage() {} -func (x *PostListResp) ProtoReflect() protoreflect.Message { +func (x *DictionaryDetailList) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -838,47 +766,37 @@ func (x *PostListResp) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PostListResp.ProtoReflect.Descriptor instead. -func (*PostListResp) Descriptor() ([]byte, []int) { +// Deprecated: Use DictionaryDetailList.ProtoReflect.Descriptor instead. +func (*DictionaryDetailList) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{11} } -func (x *PostListResp) GetTotal() uint64 { +func (x *DictionaryDetailList) GetTotal() uint64 { if x != nil { return x.Total } return 0 } -func (x *PostListResp) GetData() []*PostInfo { +func (x *DictionaryDetailList) GetData() []*DictionaryDetail { if x != nil { return x.Data } return nil } -type MenuInfo struct { +// oauth message +type OauthLoginReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - CreatedAt int64 `protobuf:"varint,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt int64 `protobuf:"varint,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - Level uint32 `protobuf:"varint,4,opt,name=level,proto3" json:"level,omitempty"` - ParentId uint64 `protobuf:"varint,5,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"` - Path string `protobuf:"bytes,6,opt,name=path,proto3" json:"path,omitempty"` - Name string `protobuf:"bytes,7,opt,name=name,proto3" json:"name,omitempty"` - Redirect string `protobuf:"bytes,8,opt,name=redirect,proto3" json:"redirect,omitempty"` - Component string `protobuf:"bytes,9,opt,name=component,proto3" json:"component,omitempty"` - Sort uint32 `protobuf:"varint,10,opt,name=sort,proto3" json:"sort,omitempty"` - Disabled bool `protobuf:"varint,11,opt,name=disabled,proto3" json:"disabled,omitempty"` - Meta *Meta `protobuf:"bytes,12,opt,name=meta,proto3" json:"meta,omitempty"` - MenuType uint32 `protobuf:"varint,13,opt,name=menu_type,json=menuType,proto3" json:"menu_type,omitempty"` + State string `protobuf:"bytes,1,opt,name=state,proto3" json:"state,omitempty"` + Provider string `protobuf:"bytes,2,opt,name=provider,proto3" json:"provider,omitempty"` } -func (x *MenuInfo) Reset() { - *x = MenuInfo{} +func (x *OauthLoginReq) Reset() { + *x = OauthLoginReq{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -886,13 +804,13 @@ func (x *MenuInfo) Reset() { } } -func (x *MenuInfo) String() string { +func (x *OauthLoginReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MenuInfo) ProtoMessage() {} +func (*OauthLoginReq) ProtoMessage() {} -func (x *MenuInfo) ProtoReflect() protoreflect.Message { +func (x *OauthLoginReq) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -904,114 +822,36 @@ func (x *MenuInfo) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use MenuInfo.ProtoReflect.Descriptor instead. -func (*MenuInfo) Descriptor() ([]byte, []int) { +// Deprecated: Use OauthLoginReq.ProtoReflect.Descriptor instead. +func (*OauthLoginReq) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{12} } -func (x *MenuInfo) GetId() uint64 { - if x != nil { - return x.Id - } - return 0 -} - -func (x *MenuInfo) GetCreatedAt() int64 { - if x != nil { - return x.CreatedAt - } - return 0 -} - -func (x *MenuInfo) GetUpdatedAt() int64 { - if x != nil { - return x.UpdatedAt - } - return 0 -} - -func (x *MenuInfo) GetLevel() uint32 { - if x != nil { - return x.Level - } - return 0 -} - -func (x *MenuInfo) GetParentId() uint64 { - if x != nil { - return x.ParentId - } - return 0 -} - -func (x *MenuInfo) GetPath() string { - if x != nil { - return x.Path - } - return "" -} - -func (x *MenuInfo) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *MenuInfo) GetRedirect() string { +func (x *OauthLoginReq) GetState() string { if x != nil { - return x.Redirect + return x.State } return "" } -func (x *MenuInfo) GetComponent() string { +func (x *OauthLoginReq) GetProvider() string { if x != nil { - return x.Component + return x.Provider } return "" } -func (x *MenuInfo) GetSort() uint32 { - if x != nil { - return x.Sort - } - return 0 -} - -func (x *MenuInfo) GetDisabled() bool { - if x != nil { - return x.Disabled - } - return false -} - -func (x *MenuInfo) GetMeta() *Meta { - if x != nil { - return x.Meta - } - return nil -} - -func (x *MenuInfo) GetMenuType() uint32 { - if x != nil { - return x.MenuType - } - return 0 -} - -// oauth message -type OauthLoginReq struct { +type ProviderListResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - State string `protobuf:"bytes,1,opt,name=state,proto3" json:"state,omitempty"` - Provider string `protobuf:"bytes,2,opt,name=provider,proto3" json:"provider,omitempty"` + Total uint64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` + Data []*ProviderInfo `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` } -func (x *OauthLoginReq) Reset() { - *x = OauthLoginReq{} +func (x *ProviderListResp) Reset() { + *x = ProviderListResp{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1019,13 +859,13 @@ func (x *OauthLoginReq) Reset() { } } -func (x *OauthLoginReq) String() string { +func (x *ProviderListResp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*OauthLoginReq) ProtoMessage() {} +func (*ProviderListResp) ProtoMessage() {} -func (x *OauthLoginReq) ProtoReflect() protoreflect.Message { +func (x *ProviderListResp) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1037,46 +877,37 @@ func (x *OauthLoginReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use OauthLoginReq.ProtoReflect.Descriptor instead. -func (*OauthLoginReq) Descriptor() ([]byte, []int) { +// Deprecated: Use ProviderListResp.ProtoReflect.Descriptor instead. +func (*ProviderListResp) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{13} } -func (x *OauthLoginReq) GetState() string { +func (x *ProviderListResp) GetTotal() uint64 { if x != nil { - return x.State + return x.Total } - return "" + return 0 } -func (x *OauthLoginReq) GetProvider() string { +func (x *ProviderListResp) GetData() []*ProviderInfo { if x != nil { - return x.Provider + return x.Data } - return "" + return nil } -type ProviderInfo struct { +type PostListReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - ClientId string `protobuf:"bytes,3,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` - ClientSecret string `protobuf:"bytes,4,opt,name=client_secret,json=clientSecret,proto3" json:"client_secret,omitempty"` - RedirectUrl string `protobuf:"bytes,5,opt,name=redirect_url,json=redirectUrl,proto3" json:"redirect_url,omitempty"` - Scopes string `protobuf:"bytes,6,opt,name=scopes,proto3" json:"scopes,omitempty"` - AuthUrl string `protobuf:"bytes,7,opt,name=auth_url,json=authUrl,proto3" json:"auth_url,omitempty"` - TokenUrl string `protobuf:"bytes,8,opt,name=token_url,json=tokenUrl,proto3" json:"token_url,omitempty"` - AuthStyle uint64 `protobuf:"varint,9,opt,name=auth_style,json=authStyle,proto3" json:"auth_style,omitempty"` - InfoUrl string `protobuf:"bytes,10,opt,name=info_url,json=infoUrl,proto3" json:"info_url,omitempty"` - CreatedAt int64 `protobuf:"varint,11,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt int64 `protobuf:"varint,12,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Page uint64 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` + PageSize uint64 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` } -func (x *ProviderInfo) Reset() { - *x = ProviderInfo{} +func (x *PostListReq) Reset() { + *x = PostListReq{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1084,13 +915,13 @@ func (x *ProviderInfo) Reset() { } } -func (x *ProviderInfo) String() string { +func (x *PostListReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ProviderInfo) ProtoMessage() {} +func (*PostListReq) ProtoMessage() {} -func (x *ProviderInfo) ProtoReflect() protoreflect.Message { +func (x *PostListReq) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1102,106 +933,43 @@ func (x *ProviderInfo) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ProviderInfo.ProtoReflect.Descriptor instead. -func (*ProviderInfo) Descriptor() ([]byte, []int) { +// Deprecated: Use PostListReq.ProtoReflect.Descriptor instead. +func (*PostListReq) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{14} } -func (x *ProviderInfo) GetId() uint64 { +func (x *PostListReq) GetPage() uint64 { if x != nil { - return x.Id + return x.Page } return 0 } -func (x *ProviderInfo) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *ProviderInfo) GetClientId() string { - if x != nil { - return x.ClientId - } - return "" -} - -func (x *ProviderInfo) GetClientSecret() string { - if x != nil { - return x.ClientSecret - } - return "" -} - -func (x *ProviderInfo) GetRedirectUrl() string { - if x != nil { - return x.RedirectUrl - } - return "" -} - -func (x *ProviderInfo) GetScopes() string { - if x != nil { - return x.Scopes - } - return "" -} - -func (x *ProviderInfo) GetAuthUrl() string { - if x != nil { - return x.AuthUrl - } - return "" -} - -func (x *ProviderInfo) GetTokenUrl() string { - if x != nil { - return x.TokenUrl - } - return "" -} - -func (x *ProviderInfo) GetAuthStyle() uint64 { +func (x *PostListReq) GetPageSize() uint64 { if x != nil { - return x.AuthStyle + return x.PageSize } return 0 } -func (x *ProviderInfo) GetInfoUrl() string { +func (x *PostListReq) GetName() string { if x != nil { - return x.InfoUrl + return x.Name } return "" } -func (x *ProviderInfo) GetCreatedAt() int64 { - if x != nil { - return x.CreatedAt - } - return 0 -} - -func (x *ProviderInfo) GetUpdatedAt() int64 { - if x != nil { - return x.UpdatedAt - } - return 0 -} - -type DictionaryDetailList struct { +type TokenListResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total uint64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` - Data []*DictionaryDetail `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` + Total uint64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` + Data []*TokenInfo `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` } -func (x *DictionaryDetailList) Reset() { - *x = DictionaryDetailList{} +func (x *TokenListResp) Reset() { + *x = TokenListResp{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1209,13 +977,13 @@ func (x *DictionaryDetailList) Reset() { } } -func (x *DictionaryDetailList) String() string { +func (x *TokenListResp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DictionaryDetailList) ProtoMessage() {} +func (*TokenListResp) ProtoMessage() {} -func (x *DictionaryDetailList) ProtoReflect() protoreflect.Message { +func (x *TokenListResp) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1227,49 +995,40 @@ func (x *DictionaryDetailList) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DictionaryDetailList.ProtoReflect.Descriptor instead. -func (*DictionaryDetailList) Descriptor() ([]byte, []int) { +// Deprecated: Use TokenListResp.ProtoReflect.Descriptor instead. +func (*TokenListResp) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{15} } -func (x *DictionaryDetailList) GetTotal() uint64 { +func (x *TokenListResp) GetTotal() uint64 { if x != nil { return x.Total } return 0 } -func (x *DictionaryDetailList) GetData() []*DictionaryDetail { +func (x *TokenListResp) GetData() []*TokenInfo { if x != nil { return x.Data } return nil } -type UserInfoResp struct { +type UpdateProfileReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Avatar string `protobuf:"bytes,2,opt,name=avatar,proto3" json:"avatar,omitempty"` - RoleId uint64 `protobuf:"varint,3,opt,name=role_id,json=roleId,proto3" json:"role_id,omitempty"` - Mobile string `protobuf:"bytes,4,opt,name=mobile,proto3" json:"mobile,omitempty"` - Email string `protobuf:"bytes,5,opt,name=email,proto3" json:"email,omitempty"` - Status uint32 `protobuf:"varint,6,opt,name=status,proto3" json:"status,omitempty"` - Username string `protobuf:"bytes,7,opt,name=username,proto3" json:"username,omitempty"` - Nickname string `protobuf:"bytes,8,opt,name=nickname,proto3" json:"nickname,omitempty"` - RoleName string `protobuf:"bytes,9,opt,name=roleName,proto3" json:"roleName,omitempty"` - CreatedAt int64 `protobuf:"varint,10,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt int64 `protobuf:"varint,11,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - RoleValue string `protobuf:"bytes,12,opt,name=roleValue,proto3" json:"roleValue,omitempty"` - HomePath string `protobuf:"bytes,13,opt,name=home_path,json=homePath,proto3" json:"home_path,omitempty"` - Description string `protobuf:"bytes,14,opt,name=description,proto3" json:"description,omitempty"` - DepartmentId uint64 `protobuf:"varint,15,opt,name=department_id,json=departmentId,proto3" json:"department_id,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Nickname string `protobuf:"bytes,2,opt,name=nickname,proto3" json:"nickname,omitempty"` + Email string `protobuf:"bytes,3,opt,name=email,proto3" json:"email,omitempty"` + Mobile string `protobuf:"bytes,4,opt,name=mobile,proto3" json:"mobile,omitempty"` + Avatar string `protobuf:"bytes,5,opt,name=avatar,proto3" json:"avatar,omitempty"` + Description string `protobuf:"bytes,6,opt,name=description,proto3" json:"description,omitempty"` } -func (x *UserInfoResp) Reset() { - *x = UserInfoResp{} +func (x *UpdateProfileReq) Reset() { + *x = UpdateProfileReq{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1277,13 +1036,13 @@ func (x *UserInfoResp) Reset() { } } -func (x *UserInfoResp) String() string { +func (x *UpdateProfileReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UserInfoResp) ProtoMessage() {} +func (*UpdateProfileReq) ProtoMessage() {} -func (x *UserInfoResp) ProtoReflect() protoreflect.Message { +func (x *UpdateProfileReq) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1295,148 +1054,126 @@ func (x *UserInfoResp) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UserInfoResp.ProtoReflect.Descriptor instead. -func (*UserInfoResp) Descriptor() ([]byte, []int) { +// Deprecated: Use UpdateProfileReq.ProtoReflect.Descriptor instead. +func (*UpdateProfileReq) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{16} } -func (x *UserInfoResp) GetId() string { +func (x *UpdateProfileReq) GetId() string { if x != nil { return x.Id } return "" } -func (x *UserInfoResp) GetAvatar() string { +func (x *UpdateProfileReq) GetNickname() string { if x != nil { - return x.Avatar + return x.Nickname } return "" } -func (x *UserInfoResp) GetRoleId() uint64 { +func (x *UpdateProfileReq) GetEmail() string { if x != nil { - return x.RoleId + return x.Email } - return 0 + return "" } -func (x *UserInfoResp) GetMobile() string { +func (x *UpdateProfileReq) GetMobile() string { if x != nil { return x.Mobile } return "" } -func (x *UserInfoResp) GetEmail() string { +func (x *UpdateProfileReq) GetAvatar() string { if x != nil { - return x.Email + return x.Avatar } return "" } -func (x *UserInfoResp) GetStatus() uint32 { - if x != nil { - return x.Status - } - return 0 -} - -func (x *UserInfoResp) GetUsername() string { +func (x *UpdateProfileReq) GetDescription() string { if x != nil { - return x.Username + return x.Description } return "" } -func (x *UserInfoResp) GetNickname() string { - if x != nil { - return x.Nickname - } - return "" +type DictionaryDetailReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } -func (x *UserInfoResp) GetRoleName() string { - if x != nil { - return x.RoleName +func (x *DictionaryDetailReq) Reset() { + *x = DictionaryDetailReq{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_core_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *UserInfoResp) GetCreatedAt() int64 { - if x != nil { - return x.CreatedAt - } - return 0 +func (x *DictionaryDetailReq) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *UserInfoResp) GetUpdatedAt() int64 { - if x != nil { - return x.UpdatedAt +func (*DictionaryDetailReq) ProtoMessage() {} + +func (x *DictionaryDetailReq) ProtoReflect() protoreflect.Message { + mi := &file_rpc_core_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 0 + return mi.MessageOf(x) } -func (x *UserInfoResp) GetRoleValue() string { - if x != nil { - return x.RoleValue - } - return "" -} - -func (x *UserInfoResp) GetHomePath() string { - if x != nil { - return x.HomePath - } - return "" +// Deprecated: Use DictionaryDetailReq.ProtoReflect.Descriptor instead. +func (*DictionaryDetailReq) Descriptor() ([]byte, []int) { + return file_rpc_core_proto_rawDescGZIP(), []int{17} } -func (x *UserInfoResp) GetDescription() string { +func (x *DictionaryDetailReq) GetName() string { if x != nil { - return x.Description + return x.Name } return "" } -func (x *UserInfoResp) GetDepartmentId() uint64 { - if x != nil { - return x.DepartmentId - } - return 0 -} - -// dictionary message -type DictionaryInfo struct { +type MenuRoleListResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` - Status uint32 `protobuf:"varint,4,opt,name=status,proto3" json:"status,omitempty"` - Desc string `protobuf:"bytes,5,opt,name=desc,proto3" json:"desc,omitempty"` - CreatedAt int64 `protobuf:"varint,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt int64 `protobuf:"varint,7,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Total uint64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` + Data []*MenuRoleInfo `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` } -func (x *DictionaryInfo) Reset() { - *x = DictionaryInfo{} +func (x *MenuRoleListResp) Reset() { + *x = MenuRoleListResp{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[17] + mi := &file_rpc_core_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DictionaryInfo) String() string { +func (x *MenuRoleListResp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DictionaryInfo) ProtoMessage() {} +func (*MenuRoleListResp) ProtoMessage() {} -func (x *DictionaryInfo) ProtoReflect() protoreflect.Message { - mi := &file_rpc_core_proto_msgTypes[17] +func (x *MenuRoleListResp) ProtoReflect() protoreflect.Message { + mi := &file_rpc_core_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1447,90 +1184,61 @@ func (x *DictionaryInfo) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DictionaryInfo.ProtoReflect.Descriptor instead. -func (*DictionaryInfo) Descriptor() ([]byte, []int) { - return file_rpc_core_proto_rawDescGZIP(), []int{17} -} - -func (x *DictionaryInfo) GetId() uint64 { - if x != nil { - return x.Id - } - return 0 -} - -func (x *DictionaryInfo) GetTitle() string { - if x != nil { - return x.Title - } - return "" -} - -func (x *DictionaryInfo) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *DictionaryInfo) GetStatus() uint32 { - if x != nil { - return x.Status - } - return 0 -} - -func (x *DictionaryInfo) GetDesc() string { - if x != nil { - return x.Desc - } - return "" +// Deprecated: Use MenuRoleListResp.ProtoReflect.Descriptor instead. +func (*MenuRoleListResp) Descriptor() ([]byte, []int) { + return file_rpc_core_proto_rawDescGZIP(), []int{18} } -func (x *DictionaryInfo) GetCreatedAt() int64 { +func (x *MenuRoleListResp) GetTotal() uint64 { if x != nil { - return x.CreatedAt + return x.Total } return 0 } -func (x *DictionaryInfo) GetUpdatedAt() int64 { +func (x *MenuRoleListResp) GetData() []*MenuRoleInfo { if x != nil { - return x.UpdatedAt + return x.Data } - return 0 + return nil } -type UpdateProfileReq struct { +type ProviderInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Nickname string `protobuf:"bytes,2,opt,name=nickname,proto3" json:"nickname,omitempty"` - Email string `protobuf:"bytes,3,opt,name=email,proto3" json:"email,omitempty"` - Mobile string `protobuf:"bytes,4,opt,name=mobile,proto3" json:"mobile,omitempty"` - Avatar string `protobuf:"bytes,5,opt,name=avatar,proto3" json:"avatar,omitempty"` - Description string `protobuf:"bytes,6,opt,name=description,proto3" json:"description,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + ClientId string `protobuf:"bytes,3,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` + ClientSecret string `protobuf:"bytes,4,opt,name=client_secret,json=clientSecret,proto3" json:"client_secret,omitempty"` + RedirectUrl string `protobuf:"bytes,5,opt,name=redirect_url,json=redirectUrl,proto3" json:"redirect_url,omitempty"` + Scopes string `protobuf:"bytes,6,opt,name=scopes,proto3" json:"scopes,omitempty"` + AuthUrl string `protobuf:"bytes,7,opt,name=auth_url,json=authUrl,proto3" json:"auth_url,omitempty"` + TokenUrl string `protobuf:"bytes,8,opt,name=token_url,json=tokenUrl,proto3" json:"token_url,omitempty"` + AuthStyle uint64 `protobuf:"varint,9,opt,name=auth_style,json=authStyle,proto3" json:"auth_style,omitempty"` + InfoUrl string `protobuf:"bytes,10,opt,name=info_url,json=infoUrl,proto3" json:"info_url,omitempty"` + CreatedAt int64 `protobuf:"varint,11,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt int64 `protobuf:"varint,12,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` } -func (x *UpdateProfileReq) Reset() { - *x = UpdateProfileReq{} +func (x *ProviderInfo) Reset() { + *x = ProviderInfo{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[18] + mi := &file_rpc_core_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *UpdateProfileReq) String() string { +func (x *ProviderInfo) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpdateProfileReq) ProtoMessage() {} +func (*ProviderInfo) ProtoMessage() {} -func (x *UpdateProfileReq) ProtoReflect() protoreflect.Message { - mi := &file_rpc_core_proto_msgTypes[18] +func (x *ProviderInfo) ProtoReflect() protoreflect.Message { + mi := &file_rpc_core_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1541,119 +1249,105 @@ func (x *UpdateProfileReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdateProfileReq.ProtoReflect.Descriptor instead. -func (*UpdateProfileReq) Descriptor() ([]byte, []int) { - return file_rpc_core_proto_rawDescGZIP(), []int{18} +// Deprecated: Use ProviderInfo.ProtoReflect.Descriptor instead. +func (*ProviderInfo) Descriptor() ([]byte, []int) { + return file_rpc_core_proto_rawDescGZIP(), []int{19} } -func (x *UpdateProfileReq) GetId() string { +func (x *ProviderInfo) GetId() uint64 { if x != nil { return x.Id } - return "" + return 0 } -func (x *UpdateProfileReq) GetNickname() string { +func (x *ProviderInfo) GetName() string { if x != nil { - return x.Nickname + return x.Name } return "" } -func (x *UpdateProfileReq) GetEmail() string { +func (x *ProviderInfo) GetClientId() string { if x != nil { - return x.Email + return x.ClientId } return "" } -func (x *UpdateProfileReq) GetMobile() string { +func (x *ProviderInfo) GetClientSecret() string { if x != nil { - return x.Mobile + return x.ClientSecret } return "" } -func (x *UpdateProfileReq) GetAvatar() string { +func (x *ProviderInfo) GetRedirectUrl() string { if x != nil { - return x.Avatar + return x.RedirectUrl } return "" } -func (x *UpdateProfileReq) GetDescription() string { +func (x *ProviderInfo) GetScopes() string { if x != nil { - return x.Description + return x.Scopes } return "" } -type LoginReq struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` - Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"` -} - -func (x *LoginReq) Reset() { - *x = LoginReq{} - if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *ProviderInfo) GetAuthUrl() string { + if x != nil { + return x.AuthUrl } + return "" } -func (x *LoginReq) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *ProviderInfo) GetTokenUrl() string { + if x != nil { + return x.TokenUrl + } + return "" } -func (*LoginReq) ProtoMessage() {} - -func (x *LoginReq) ProtoReflect() protoreflect.Message { - mi := &file_rpc_core_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *ProviderInfo) GetAuthStyle() uint64 { + if x != nil { + return x.AuthStyle } - return mi.MessageOf(x) + return 0 } -// Deprecated: Use LoginReq.ProtoReflect.Descriptor instead. -func (*LoginReq) Descriptor() ([]byte, []int) { - return file_rpc_core_proto_rawDescGZIP(), []int{19} +func (x *ProviderInfo) GetInfoUrl() string { + if x != nil { + return x.InfoUrl + } + return "" } -func (x *LoginReq) GetUsername() string { +func (x *ProviderInfo) GetCreatedAt() int64 { if x != nil { - return x.Username + return x.CreatedAt } - return "" + return 0 } -func (x *LoginReq) GetPassword() string { +func (x *ProviderInfo) GetUpdatedAt() int64 { if x != nil { - return x.Password + return x.UpdatedAt } - return "" + return 0 } -type UserListResp struct { +type UUIDsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total uint64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` - Data []*UserInfoResp `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` + Ids []string `protobuf:"bytes,1,rep,name=ids,proto3" json:"ids,omitempty"` } -func (x *UserListResp) Reset() { - *x = UserListResp{} +func (x *UUIDsReq) Reset() { + *x = UUIDsReq{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1661,13 +1355,13 @@ func (x *UserListResp) Reset() { } } -func (x *UserListResp) String() string { +func (x *UUIDsReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UserListResp) ProtoMessage() {} +func (*UUIDsReq) ProtoMessage() {} -func (x *UserListResp) ProtoReflect() protoreflect.Message { +func (x *UUIDsReq) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1679,36 +1373,28 @@ func (x *UserListResp) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UserListResp.ProtoReflect.Descriptor instead. -func (*UserListResp) Descriptor() ([]byte, []int) { +// Deprecated: Use UUIDsReq.ProtoReflect.Descriptor instead. +func (*UUIDsReq) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{20} } -func (x *UserListResp) GetTotal() uint64 { +func (x *UUIDsReq) GetIds() []string { if x != nil { - return x.Total + return x.Ids } - return 0 + return nil } -func (x *UserListResp) GetData() []*UserInfoResp { - if x != nil { - return x.Data - } - return nil -} - -type PageInfoReq struct { +type IDReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Page uint64 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` - PageSize uint64 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` } -func (x *PageInfoReq) Reset() { - *x = PageInfoReq{} +func (x *IDReq) Reset() { + *x = IDReq{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1716,13 +1402,13 @@ func (x *PageInfoReq) Reset() { } } -func (x *PageInfoReq) String() string { +func (x *IDReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PageInfoReq) ProtoMessage() {} +func (*IDReq) ProtoMessage() {} -func (x *PageInfoReq) ProtoReflect() protoreflect.Message { +func (x *IDReq) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1734,37 +1420,40 @@ func (x *PageInfoReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PageInfoReq.ProtoReflect.Descriptor instead. -func (*PageInfoReq) Descriptor() ([]byte, []int) { +// Deprecated: Use IDReq.ProtoReflect.Descriptor instead. +func (*IDReq) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{21} } -func (x *PageInfoReq) GetPage() uint64 { - if x != nil { - return x.Page - } - return 0 -} - -func (x *PageInfoReq) GetPageSize() uint64 { +func (x *IDReq) GetId() uint64 { if x != nil { - return x.PageSize + return x.Id } return 0 } -type MenuRoleInfo struct { +type Meta struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - MenuId uint64 `protobuf:"varint,2,opt,name=menu_id,json=menuId,proto3" json:"menu_id,omitempty"` - RoleId uint64 `protobuf:"varint,3,opt,name=role_id,json=roleId,proto3" json:"role_id,omitempty"` + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` + Icon string `protobuf:"bytes,2,opt,name=icon,proto3" json:"icon,omitempty"` + HideMenu bool `protobuf:"varint,3,opt,name=hide_menu,json=hideMenu,proto3" json:"hide_menu,omitempty"` + HideBreadcrumb bool `protobuf:"varint,4,opt,name=hide_breadcrumb,json=hideBreadcrumb,proto3" json:"hide_breadcrumb,omitempty"` + CurrentActiveMenu string `protobuf:"bytes,5,opt,name=current_active_menu,json=currentActiveMenu,proto3" json:"current_active_menu,omitempty"` + IgnoreKeepAlive bool `protobuf:"varint,6,opt,name=ignore_keep_alive,json=ignoreKeepAlive,proto3" json:"ignore_keep_alive,omitempty"` + HideTab bool `protobuf:"varint,7,opt,name=hide_tab,json=hideTab,proto3" json:"hide_tab,omitempty"` + FrameSrc string `protobuf:"bytes,8,opt,name=frame_src,json=frameSrc,proto3" json:"frame_src,omitempty"` + CarryParam bool `protobuf:"varint,9,opt,name=carry_param,json=carryParam,proto3" json:"carry_param,omitempty"` + HideChildrenInMenu bool `protobuf:"varint,10,opt,name=hide_children_in_menu,json=hideChildrenInMenu,proto3" json:"hide_children_in_menu,omitempty"` + Affix bool `protobuf:"varint,11,opt,name=affix,proto3" json:"affix,omitempty"` + DynamicLevel uint32 `protobuf:"varint,12,opt,name=dynamic_level,json=dynamicLevel,proto3" json:"dynamic_level,omitempty"` + RealPath string `protobuf:"bytes,13,opt,name=real_path,json=realPath,proto3" json:"real_path,omitempty"` } -func (x *MenuRoleInfo) Reset() { - *x = MenuRoleInfo{} +func (x *Meta) Reset() { + *x = Meta{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1772,13 +1461,13 @@ func (x *MenuRoleInfo) Reset() { } } -func (x *MenuRoleInfo) String() string { +func (x *Meta) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MenuRoleInfo) ProtoMessage() {} +func (*Meta) ProtoMessage() {} -func (x *MenuRoleInfo) ProtoReflect() protoreflect.Message { +func (x *Meta) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1790,43 +1479,114 @@ func (x *MenuRoleInfo) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use MenuRoleInfo.ProtoReflect.Descriptor instead. -func (*MenuRoleInfo) Descriptor() ([]byte, []int) { +// Deprecated: Use Meta.ProtoReflect.Descriptor instead. +func (*Meta) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{22} } -func (x *MenuRoleInfo) GetId() uint64 { +func (x *Meta) GetTitle() string { if x != nil { - return x.Id + return x.Title } - return 0 + return "" } -func (x *MenuRoleInfo) GetMenuId() uint64 { +func (x *Meta) GetIcon() string { if x != nil { - return x.MenuId + return x.Icon } - return 0 + return "" } -func (x *MenuRoleInfo) GetRoleId() uint64 { +func (x *Meta) GetHideMenu() bool { if x != nil { - return x.RoleId + return x.HideMenu + } + return false +} + +func (x *Meta) GetHideBreadcrumb() bool { + if x != nil { + return x.HideBreadcrumb + } + return false +} + +func (x *Meta) GetCurrentActiveMenu() string { + if x != nil { + return x.CurrentActiveMenu + } + return "" +} + +func (x *Meta) GetIgnoreKeepAlive() bool { + if x != nil { + return x.IgnoreKeepAlive + } + return false +} + +func (x *Meta) GetHideTab() bool { + if x != nil { + return x.HideTab + } + return false +} + +func (x *Meta) GetFrameSrc() string { + if x != nil { + return x.FrameSrc + } + return "" +} + +func (x *Meta) GetCarryParam() bool { + if x != nil { + return x.CarryParam + } + return false +} + +func (x *Meta) GetHideChildrenInMenu() bool { + if x != nil { + return x.HideChildrenInMenu + } + return false +} + +func (x *Meta) GetAffix() bool { + if x != nil { + return x.Affix + } + return false +} + +func (x *Meta) GetDynamicLevel() uint32 { + if x != nil { + return x.DynamicLevel } return 0 } -type CallbackReq struct { +func (x *Meta) GetRealPath() string { + if x != nil { + return x.RealPath + } + return "" +} + +// authorization message +type RoleMenuAuthorityReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - State string `protobuf:"bytes,1,opt,name=state,proto3" json:"state,omitempty"` - Code string `protobuf:"bytes,2,opt,name=code,proto3" json:"code,omitempty"` + RoleId uint64 `protobuf:"varint,1,opt,name=role_id,json=roleId,proto3" json:"role_id,omitempty"` + MenuId []uint64 `protobuf:"varint,2,rep,packed,name=menu_id,json=menuId,proto3" json:"menu_id,omitempty"` } -func (x *CallbackReq) Reset() { - *x = CallbackReq{} +func (x *RoleMenuAuthorityReq) Reset() { + *x = RoleMenuAuthorityReq{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1834,13 +1594,13 @@ func (x *CallbackReq) Reset() { } } -func (x *CallbackReq) String() string { +func (x *RoleMenuAuthorityReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CallbackReq) ProtoMessage() {} +func (*RoleMenuAuthorityReq) ProtoMessage() {} -func (x *CallbackReq) ProtoReflect() protoreflect.Message { +func (x *RoleMenuAuthorityReq) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1852,40 +1612,36 @@ func (x *CallbackReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CallbackReq.ProtoReflect.Descriptor instead. -func (*CallbackReq) Descriptor() ([]byte, []int) { +// Deprecated: Use RoleMenuAuthorityReq.ProtoReflect.Descriptor instead. +func (*RoleMenuAuthorityReq) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{23} } -func (x *CallbackReq) GetState() string { +func (x *RoleMenuAuthorityReq) GetRoleId() uint64 { if x != nil { - return x.State + return x.RoleId } - return "" + return 0 } -func (x *CallbackReq) GetCode() string { +func (x *RoleMenuAuthorityReq) GetMenuId() []uint64 { if x != nil { - return x.Code + return x.MenuId } - return "" + return nil } -type TokenListReq struct { +type MenuInfoList struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Page uint64 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` - PageSize uint64 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` - Username string `protobuf:"bytes,3,opt,name=username,proto3" json:"username,omitempty"` - Nickname string `protobuf:"bytes,4,opt,name=nickname,proto3" json:"nickname,omitempty"` - Email string `protobuf:"bytes,5,opt,name=email,proto3" json:"email,omitempty"` - Uuid string `protobuf:"bytes,6,opt,name=uuid,proto3" json:"uuid,omitempty"` + Total uint64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` + Data []*MenuInfo `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` } -func (x *TokenListReq) Reset() { - *x = TokenListReq{} +func (x *MenuInfoList) Reset() { + *x = MenuInfoList{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1893,13 +1649,13 @@ func (x *TokenListReq) Reset() { } } -func (x *TokenListReq) String() string { +func (x *MenuInfoList) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TokenListReq) ProtoMessage() {} +func (*MenuInfoList) ProtoMessage() {} -func (x *TokenListReq) ProtoReflect() protoreflect.Message { +func (x *MenuInfoList) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1911,84 +1667,51 @@ func (x *TokenListReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TokenListReq.ProtoReflect.Descriptor instead. -func (*TokenListReq) Descriptor() ([]byte, []int) { +// Deprecated: Use MenuInfoList.ProtoReflect.Descriptor instead. +func (*MenuInfoList) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{24} } -func (x *TokenListReq) GetPage() uint64 { +func (x *MenuInfoList) GetTotal() uint64 { if x != nil { - return x.Page + return x.Total } return 0 } -func (x *TokenListReq) GetPageSize() uint64 { +func (x *MenuInfoList) GetData() []*MenuInfo { if x != nil { - return x.PageSize + return x.Data } - return 0 + return nil } -func (x *TokenListReq) GetUsername() string { - if x != nil { - return x.Username - } - return "" -} +type MenuRoleInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *TokenListReq) GetNickname() string { - if x != nil { - return x.Nickname - } - return "" + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + MenuId uint64 `protobuf:"varint,2,opt,name=menu_id,json=menuId,proto3" json:"menu_id,omitempty"` + RoleId uint64 `protobuf:"varint,3,opt,name=role_id,json=roleId,proto3" json:"role_id,omitempty"` } -func (x *TokenListReq) GetEmail() string { - if x != nil { - return x.Email +func (x *MenuRoleInfo) Reset() { + *x = MenuRoleInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_core_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *TokenListReq) GetUuid() string { - if x != nil { - return x.Uuid - } - return "" +func (x *MenuRoleInfo) String() string { + return protoimpl.X.MessageStringOf(x) } -// api message -type ApiInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - CreatedAt int64 `protobuf:"varint,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt int64 `protobuf:"varint,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - Path string `protobuf:"bytes,4,opt,name=path,proto3" json:"path,omitempty"` - Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"` - Group string `protobuf:"bytes,6,opt,name=group,proto3" json:"group,omitempty"` - Method string `protobuf:"bytes,7,opt,name=method,proto3" json:"method,omitempty"` -} - -func (x *ApiInfo) Reset() { - *x = ApiInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ApiInfo) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ApiInfo) ProtoMessage() {} +func (*MenuRoleInfo) ProtoMessage() {} -func (x *ApiInfo) ProtoReflect() protoreflect.Message { +func (x *MenuRoleInfo) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2000,71 +1723,46 @@ func (x *ApiInfo) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ApiInfo.ProtoReflect.Descriptor instead. -func (*ApiInfo) Descriptor() ([]byte, []int) { +// Deprecated: Use MenuRoleInfo.ProtoReflect.Descriptor instead. +func (*MenuRoleInfo) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{25} } -func (x *ApiInfo) GetId() uint64 { +func (x *MenuRoleInfo) GetId() uint64 { if x != nil { return x.Id } return 0 } -func (x *ApiInfo) GetCreatedAt() int64 { +func (x *MenuRoleInfo) GetMenuId() uint64 { if x != nil { - return x.CreatedAt + return x.MenuId } return 0 } -func (x *ApiInfo) GetUpdatedAt() int64 { +func (x *MenuRoleInfo) GetRoleId() uint64 { if x != nil { - return x.UpdatedAt + return x.RoleId } return 0 } -func (x *ApiInfo) GetPath() string { - if x != nil { - return x.Path - } - return "" -} - -func (x *ApiInfo) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *ApiInfo) GetGroup() string { - if x != nil { - return x.Group - } - return "" -} - -func (x *ApiInfo) GetMethod() string { - if x != nil { - return x.Method - } - return "" -} - -type ApiListResp struct { +type CreateOrUpdateMenuParamReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total uint64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` - Data []*ApiInfo `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + MenuId uint64 `protobuf:"varint,2,opt,name=menu_id,json=menuId,proto3" json:"menu_id,omitempty"` + Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` + Key string `protobuf:"bytes,4,opt,name=key,proto3" json:"key,omitempty"` + Value string `protobuf:"bytes,5,opt,name=value,proto3" json:"value,omitempty"` } -func (x *ApiListResp) Reset() { - *x = ApiListResp{} +func (x *CreateOrUpdateMenuParamReq) Reset() { + *x = CreateOrUpdateMenuParamReq{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2072,13 +1770,13 @@ func (x *ApiListResp) Reset() { } } -func (x *ApiListResp) String() string { +func (x *CreateOrUpdateMenuParamReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ApiListResp) ProtoMessage() {} +func (*CreateOrUpdateMenuParamReq) ProtoMessage() {} -func (x *ApiListResp) ProtoReflect() protoreflect.Message { +func (x *CreateOrUpdateMenuParamReq) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2090,38 +1788,61 @@ func (x *ApiListResp) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ApiListResp.ProtoReflect.Descriptor instead. -func (*ApiListResp) Descriptor() ([]byte, []int) { +// Deprecated: Use CreateOrUpdateMenuParamReq.ProtoReflect.Descriptor instead. +func (*CreateOrUpdateMenuParamReq) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{26} } -func (x *ApiListResp) GetTotal() uint64 { +func (x *CreateOrUpdateMenuParamReq) GetId() uint64 { if x != nil { - return x.Total + return x.Id } return 0 } -func (x *ApiListResp) GetData() []*ApiInfo { +func (x *CreateOrUpdateMenuParamReq) GetMenuId() uint64 { if x != nil { - return x.Data + return x.MenuId } - return nil + return 0 } -type DictionaryListReq struct { +func (x *CreateOrUpdateMenuParamReq) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *CreateOrUpdateMenuParamReq) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *CreateOrUpdateMenuParamReq) GetValue() string { + if x != nil { + return x.Value + } + return "" +} + +type MenuParamResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Page uint64 `protobuf:"varint,3,opt,name=page,proto3" json:"page,omitempty"` - PageSize uint64 `protobuf:"varint,4,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + Key string `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"` + Value string `protobuf:"bytes,4,opt,name=value,proto3" json:"value,omitempty"` + CreatedAt int64 `protobuf:"varint,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt int64 `protobuf:"varint,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` } -func (x *DictionaryListReq) Reset() { - *x = DictionaryListReq{} +func (x *MenuParamResp) Reset() { + *x = MenuParamResp{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2129,13 +1850,13 @@ func (x *DictionaryListReq) Reset() { } } -func (x *DictionaryListReq) String() string { +func (x *MenuParamResp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DictionaryListReq) ProtoMessage() {} +func (*MenuParamResp) ProtoMessage() {} -func (x *DictionaryListReq) ProtoReflect() protoreflect.Message { +func (x *MenuParamResp) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2147,51 +1868,66 @@ func (x *DictionaryListReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DictionaryListReq.ProtoReflect.Descriptor instead. -func (*DictionaryListReq) Descriptor() ([]byte, []int) { +// Deprecated: Use MenuParamResp.ProtoReflect.Descriptor instead. +func (*MenuParamResp) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{27} } -func (x *DictionaryListReq) GetTitle() string { +func (x *MenuParamResp) GetId() uint64 { if x != nil { - return x.Title + return x.Id + } + return 0 +} + +func (x *MenuParamResp) GetType() string { + if x != nil { + return x.Type } return "" } -func (x *DictionaryListReq) GetName() string { +func (x *MenuParamResp) GetKey() string { if x != nil { - return x.Name + return x.Key } return "" } -func (x *DictionaryListReq) GetPage() uint64 { +func (x *MenuParamResp) GetValue() string { if x != nil { - return x.Page + return x.Value + } + return "" +} + +func (x *MenuParamResp) GetCreatedAt() int64 { + if x != nil { + return x.CreatedAt } return 0 } -func (x *DictionaryListReq) GetPageSize() uint64 { +func (x *MenuParamResp) GetUpdatedAt() int64 { if x != nil { - return x.PageSize + return x.UpdatedAt } return 0 } -// authorization message -type RoleMenuAuthorityReq struct { +type LoginResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - RoleId uint64 `protobuf:"varint,1,opt,name=role_id,json=roleId,proto3" json:"role_id,omitempty"` - MenuId []uint64 `protobuf:"varint,2,rep,packed,name=menu_id,json=menuId,proto3" json:"menu_id,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + RoleName string `protobuf:"bytes,2,opt,name=role_name,json=roleName,proto3" json:"role_name,omitempty"` + RoleValue string `protobuf:"bytes,3,opt,name=role_value,json=roleValue,proto3" json:"role_value,omitempty"` + RoleId uint64 `protobuf:"varint,4,opt,name=role_id,json=roleId,proto3" json:"role_id,omitempty"` } -func (x *RoleMenuAuthorityReq) Reset() { - *x = RoleMenuAuthorityReq{} +func (x *LoginResp) Reset() { + *x = LoginResp{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2199,13 +1935,13 @@ func (x *RoleMenuAuthorityReq) Reset() { } } -func (x *RoleMenuAuthorityReq) String() string { +func (x *LoginResp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RoleMenuAuthorityReq) ProtoMessage() {} +func (*LoginResp) ProtoMessage() {} -func (x *RoleMenuAuthorityReq) ProtoReflect() protoreflect.Message { +func (x *LoginResp) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2217,35 +1953,50 @@ func (x *RoleMenuAuthorityReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RoleMenuAuthorityReq.ProtoReflect.Descriptor instead. -func (*RoleMenuAuthorityReq) Descriptor() ([]byte, []int) { +// Deprecated: Use LoginResp.ProtoReflect.Descriptor instead. +func (*LoginResp) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{28} } -func (x *RoleMenuAuthorityReq) GetRoleId() uint64 { +func (x *LoginResp) GetId() string { if x != nil { - return x.RoleId + return x.Id } - return 0 + return "" } -func (x *RoleMenuAuthorityReq) GetMenuId() []uint64 { +func (x *LoginResp) GetRoleName() string { if x != nil { - return x.MenuId + return x.RoleName } - return nil + return "" } -type UUIDReq struct { +func (x *LoginResp) GetRoleValue() string { + if x != nil { + return x.RoleValue + } + return "" +} + +func (x *LoginResp) GetRoleId() uint64 { + if x != nil { + return x.RoleId + } + return 0 +} + +type DepartmentListResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Total uint64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` + Data []*DepartmentInfo `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` } -func (x *UUIDReq) Reset() { - *x = UUIDReq{} +func (x *DepartmentListResp) Reset() { + *x = DepartmentListResp{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2253,13 +2004,13 @@ func (x *UUIDReq) Reset() { } } -func (x *UUIDReq) String() string { +func (x *DepartmentListResp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UUIDReq) ProtoMessage() {} +func (*DepartmentListResp) ProtoMessage() {} -func (x *UUIDReq) ProtoReflect() protoreflect.Message { +func (x *DepartmentListResp) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2271,29 +2022,46 @@ func (x *UUIDReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UUIDReq.ProtoReflect.Descriptor instead. -func (*UUIDReq) Descriptor() ([]byte, []int) { +// Deprecated: Use DepartmentListResp.ProtoReflect.Descriptor instead. +func (*DepartmentListResp) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{29} } -func (x *UUIDReq) GetId() string { +func (x *DepartmentListResp) GetTotal() uint64 { if x != nil { - return x.Id + return x.Total } - return "" + return 0 } -type RoleListResp struct { +func (x *DepartmentListResp) GetData() []*DepartmentInfo { + if x != nil { + return x.Data + } + return nil +} + +// menu messages +type CreateOrUpdateMenuReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total uint64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` - Data []*RoleInfo `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` + Level uint32 `protobuf:"varint,1,opt,name=level,proto3" json:"level,omitempty"` + ParentId uint64 `protobuf:"varint,2,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"` + Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` + Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` + Redirect string `protobuf:"bytes,5,opt,name=redirect,proto3" json:"redirect,omitempty"` + Component string `protobuf:"bytes,6,opt,name=component,proto3" json:"component,omitempty"` + Sort uint32 `protobuf:"varint,7,opt,name=sort,proto3" json:"sort,omitempty"` + Disabled bool `protobuf:"varint,8,opt,name=disabled,proto3" json:"disabled,omitempty"` + Meta *Meta `protobuf:"bytes,9,opt,name=meta,proto3" json:"meta,omitempty"` + Id uint64 `protobuf:"varint,10,opt,name=id,proto3" json:"id,omitempty"` + MenuType uint32 `protobuf:"varint,11,opt,name=menu_type,json=menuType,proto3" json:"menu_type,omitempty"` } -func (x *RoleListResp) Reset() { - *x = RoleListResp{} +func (x *CreateOrUpdateMenuReq) Reset() { + *x = CreateOrUpdateMenuReq{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2301,13 +2069,13 @@ func (x *RoleListResp) Reset() { } } -func (x *RoleListResp) String() string { +func (x *CreateOrUpdateMenuReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RoleListResp) ProtoMessage() {} +func (*CreateOrUpdateMenuReq) ProtoMessage() {} -func (x *RoleListResp) ProtoReflect() protoreflect.Message { +func (x *CreateOrUpdateMenuReq) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2319,157 +2087,120 @@ func (x *RoleListResp) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RoleListResp.ProtoReflect.Descriptor instead. -func (*RoleListResp) Descriptor() ([]byte, []int) { +// Deprecated: Use CreateOrUpdateMenuReq.ProtoReflect.Descriptor instead. +func (*CreateOrUpdateMenuReq) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{30} } -func (x *RoleListResp) GetTotal() uint64 { +func (x *CreateOrUpdateMenuReq) GetLevel() uint32 { if x != nil { - return x.Total + return x.Level } return 0 } -func (x *RoleListResp) GetData() []*RoleInfo { +func (x *CreateOrUpdateMenuReq) GetParentId() uint64 { if x != nil { - return x.Data - } - return nil -} - -// role messages -type RoleInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Value string `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` - DefaultRouter string `protobuf:"bytes,4,opt,name=default_router,json=defaultRouter,proto3" json:"default_router,omitempty"` - Status uint32 `protobuf:"varint,5,opt,name=status,proto3" json:"status,omitempty"` - Remark string `protobuf:"bytes,6,opt,name=remark,proto3" json:"remark,omitempty"` - Sort uint32 `protobuf:"varint,7,opt,name=sort,proto3" json:"sort,omitempty"` - CreatedAt int64 `protobuf:"varint,8,opt,name=createdAt,proto3" json:"createdAt,omitempty"` -} - -func (x *RoleInfo) Reset() { - *x = RoleInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[31] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RoleInfo) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RoleInfo) ProtoMessage() {} - -func (x *RoleInfo) ProtoReflect() protoreflect.Message { - mi := &file_rpc_core_proto_msgTypes[31] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms + return x.ParentId } - return mi.MessageOf(x) -} - -// Deprecated: Use RoleInfo.ProtoReflect.Descriptor instead. -func (*RoleInfo) Descriptor() ([]byte, []int) { - return file_rpc_core_proto_rawDescGZIP(), []int{31} + return 0 } -func (x *RoleInfo) GetId() uint64 { +func (x *CreateOrUpdateMenuReq) GetPath() string { if x != nil { - return x.Id + return x.Path } - return 0 + return "" } -func (x *RoleInfo) GetName() string { +func (x *CreateOrUpdateMenuReq) GetName() string { if x != nil { return x.Name } return "" } -func (x *RoleInfo) GetValue() string { +func (x *CreateOrUpdateMenuReq) GetRedirect() string { if x != nil { - return x.Value + return x.Redirect } return "" } -func (x *RoleInfo) GetDefaultRouter() string { +func (x *CreateOrUpdateMenuReq) GetComponent() string { if x != nil { - return x.DefaultRouter + return x.Component } return "" } -func (x *RoleInfo) GetStatus() uint32 { +func (x *CreateOrUpdateMenuReq) GetSort() uint32 { if x != nil { - return x.Status + return x.Sort } return 0 } -func (x *RoleInfo) GetRemark() string { +func (x *CreateOrUpdateMenuReq) GetDisabled() bool { if x != nil { - return x.Remark + return x.Disabled } - return "" + return false } -func (x *RoleInfo) GetSort() uint32 { +func (x *CreateOrUpdateMenuReq) GetMeta() *Meta { if x != nil { - return x.Sort + return x.Meta + } + return nil +} + +func (x *CreateOrUpdateMenuReq) GetId() uint64 { + if x != nil { + return x.Id } return 0 } -func (x *RoleInfo) GetCreatedAt() int64 { +func (x *CreateOrUpdateMenuReq) GetMenuType() uint32 { if x != nil { - return x.CreatedAt + return x.MenuType } return 0 } -type LoginResp struct { +// api message +type ApiInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - RoleName string `protobuf:"bytes,2,opt,name=role_name,json=roleName,proto3" json:"role_name,omitempty"` - RoleValue string `protobuf:"bytes,3,opt,name=role_value,json=roleValue,proto3" json:"role_value,omitempty"` - RoleId uint64 `protobuf:"varint,4,opt,name=role_id,json=roleId,proto3" json:"role_id,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + CreatedAt int64 `protobuf:"varint,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt int64 `protobuf:"varint,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Path string `protobuf:"bytes,4,opt,name=path,proto3" json:"path,omitempty"` + Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"` + Group string `protobuf:"bytes,6,opt,name=group,proto3" json:"group,omitempty"` + Method string `protobuf:"bytes,7,opt,name=method,proto3" json:"method,omitempty"` } -func (x *LoginResp) Reset() { - *x = LoginResp{} +func (x *ApiInfo) Reset() { + *x = ApiInfo{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[32] + mi := &file_rpc_core_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *LoginResp) String() string { +func (x *ApiInfo) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LoginResp) ProtoMessage() {} +func (*ApiInfo) ProtoMessage() {} -func (x *LoginResp) ProtoReflect() protoreflect.Message { - mi := &file_rpc_core_proto_msgTypes[32] +func (x *ApiInfo) ProtoReflect() protoreflect.Message { + mi := &file_rpc_core_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2480,65 +2211,96 @@ func (x *LoginResp) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LoginResp.ProtoReflect.Descriptor instead. -func (*LoginResp) Descriptor() ([]byte, []int) { - return file_rpc_core_proto_rawDescGZIP(), []int{32} +// Deprecated: Use ApiInfo.ProtoReflect.Descriptor instead. +func (*ApiInfo) Descriptor() ([]byte, []int) { + return file_rpc_core_proto_rawDescGZIP(), []int{31} } -func (x *LoginResp) GetId() string { +func (x *ApiInfo) GetId() uint64 { if x != nil { return x.Id } + return 0 +} + +func (x *ApiInfo) GetCreatedAt() int64 { + if x != nil { + return x.CreatedAt + } + return 0 +} + +func (x *ApiInfo) GetUpdatedAt() int64 { + if x != nil { + return x.UpdatedAt + } + return 0 +} + +func (x *ApiInfo) GetPath() string { + if x != nil { + return x.Path + } return "" } -func (x *LoginResp) GetRoleName() string { +func (x *ApiInfo) GetDescription() string { if x != nil { - return x.RoleName + return x.Description } return "" } -func (x *LoginResp) GetRoleValue() string { +func (x *ApiInfo) GetGroup() string { if x != nil { - return x.RoleValue + return x.Group } return "" } -func (x *LoginResp) GetRoleId() uint64 { +func (x *ApiInfo) GetMethod() string { if x != nil { - return x.RoleId + return x.Method } - return 0 + return "" } -// return the role's authorization menu's ids -type RoleMenuAuthorityResp struct { +type DepartmentInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - MenuId []uint64 `protobuf:"varint,1,rep,packed,name=menu_id,json=menuId,proto3" json:"menu_id,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + CreatedAt int64 `protobuf:"varint,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt int64 `protobuf:"varint,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Status uint32 `protobuf:"varint,4,opt,name=status,proto3" json:"status,omitempty"` + Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name,omitempty"` + Ancestors string `protobuf:"bytes,6,opt,name=ancestors,proto3" json:"ancestors,omitempty"` + Leader string `protobuf:"bytes,7,opt,name=leader,proto3" json:"leader,omitempty"` + Phone string `protobuf:"bytes,8,opt,name=phone,proto3" json:"phone,omitempty"` + Email string `protobuf:"bytes,9,opt,name=email,proto3" json:"email,omitempty"` + Sort uint32 `protobuf:"varint,10,opt,name=sort,proto3" json:"sort,omitempty"` + Remark string `protobuf:"bytes,11,opt,name=remark,proto3" json:"remark,omitempty"` + ParentId uint64 `protobuf:"varint,12,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"` } -func (x *RoleMenuAuthorityResp) Reset() { - *x = RoleMenuAuthorityResp{} +func (x *DepartmentInfo) Reset() { + *x = DepartmentInfo{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[33] + mi := &file_rpc_core_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *RoleMenuAuthorityResp) String() string { +func (x *DepartmentInfo) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RoleMenuAuthorityResp) ProtoMessage() {} +func (*DepartmentInfo) ProtoMessage() {} -func (x *RoleMenuAuthorityResp) ProtoReflect() protoreflect.Message { - mi := &file_rpc_core_proto_msgTypes[33] +func (x *DepartmentInfo) ProtoReflect() protoreflect.Message { + mi := &file_rpc_core_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2549,46 +2311,127 @@ func (x *RoleMenuAuthorityResp) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RoleMenuAuthorityResp.ProtoReflect.Descriptor instead. -func (*RoleMenuAuthorityResp) Descriptor() ([]byte, []int) { - return file_rpc_core_proto_rawDescGZIP(), []int{33} +// Deprecated: Use DepartmentInfo.ProtoReflect.Descriptor instead. +func (*DepartmentInfo) Descriptor() ([]byte, []int) { + return file_rpc_core_proto_rawDescGZIP(), []int{32} } -func (x *RoleMenuAuthorityResp) GetMenuId() []uint64 { +func (x *DepartmentInfo) GetId() uint64 { if x != nil { - return x.MenuId + return x.Id } - return nil + return 0 } -type DepartmentListReq struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Page uint64 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` - PageSize uint64 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` - Leader string `protobuf:"bytes,4,opt,name=leader,proto3" json:"leader,omitempty"` +func (x *DepartmentInfo) GetCreatedAt() int64 { + if x != nil { + return x.CreatedAt + } + return 0 } -func (x *DepartmentListReq) Reset() { - *x = DepartmentListReq{} +func (x *DepartmentInfo) GetUpdatedAt() int64 { + if x != nil { + return x.UpdatedAt + } + return 0 +} + +func (x *DepartmentInfo) GetStatus() uint32 { + if x != nil { + return x.Status + } + return 0 +} + +func (x *DepartmentInfo) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *DepartmentInfo) GetAncestors() string { + if x != nil { + return x.Ancestors + } + return "" +} + +func (x *DepartmentInfo) GetLeader() string { + if x != nil { + return x.Leader + } + return "" +} + +func (x *DepartmentInfo) GetPhone() string { + if x != nil { + return x.Phone + } + return "" +} + +func (x *DepartmentInfo) GetEmail() string { + if x != nil { + return x.Email + } + return "" +} + +func (x *DepartmentInfo) GetSort() uint32 { + if x != nil { + return x.Sort + } + return 0 +} + +func (x *DepartmentInfo) GetRemark() string { + if x != nil { + return x.Remark + } + return "" +} + +func (x *DepartmentInfo) GetParentId() uint64 { + if x != nil { + return x.ParentId + } + return 0 +} + +type PostInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + CreatedAt int64 `protobuf:"varint,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt int64 `protobuf:"varint,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Status uint32 `protobuf:"varint,4,opt,name=status,proto3" json:"status,omitempty"` + Sort uint32 `protobuf:"varint,5,opt,name=sort,proto3" json:"sort,omitempty"` + Name string `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"` + Code string `protobuf:"bytes,7,opt,name=code,proto3" json:"code,omitempty"` + Remark string `protobuf:"bytes,8,opt,name=remark,proto3" json:"remark,omitempty"` +} + +func (x *PostInfo) Reset() { + *x = PostInfo{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[34] + mi := &file_rpc_core_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DepartmentListReq) String() string { +func (x *PostInfo) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DepartmentListReq) ProtoMessage() {} +func (*PostInfo) ProtoMessage() {} -func (x *DepartmentListReq) ProtoReflect() protoreflect.Message { - mi := &file_rpc_core_proto_msgTypes[34] +func (x *PostInfo) ProtoReflect() protoreflect.Message { + mi := &file_rpc_core_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2599,65 +2442,100 @@ func (x *DepartmentListReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DepartmentListReq.ProtoReflect.Descriptor instead. -func (*DepartmentListReq) Descriptor() ([]byte, []int) { - return file_rpc_core_proto_rawDescGZIP(), []int{34} +// Deprecated: Use PostInfo.ProtoReflect.Descriptor instead. +func (*PostInfo) Descriptor() ([]byte, []int) { + return file_rpc_core_proto_rawDescGZIP(), []int{33} } -func (x *DepartmentListReq) GetPage() uint64 { +func (x *PostInfo) GetId() uint64 { if x != nil { - return x.Page + return x.Id } return 0 } -func (x *DepartmentListReq) GetPageSize() uint64 { +func (x *PostInfo) GetCreatedAt() int64 { if x != nil { - return x.PageSize + return x.CreatedAt } return 0 } -func (x *DepartmentListReq) GetName() string { +func (x *PostInfo) GetUpdatedAt() int64 { + if x != nil { + return x.UpdatedAt + } + return 0 +} + +func (x *PostInfo) GetStatus() uint32 { + if x != nil { + return x.Status + } + return 0 +} + +func (x *PostInfo) GetSort() uint32 { + if x != nil { + return x.Sort + } + return 0 +} + +func (x *PostInfo) GetName() string { if x != nil { return x.Name } return "" } -func (x *DepartmentListReq) GetLeader() string { +func (x *PostInfo) GetCode() string { if x != nil { - return x.Leader + return x.Code } return "" } -type DictionaryList struct { +func (x *PostInfo) GetRemark() string { + if x != nil { + return x.Remark + } + return "" +} + +// role messages +type RoleInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total uint64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` - Data []*DictionaryInfo `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Value string `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` + DefaultRouter string `protobuf:"bytes,4,opt,name=default_router,json=defaultRouter,proto3" json:"default_router,omitempty"` + Status uint32 `protobuf:"varint,5,opt,name=status,proto3" json:"status,omitempty"` + Remark string `protobuf:"bytes,6,opt,name=remark,proto3" json:"remark,omitempty"` + Sort uint32 `protobuf:"varint,7,opt,name=sort,proto3" json:"sort,omitempty"` + CreatedAt int64 `protobuf:"varint,8,opt,name=createdAt,proto3" json:"createdAt,omitempty"` } -func (x *DictionaryList) Reset() { - *x = DictionaryList{} +func (x *RoleInfo) Reset() { + *x = RoleInfo{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[35] + mi := &file_rpc_core_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DictionaryList) String() string { +func (x *RoleInfo) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DictionaryList) ProtoMessage() {} +func (*RoleInfo) ProtoMessage() {} -func (x *DictionaryList) ProtoReflect() protoreflect.Message { - mi := &file_rpc_core_proto_msgTypes[35] +func (x *RoleInfo) ProtoReflect() protoreflect.Message { + mi := &file_rpc_core_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2668,49 +2546,92 @@ func (x *DictionaryList) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DictionaryList.ProtoReflect.Descriptor instead. -func (*DictionaryList) Descriptor() ([]byte, []int) { - return file_rpc_core_proto_rawDescGZIP(), []int{35} +// Deprecated: Use RoleInfo.ProtoReflect.Descriptor instead. +func (*RoleInfo) Descriptor() ([]byte, []int) { + return file_rpc_core_proto_rawDescGZIP(), []int{34} } -func (x *DictionaryList) GetTotal() uint64 { +func (x *RoleInfo) GetId() uint64 { if x != nil { - return x.Total + return x.Id } return 0 } -func (x *DictionaryList) GetData() []*DictionaryInfo { +func (x *RoleInfo) GetName() string { if x != nil { - return x.Data + return x.Name } - return nil + return "" } -// base message -type Empty struct { +func (x *RoleInfo) GetValue() string { + if x != nil { + return x.Value + } + return "" +} + +func (x *RoleInfo) GetDefaultRouter() string { + if x != nil { + return x.DefaultRouter + } + return "" +} + +func (x *RoleInfo) GetStatus() uint32 { + if x != nil { + return x.Status + } + return 0 +} + +func (x *RoleInfo) GetRemark() string { + if x != nil { + return x.Remark + } + return "" +} + +func (x *RoleInfo) GetSort() uint32 { + if x != nil { + return x.Sort + } + return 0 +} + +func (x *RoleInfo) GetCreatedAt() int64 { + if x != nil { + return x.CreatedAt + } + return 0 +} + +type IDsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + Ids []uint64 `protobuf:"varint,1,rep,packed,name=ids,proto3" json:"ids,omitempty"` } -func (x *Empty) Reset() { - *x = Empty{} +func (x *IDsReq) Reset() { + *x = IDsReq{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[36] + mi := &file_rpc_core_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Empty) String() string { +func (x *IDsReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Empty) ProtoMessage() {} +func (*IDsReq) ProtoMessage() {} -func (x *Empty) ProtoReflect() protoreflect.Message { - mi := &file_rpc_core_proto_msgTypes[36] +func (x *IDsReq) ProtoReflect() protoreflect.Message { + mi := &file_rpc_core_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2721,12 +2642,19 @@ func (x *Empty) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Empty.ProtoReflect.Descriptor instead. -func (*Empty) Descriptor() ([]byte, []int) { - return file_rpc_core_proto_rawDescGZIP(), []int{36} +// Deprecated: Use IDsReq.ProtoReflect.Descriptor instead. +func (*IDsReq) Descriptor() ([]byte, []int) { + return file_rpc_core_proto_rawDescGZIP(), []int{35} } -type DepartmentInfo struct { +func (x *IDsReq) GetIds() []uint64 { + if x != nil { + return x.Ids + } + return nil +} + +type MenuInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -2734,34 +2662,35 @@ type DepartmentInfo struct { Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` CreatedAt int64 `protobuf:"varint,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` UpdatedAt int64 `protobuf:"varint,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - Status uint32 `protobuf:"varint,4,opt,name=status,proto3" json:"status,omitempty"` - Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name,omitempty"` - Ancestors string `protobuf:"bytes,6,opt,name=ancestors,proto3" json:"ancestors,omitempty"` - Leader string `protobuf:"bytes,7,opt,name=leader,proto3" json:"leader,omitempty"` - Phone string `protobuf:"bytes,8,opt,name=phone,proto3" json:"phone,omitempty"` - Email string `protobuf:"bytes,9,opt,name=email,proto3" json:"email,omitempty"` + Level uint32 `protobuf:"varint,4,opt,name=level,proto3" json:"level,omitempty"` + ParentId uint64 `protobuf:"varint,5,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"` + Path string `protobuf:"bytes,6,opt,name=path,proto3" json:"path,omitempty"` + Name string `protobuf:"bytes,7,opt,name=name,proto3" json:"name,omitempty"` + Redirect string `protobuf:"bytes,8,opt,name=redirect,proto3" json:"redirect,omitempty"` + Component string `protobuf:"bytes,9,opt,name=component,proto3" json:"component,omitempty"` Sort uint32 `protobuf:"varint,10,opt,name=sort,proto3" json:"sort,omitempty"` - Remark string `protobuf:"bytes,11,opt,name=remark,proto3" json:"remark,omitempty"` - ParentId uint64 `protobuf:"varint,12,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"` + Disabled bool `protobuf:"varint,11,opt,name=disabled,proto3" json:"disabled,omitempty"` + Meta *Meta `protobuf:"bytes,12,opt,name=meta,proto3" json:"meta,omitempty"` + MenuType uint32 `protobuf:"varint,13,opt,name=menu_type,json=menuType,proto3" json:"menu_type,omitempty"` } -func (x *DepartmentInfo) Reset() { - *x = DepartmentInfo{} +func (x *MenuInfo) Reset() { + *x = MenuInfo{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[37] + mi := &file_rpc_core_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DepartmentInfo) String() string { +func (x *MenuInfo) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DepartmentInfo) ProtoMessage() {} +func (*MenuInfo) ProtoMessage() {} -func (x *DepartmentInfo) ProtoReflect() protoreflect.Message { - mi := &file_rpc_core_proto_msgTypes[37] +func (x *MenuInfo) ProtoReflect() protoreflect.Message { + mi := &file_rpc_core_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2772,112 +2701,280 @@ func (x *DepartmentInfo) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DepartmentInfo.ProtoReflect.Descriptor instead. -func (*DepartmentInfo) Descriptor() ([]byte, []int) { - return file_rpc_core_proto_rawDescGZIP(), []int{37} +// Deprecated: Use MenuInfo.ProtoReflect.Descriptor instead. +func (*MenuInfo) Descriptor() ([]byte, []int) { + return file_rpc_core_proto_rawDescGZIP(), []int{36} } -func (x *DepartmentInfo) GetId() uint64 { +func (x *MenuInfo) GetId() uint64 { if x != nil { return x.Id } return 0 } -func (x *DepartmentInfo) GetCreatedAt() int64 { +func (x *MenuInfo) GetCreatedAt() int64 { if x != nil { return x.CreatedAt } return 0 } -func (x *DepartmentInfo) GetUpdatedAt() int64 { +func (x *MenuInfo) GetUpdatedAt() int64 { if x != nil { return x.UpdatedAt } return 0 } -func (x *DepartmentInfo) GetStatus() uint32 { +func (x *MenuInfo) GetLevel() uint32 { if x != nil { - return x.Status + return x.Level } return 0 } -func (x *DepartmentInfo) GetName() string { +func (x *MenuInfo) GetParentId() uint64 { + if x != nil { + return x.ParentId + } + return 0 +} + +func (x *MenuInfo) GetPath() string { + if x != nil { + return x.Path + } + return "" +} + +func (x *MenuInfo) GetName() string { if x != nil { return x.Name } return "" } -func (x *DepartmentInfo) GetAncestors() string { +func (x *MenuInfo) GetRedirect() string { if x != nil { - return x.Ancestors + return x.Redirect } return "" } -func (x *DepartmentInfo) GetLeader() string { +func (x *MenuInfo) GetComponent() string { if x != nil { - return x.Leader + return x.Component } return "" } -func (x *DepartmentInfo) GetPhone() string { +func (x *MenuInfo) GetSort() uint32 { if x != nil { - return x.Phone + return x.Sort + } + return 0 +} + +func (x *MenuInfo) GetDisabled() bool { + if x != nil { + return x.Disabled + } + return false +} + +func (x *MenuInfo) GetMeta() *Meta { + if x != nil { + return x.Meta + } + return nil +} + +func (x *MenuInfo) GetMenuType() uint32 { + if x != nil { + return x.MenuType + } + return 0 +} + +type UserInfoResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Avatar string `protobuf:"bytes,2,opt,name=avatar,proto3" json:"avatar,omitempty"` + RoleId uint64 `protobuf:"varint,3,opt,name=role_id,json=roleId,proto3" json:"role_id,omitempty"` + Mobile string `protobuf:"bytes,4,opt,name=mobile,proto3" json:"mobile,omitempty"` + Email string `protobuf:"bytes,5,opt,name=email,proto3" json:"email,omitempty"` + Status uint32 `protobuf:"varint,6,opt,name=status,proto3" json:"status,omitempty"` + Username string `protobuf:"bytes,7,opt,name=username,proto3" json:"username,omitempty"` + Nickname string `protobuf:"bytes,8,opt,name=nickname,proto3" json:"nickname,omitempty"` + RoleName string `protobuf:"bytes,9,opt,name=roleName,proto3" json:"roleName,omitempty"` + CreatedAt int64 `protobuf:"varint,10,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt int64 `protobuf:"varint,11,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + RoleValue string `protobuf:"bytes,12,opt,name=roleValue,proto3" json:"roleValue,omitempty"` + HomePath string `protobuf:"bytes,13,opt,name=home_path,json=homePath,proto3" json:"home_path,omitempty"` + Description string `protobuf:"bytes,14,opt,name=description,proto3" json:"description,omitempty"` + DepartmentId uint64 `protobuf:"varint,15,opt,name=department_id,json=departmentId,proto3" json:"department_id,omitempty"` + PostId uint64 `protobuf:"varint,16,opt,name=post_id,json=postId,proto3" json:"post_id,omitempty"` +} + +func (x *UserInfoResp) Reset() { + *x = UserInfoResp{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_core_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UserInfoResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UserInfoResp) ProtoMessage() {} + +func (x *UserInfoResp) ProtoReflect() protoreflect.Message { + mi := &file_rpc_core_proto_msgTypes[37] + 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 UserInfoResp.ProtoReflect.Descriptor instead. +func (*UserInfoResp) Descriptor() ([]byte, []int) { + return file_rpc_core_proto_rawDescGZIP(), []int{37} +} + +func (x *UserInfoResp) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *UserInfoResp) GetAvatar() string { + if x != nil { + return x.Avatar + } + return "" +} + +func (x *UserInfoResp) GetRoleId() uint64 { + if x != nil { + return x.RoleId + } + return 0 +} + +func (x *UserInfoResp) GetMobile() string { + if x != nil { + return x.Mobile + } + return "" +} + +func (x *UserInfoResp) GetEmail() string { + if x != nil { + return x.Email + } + return "" +} + +func (x *UserInfoResp) GetStatus() uint32 { + if x != nil { + return x.Status + } + return 0 +} + +func (x *UserInfoResp) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +func (x *UserInfoResp) GetNickname() string { + if x != nil { + return x.Nickname + } + return "" +} + +func (x *UserInfoResp) GetRoleName() string { + if x != nil { + return x.RoleName + } + return "" +} + +func (x *UserInfoResp) GetCreatedAt() int64 { + if x != nil { + return x.CreatedAt + } + return 0 +} + +func (x *UserInfoResp) GetUpdatedAt() int64 { + if x != nil { + return x.UpdatedAt + } + return 0 +} + +func (x *UserInfoResp) GetRoleValue() string { + if x != nil { + return x.RoleValue } return "" } -func (x *DepartmentInfo) GetEmail() string { +func (x *UserInfoResp) GetHomePath() string { if x != nil { - return x.Email + return x.HomePath } return "" } -func (x *DepartmentInfo) GetSort() uint32 { +func (x *UserInfoResp) GetDescription() string { if x != nil { - return x.Sort + return x.Description } - return 0 + return "" } -func (x *DepartmentInfo) GetRemark() string { +func (x *UserInfoResp) GetDepartmentId() uint64 { if x != nil { - return x.Remark + return x.DepartmentId } - return "" + return 0 } -func (x *DepartmentInfo) GetParentId() uint64 { +func (x *UserInfoResp) GetPostId() uint64 { if x != nil { - return x.ParentId + return x.PostId } return 0 } -type DictionaryDetail struct { +type StatusCodeReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` - Key string `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"` - Value string `protobuf:"bytes,4,opt,name=value,proto3" json:"value,omitempty"` - Status uint32 `protobuf:"varint,5,opt,name=status,proto3" json:"status,omitempty"` - CreatedAt int64 `protobuf:"varint,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt int64 `protobuf:"varint,7,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - DictionaryId uint64 `protobuf:"varint,8,opt,name=dictionary_id,json=dictionaryId,proto3" json:"dictionary_id,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Status uint32 `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"` } -func (x *DictionaryDetail) Reset() { - *x = DictionaryDetail{} +func (x *StatusCodeReq) Reset() { + *x = StatusCodeReq{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2885,13 +2982,13 @@ func (x *DictionaryDetail) Reset() { } } -func (x *DictionaryDetail) String() string { +func (x *StatusCodeReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DictionaryDetail) ProtoMessage() {} +func (*StatusCodeReq) ProtoMessage() {} -func (x *DictionaryDetail) ProtoReflect() protoreflect.Message { +func (x *StatusCodeReq) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2903,79 +3000,38 @@ func (x *DictionaryDetail) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DictionaryDetail.ProtoReflect.Descriptor instead. -func (*DictionaryDetail) Descriptor() ([]byte, []int) { +// Deprecated: Use StatusCodeReq.ProtoReflect.Descriptor instead. +func (*StatusCodeReq) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{38} } -func (x *DictionaryDetail) GetId() uint64 { +func (x *StatusCodeReq) GetId() uint64 { if x != nil { return x.Id } return 0 } -func (x *DictionaryDetail) GetTitle() string { - if x != nil { - return x.Title - } - return "" -} - -func (x *DictionaryDetail) GetKey() string { - if x != nil { - return x.Key - } - return "" -} - -func (x *DictionaryDetail) GetValue() string { - if x != nil { - return x.Value - } - return "" -} - -func (x *DictionaryDetail) GetStatus() uint32 { +func (x *StatusCodeReq) GetStatus() uint32 { if x != nil { return x.Status } return 0 } -func (x *DictionaryDetail) GetCreatedAt() int64 { - if x != nil { - return x.CreatedAt - } - return 0 -} - -func (x *DictionaryDetail) GetUpdatedAt() int64 { - if x != nil { - return x.UpdatedAt - } - return 0 -} - -func (x *DictionaryDetail) GetDictionaryId() uint64 { - if x != nil { - return x.DictionaryId - } - return 0 -} - -type ChangePasswordReq struct { +type DictionaryListReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - OldPassword string `protobuf:"bytes,2,opt,name=old_password,json=oldPassword,proto3" json:"old_password,omitempty"` - NewPassword string `protobuf:"bytes,3,opt,name=new_password,json=newPassword,proto3" json:"new_password,omitempty"` + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Page uint64 `protobuf:"varint,3,opt,name=page,proto3" json:"page,omitempty"` + PageSize uint64 `protobuf:"varint,4,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` } -func (x *ChangePasswordReq) Reset() { - *x = ChangePasswordReq{} +func (x *DictionaryListReq) Reset() { + *x = DictionaryListReq{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2983,13 +3039,13 @@ func (x *ChangePasswordReq) Reset() { } } -func (x *ChangePasswordReq) String() string { +func (x *DictionaryListReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ChangePasswordReq) ProtoMessage() {} +func (*DictionaryListReq) ProtoMessage() {} -func (x *ChangePasswordReq) ProtoReflect() protoreflect.Message { +func (x *DictionaryListReq) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3001,42 +3057,50 @@ func (x *ChangePasswordReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ChangePasswordReq.ProtoReflect.Descriptor instead. -func (*ChangePasswordReq) Descriptor() ([]byte, []int) { +// Deprecated: Use DictionaryListReq.ProtoReflect.Descriptor instead. +func (*DictionaryListReq) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{39} } -func (x *ChangePasswordReq) GetId() string { +func (x *DictionaryListReq) GetTitle() string { if x != nil { - return x.Id + return x.Title } return "" } -func (x *ChangePasswordReq) GetOldPassword() string { +func (x *DictionaryListReq) GetName() string { if x != nil { - return x.OldPassword + return x.Name } return "" } -func (x *ChangePasswordReq) GetNewPassword() string { +func (x *DictionaryListReq) GetPage() uint64 { if x != nil { - return x.NewPassword + return x.Page } - return "" + return 0 } -type OauthRedirectResp struct { +func (x *DictionaryListReq) GetPageSize() uint64 { + if x != nil { + return x.PageSize + } + return 0 +} + +type MenuParamListResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` + Total uint64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` + Data []*MenuParamResp `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` } -func (x *OauthRedirectResp) Reset() { - *x = OauthRedirectResp{} +func (x *MenuParamListResp) Reset() { + *x = MenuParamListResp{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3044,13 +3108,13 @@ func (x *OauthRedirectResp) Reset() { } } -func (x *OauthRedirectResp) String() string { +func (x *MenuParamListResp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*OauthRedirectResp) ProtoMessage() {} +func (*MenuParamListResp) ProtoMessage() {} -func (x *OauthRedirectResp) ProtoReflect() protoreflect.Message { +func (x *MenuParamListResp) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3062,29 +3126,43 @@ func (x *OauthRedirectResp) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use OauthRedirectResp.ProtoReflect.Descriptor instead. -func (*OauthRedirectResp) Descriptor() ([]byte, []int) { +// Deprecated: Use MenuParamListResp.ProtoReflect.Descriptor instead. +func (*MenuParamListResp) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{40} } -func (x *OauthRedirectResp) GetUrl() string { +func (x *MenuParamListResp) GetTotal() uint64 { if x != nil { - return x.Url + return x.Total } - return "" + return 0 } -type ProviderListResp struct { +func (x *MenuParamListResp) GetData() []*MenuParamResp { + if x != nil { + return x.Data + } + return nil +} + +type GetUserListReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total uint64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` - Data []*ProviderInfo `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` + Page uint64 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` + PageSize uint64 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + Username string `protobuf:"bytes,3,opt,name=username,proto3" json:"username,omitempty"` + Nickname string `protobuf:"bytes,4,opt,name=nickname,proto3" json:"nickname,omitempty"` + Email string `protobuf:"bytes,5,opt,name=email,proto3" json:"email,omitempty"` + Mobile string `protobuf:"bytes,6,opt,name=mobile,proto3" json:"mobile,omitempty"` + RoleId uint64 `protobuf:"varint,7,opt,name=role_id,json=roleId,proto3" json:"role_id,omitempty"` + DepartmentId uint64 `protobuf:"varint,8,opt,name=department_id,json=departmentId,proto3" json:"department_id,omitempty"` + PostId uint64 `protobuf:"varint,9,opt,name=post_id,json=postId,proto3" json:"post_id,omitempty"` } -func (x *ProviderListResp) Reset() { - *x = ProviderListResp{} +func (x *GetUserListReq) Reset() { + *x = GetUserListReq{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3092,13 +3170,13 @@ func (x *ProviderListResp) Reset() { } } -func (x *ProviderListResp) String() string { +func (x *GetUserListReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ProviderListResp) ProtoMessage() {} +func (*GetUserListReq) ProtoMessage() {} -func (x *ProviderListResp) ProtoReflect() protoreflect.Message { +func (x *GetUserListReq) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3110,36 +3188,85 @@ func (x *ProviderListResp) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ProviderListResp.ProtoReflect.Descriptor instead. -func (*ProviderListResp) Descriptor() ([]byte, []int) { +// Deprecated: Use GetUserListReq.ProtoReflect.Descriptor instead. +func (*GetUserListReq) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{41} } -func (x *ProviderListResp) GetTotal() uint64 { +func (x *GetUserListReq) GetPage() uint64 { if x != nil { - return x.Total + return x.Page } return 0 } -func (x *ProviderListResp) GetData() []*ProviderInfo { +func (x *GetUserListReq) GetPageSize() uint64 { if x != nil { - return x.Data + return x.PageSize } - return nil + return 0 } -type StatusCodeReq struct { +func (x *GetUserListReq) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +func (x *GetUserListReq) GetNickname() string { + if x != nil { + return x.Nickname + } + return "" +} + +func (x *GetUserListReq) GetEmail() string { + if x != nil { + return x.Email + } + return "" +} + +func (x *GetUserListReq) GetMobile() string { + if x != nil { + return x.Mobile + } + return "" +} + +func (x *GetUserListReq) GetRoleId() uint64 { + if x != nil { + return x.RoleId + } + return 0 +} + +func (x *GetUserListReq) GetDepartmentId() uint64 { + if x != nil { + return x.DepartmentId + } + return 0 +} + +func (x *GetUserListReq) GetPostId() uint64 { + if x != nil { + return x.PostId + } + return 0 +} + +type PageInfoReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Status uint32 `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"` + Page uint64 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` + PageSize uint64 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` } -func (x *StatusCodeReq) Reset() { - *x = StatusCodeReq{} +func (x *PageInfoReq) Reset() { + *x = PageInfoReq{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3147,13 +3274,13 @@ func (x *StatusCodeReq) Reset() { } } -func (x *StatusCodeReq) String() string { +func (x *PageInfoReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StatusCodeReq) ProtoMessage() {} +func (*PageInfoReq) ProtoMessage() {} -func (x *StatusCodeReq) ProtoReflect() protoreflect.Message { +func (x *PageInfoReq) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3165,36 +3292,40 @@ func (x *StatusCodeReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StatusCodeReq.ProtoReflect.Descriptor instead. -func (*StatusCodeReq) Descriptor() ([]byte, []int) { +// Deprecated: Use PageInfoReq.ProtoReflect.Descriptor instead. +func (*PageInfoReq) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{42} } -func (x *StatusCodeReq) GetId() uint64 { +func (x *PageInfoReq) GetPage() uint64 { if x != nil { - return x.Id + return x.Page } return 0 } -func (x *StatusCodeReq) GetStatus() uint32 { +func (x *PageInfoReq) GetPageSize() uint64 { if x != nil { - return x.Status + return x.PageSize } return 0 } -type StatusCodeUUIDReq struct { +type TokenListReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Status uint32 `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"` + Page uint64 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` + PageSize uint64 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + Username string `protobuf:"bytes,3,opt,name=username,proto3" json:"username,omitempty"` + Nickname string `protobuf:"bytes,4,opt,name=nickname,proto3" json:"nickname,omitempty"` + Email string `protobuf:"bytes,5,opt,name=email,proto3" json:"email,omitempty"` + Uuid string `protobuf:"bytes,6,opt,name=uuid,proto3" json:"uuid,omitempty"` } -func (x *StatusCodeUUIDReq) Reset() { - *x = StatusCodeUUIDReq{} +func (x *TokenListReq) Reset() { + *x = TokenListReq{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3202,13 +3333,13 @@ func (x *StatusCodeUUIDReq) Reset() { } } -func (x *StatusCodeUUIDReq) String() string { +func (x *TokenListReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StatusCodeUUIDReq) ProtoMessage() {} +func (*TokenListReq) ProtoMessage() {} -func (x *StatusCodeUUIDReq) ProtoReflect() protoreflect.Message { +func (x *TokenListReq) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3220,112 +3351,80 @@ func (x *StatusCodeUUIDReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StatusCodeUUIDReq.ProtoReflect.Descriptor instead. -func (*StatusCodeUUIDReq) Descriptor() ([]byte, []int) { +// Deprecated: Use TokenListReq.ProtoReflect.Descriptor instead. +func (*TokenListReq) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{43} } -func (x *StatusCodeUUIDReq) GetId() string { +func (x *TokenListReq) GetPage() uint64 { if x != nil { - return x.Id + return x.Page } - return "" + return 0 } -func (x *StatusCodeUUIDReq) GetStatus() uint32 { +func (x *TokenListReq) GetPageSize() uint64 { if x != nil { - return x.Status + return x.PageSize } return 0 } -type DepartmentListResp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Total uint64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` - Data []*DepartmentInfo `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` -} - -func (x *DepartmentListResp) Reset() { - *x = DepartmentListResp{} - if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[44] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *TokenListReq) GetUsername() string { + if x != nil { + return x.Username } + return "" } -func (x *DepartmentListResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DepartmentListResp) ProtoMessage() {} - -func (x *DepartmentListResp) ProtoReflect() protoreflect.Message { - mi := &file_rpc_core_proto_msgTypes[44] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *TokenListReq) GetNickname() string { + if x != nil { + return x.Nickname } - return mi.MessageOf(x) -} - -// Deprecated: Use DepartmentListResp.ProtoReflect.Descriptor instead. -func (*DepartmentListResp) Descriptor() ([]byte, []int) { - return file_rpc_core_proto_rawDescGZIP(), []int{44} + return "" } -func (x *DepartmentListResp) GetTotal() uint64 { +func (x *TokenListReq) GetEmail() string { if x != nil { - return x.Total + return x.Email } - return 0 + return "" } -func (x *DepartmentListResp) GetData() []*DepartmentInfo { +func (x *TokenListReq) GetUuid() string { if x != nil { - return x.Data + return x.Uuid } - return nil + return "" } -type TokenInfo struct { +type ChangePasswordReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - CreatedAt int64 `protobuf:"varint,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt int64 `protobuf:"varint,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - Uuid string `protobuf:"bytes,4,opt,name=uuid,proto3" json:"uuid,omitempty"` - Token string `protobuf:"bytes,5,opt,name=token,proto3" json:"token,omitempty"` - Source string `protobuf:"bytes,6,opt,name=source,proto3" json:"source,omitempty"` - Status uint32 `protobuf:"varint,7,opt,name=status,proto3" json:"status,omitempty"` - ExpiredAt int64 `protobuf:"varint,8,opt,name=expired_at,json=expiredAt,proto3" json:"expired_at,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + OldPassword string `protobuf:"bytes,2,opt,name=old_password,json=oldPassword,proto3" json:"old_password,omitempty"` + NewPassword string `protobuf:"bytes,3,opt,name=new_password,json=newPassword,proto3" json:"new_password,omitempty"` } -func (x *TokenInfo) Reset() { - *x = TokenInfo{} +func (x *ChangePasswordReq) Reset() { + *x = ChangePasswordReq{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[45] + mi := &file_rpc_core_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *TokenInfo) String() string { +func (x *ChangePasswordReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TokenInfo) ProtoMessage() {} +func (*ChangePasswordReq) ProtoMessage() {} -func (x *TokenInfo) ProtoReflect() protoreflect.Message { - mi := &file_rpc_core_proto_msgTypes[45] +func (x *ChangePasswordReq) ProtoReflect() protoreflect.Message { + mi := &file_rpc_core_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3336,67 +3435,32 @@ func (x *TokenInfo) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TokenInfo.ProtoReflect.Descriptor instead. -func (*TokenInfo) Descriptor() ([]byte, []int) { - return file_rpc_core_proto_rawDescGZIP(), []int{45} +// Deprecated: Use ChangePasswordReq.ProtoReflect.Descriptor instead. +func (*ChangePasswordReq) Descriptor() ([]byte, []int) { + return file_rpc_core_proto_rawDescGZIP(), []int{44} } -func (x *TokenInfo) GetId() string { +func (x *ChangePasswordReq) GetId() string { if x != nil { return x.Id } return "" } -func (x *TokenInfo) GetCreatedAt() int64 { - if x != nil { - return x.CreatedAt - } - return 0 -} - -func (x *TokenInfo) GetUpdatedAt() int64 { - if x != nil { - return x.UpdatedAt - } - return 0 -} - -func (x *TokenInfo) GetUuid() string { - if x != nil { - return x.Uuid - } - return "" -} - -func (x *TokenInfo) GetToken() string { +func (x *ChangePasswordReq) GetOldPassword() string { if x != nil { - return x.Token + return x.OldPassword } return "" } -func (x *TokenInfo) GetSource() string { +func (x *ChangePasswordReq) GetNewPassword() string { if x != nil { - return x.Source + return x.NewPassword } return "" } -func (x *TokenInfo) GetStatus() uint32 { - if x != nil { - return x.Status - } - return 0 -} - -func (x *TokenInfo) GetExpiredAt() int64 { - if x != nil { - return x.ExpiredAt - } - return 0 -} - type CreateOrUpdateUserReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -3414,12 +3478,13 @@ type CreateOrUpdateUserReq struct { HomePath string `protobuf:"bytes,10,opt,name=home_path,json=homePath,proto3" json:"home_path,omitempty"` Description string `protobuf:"bytes,11,opt,name=description,proto3" json:"description,omitempty"` DepartmentId uint64 `protobuf:"varint,12,opt,name=department_id,json=departmentId,proto3" json:"department_id,omitempty"` + PostId uint64 `protobuf:"varint,13,opt,name=post_id,json=postId,proto3" json:"post_id,omitempty"` } func (x *CreateOrUpdateUserReq) Reset() { *x = CreateOrUpdateUserReq{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[46] + mi := &file_rpc_core_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3432,7 +3497,7 @@ func (x *CreateOrUpdateUserReq) String() string { func (*CreateOrUpdateUserReq) ProtoMessage() {} func (x *CreateOrUpdateUserReq) ProtoReflect() protoreflect.Message { - mi := &file_rpc_core_proto_msgTypes[46] + mi := &file_rpc_core_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3445,7 +3510,7 @@ func (x *CreateOrUpdateUserReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateOrUpdateUserReq.ProtoReflect.Descriptor instead. func (*CreateOrUpdateUserReq) Descriptor() ([]byte, []int) { - return file_rpc_core_proto_rawDescGZIP(), []int{46} + return file_rpc_core_proto_rawDescGZIP(), []int{45} } func (x *CreateOrUpdateUserReq) GetId() string { @@ -3532,17 +3597,72 @@ func (x *CreateOrUpdateUserReq) GetDepartmentId() uint64 { return 0 } -type MenuInfoList struct { +func (x *CreateOrUpdateUserReq) GetPostId() uint64 { + if x != nil { + return x.PostId + } + return 0 +} + +// return the role's authorization menu's ids +type RoleMenuAuthorityResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total uint64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` - Data []*MenuInfo `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` + MenuId []uint64 `protobuf:"varint,1,rep,packed,name=menu_id,json=menuId,proto3" json:"menu_id,omitempty"` } -func (x *MenuInfoList) Reset() { - *x = MenuInfoList{} +func (x *RoleMenuAuthorityResp) Reset() { + *x = RoleMenuAuthorityResp{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_core_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RoleMenuAuthorityResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RoleMenuAuthorityResp) ProtoMessage() {} + +func (x *RoleMenuAuthorityResp) ProtoReflect() protoreflect.Message { + mi := &file_rpc_core_proto_msgTypes[46] + 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 RoleMenuAuthorityResp.ProtoReflect.Descriptor instead. +func (*RoleMenuAuthorityResp) Descriptor() ([]byte, []int) { + return file_rpc_core_proto_rawDescGZIP(), []int{46} +} + +func (x *RoleMenuAuthorityResp) GetMenuId() []uint64 { + if x != nil { + return x.MenuId + } + return nil +} + +type DictionaryList struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Total uint64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` + Data []*DictionaryInfo `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` +} + +func (x *DictionaryList) Reset() { + *x = DictionaryList{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3550,13 +3670,13 @@ func (x *MenuInfoList) Reset() { } } -func (x *MenuInfoList) String() string { +func (x *DictionaryList) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MenuInfoList) ProtoMessage() {} +func (*DictionaryList) ProtoMessage() {} -func (x *MenuInfoList) ProtoReflect() protoreflect.Message { +func (x *DictionaryList) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3568,39 +3688,35 @@ func (x *MenuInfoList) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use MenuInfoList.ProtoReflect.Descriptor instead. -func (*MenuInfoList) Descriptor() ([]byte, []int) { +// Deprecated: Use DictionaryList.ProtoReflect.Descriptor instead. +func (*DictionaryList) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{47} } -func (x *MenuInfoList) GetTotal() uint64 { +func (x *DictionaryList) GetTotal() uint64 { if x != nil { return x.Total } return 0 } -func (x *MenuInfoList) GetData() []*MenuInfo { +func (x *DictionaryList) GetData() []*DictionaryInfo { if x != nil { return x.Data } return nil } -type CreateOrUpdateMenuParamReq struct { +type OauthRedirectResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - MenuId uint64 `protobuf:"varint,2,opt,name=menu_id,json=menuId,proto3" json:"menu_id,omitempty"` - Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` - Key string `protobuf:"bytes,4,opt,name=key,proto3" json:"key,omitempty"` - Value string `protobuf:"bytes,5,opt,name=value,proto3" json:"value,omitempty"` + Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` } -func (x *CreateOrUpdateMenuParamReq) Reset() { - *x = CreateOrUpdateMenuParamReq{} +func (x *OauthRedirectResp) Reset() { + *x = OauthRedirectResp{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3608,13 +3724,13 @@ func (x *CreateOrUpdateMenuParamReq) Reset() { } } -func (x *CreateOrUpdateMenuParamReq) String() string { +func (x *OauthRedirectResp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateOrUpdateMenuParamReq) ProtoMessage() {} +func (*OauthRedirectResp) ProtoMessage() {} -func (x *CreateOrUpdateMenuParamReq) ProtoReflect() protoreflect.Message { +func (x *OauthRedirectResp) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3626,57 +3742,29 @@ func (x *CreateOrUpdateMenuParamReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateOrUpdateMenuParamReq.ProtoReflect.Descriptor instead. -func (*CreateOrUpdateMenuParamReq) Descriptor() ([]byte, []int) { +// Deprecated: Use OauthRedirectResp.ProtoReflect.Descriptor instead. +func (*OauthRedirectResp) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{48} } -func (x *CreateOrUpdateMenuParamReq) GetId() uint64 { - if x != nil { - return x.Id - } - return 0 -} - -func (x *CreateOrUpdateMenuParamReq) GetMenuId() uint64 { - if x != nil { - return x.MenuId - } - return 0 -} - -func (x *CreateOrUpdateMenuParamReq) GetType() string { - if x != nil { - return x.Type - } - return "" -} - -func (x *CreateOrUpdateMenuParamReq) GetKey() string { - if x != nil { - return x.Key - } - return "" -} - -func (x *CreateOrUpdateMenuParamReq) GetValue() string { +func (x *OauthRedirectResp) GetUrl() string { if x != nil { - return x.Value + return x.Url } return "" } -type TokenListResp struct { +type CallbackReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total uint64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` - Data []*TokenInfo `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` + State string `protobuf:"bytes,1,opt,name=state,proto3" json:"state,omitempty"` + Code string `protobuf:"bytes,2,opt,name=code,proto3" json:"code,omitempty"` } -func (x *TokenListResp) Reset() { - *x = TokenListResp{} +func (x *CallbackReq) Reset() { + *x = CallbackReq{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3684,13 +3772,13 @@ func (x *TokenListResp) Reset() { } } -func (x *TokenListResp) String() string { +func (x *CallbackReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TokenListResp) ProtoMessage() {} +func (*CallbackReq) ProtoMessage() {} -func (x *TokenListResp) ProtoReflect() protoreflect.Message { +func (x *CallbackReq) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3702,40 +3790,36 @@ func (x *TokenListResp) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TokenListResp.ProtoReflect.Descriptor instead. -func (*TokenListResp) Descriptor() ([]byte, []int) { +// Deprecated: Use CallbackReq.ProtoReflect.Descriptor instead. +func (*CallbackReq) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{49} } -func (x *TokenListResp) GetTotal() uint64 { +func (x *CallbackReq) GetState() string { if x != nil { - return x.Total + return x.State } - return 0 + return "" } -func (x *TokenListResp) GetData() []*TokenInfo { +func (x *CallbackReq) GetCode() string { if x != nil { - return x.Data + return x.Code } - return nil + return "" } -type MenuParamResp struct { +type RoleListResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` - Key string `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"` - Value string `protobuf:"bytes,4,opt,name=value,proto3" json:"value,omitempty"` - CreatedAt int64 `protobuf:"varint,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt int64 `protobuf:"varint,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Total uint64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` + Data []*RoleInfo `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` } -func (x *MenuParamResp) Reset() { - *x = MenuParamResp{} +func (x *RoleListResp) Reset() { + *x = RoleListResp{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3743,13 +3827,13 @@ func (x *MenuParamResp) Reset() { } } -func (x *MenuParamResp) String() string { +func (x *RoleListResp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MenuParamResp) ProtoMessage() {} +func (*RoleListResp) ProtoMessage() {} -func (x *MenuParamResp) ProtoReflect() protoreflect.Message { +func (x *RoleListResp) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3761,63 +3845,42 @@ func (x *MenuParamResp) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use MenuParamResp.ProtoReflect.Descriptor instead. -func (*MenuParamResp) Descriptor() ([]byte, []int) { +// Deprecated: Use RoleListResp.ProtoReflect.Descriptor instead. +func (*RoleListResp) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{50} } -func (x *MenuParamResp) GetId() uint64 { - if x != nil { - return x.Id - } - return 0 -} - -func (x *MenuParamResp) GetType() string { - if x != nil { - return x.Type - } - return "" -} - -func (x *MenuParamResp) GetKey() string { - if x != nil { - return x.Key - } - return "" -} - -func (x *MenuParamResp) GetValue() string { - if x != nil { - return x.Value - } - return "" -} - -func (x *MenuParamResp) GetCreatedAt() int64 { +func (x *RoleListResp) GetTotal() uint64 { if x != nil { - return x.CreatedAt + return x.Total } return 0 } -func (x *MenuParamResp) GetUpdatedAt() int64 { +func (x *RoleListResp) GetData() []*RoleInfo { if x != nil { - return x.UpdatedAt + return x.Data } - return 0 + return nil } -type IDReq struct { +type TokenInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + CreatedAt int64 `protobuf:"varint,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt int64 `protobuf:"varint,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Uuid string `protobuf:"bytes,4,opt,name=uuid,proto3" json:"uuid,omitempty"` + Token string `protobuf:"bytes,5,opt,name=token,proto3" json:"token,omitempty"` + Source string `protobuf:"bytes,6,opt,name=source,proto3" json:"source,omitempty"` + Status uint32 `protobuf:"varint,7,opt,name=status,proto3" json:"status,omitempty"` + ExpiredAt int64 `protobuf:"varint,8,opt,name=expired_at,json=expiredAt,proto3" json:"expired_at,omitempty"` } -func (x *IDReq) Reset() { - *x = IDReq{} +func (x *TokenInfo) Reset() { + *x = TokenInfo{} if protoimpl.UnsafeEnabled { mi := &file_rpc_core_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3825,13 +3888,13 @@ func (x *IDReq) Reset() { } } -func (x *IDReq) String() string { +func (x *TokenInfo) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IDReq) ProtoMessage() {} +func (*TokenInfo) ProtoMessage() {} -func (x *IDReq) ProtoReflect() protoreflect.Message { +func (x *TokenInfo) ProtoReflect() protoreflect.Message { mi := &file_rpc_core_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3843,157 +3906,118 @@ func (x *IDReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IDReq.ProtoReflect.Descriptor instead. -func (*IDReq) Descriptor() ([]byte, []int) { +// Deprecated: Use TokenInfo.ProtoReflect.Descriptor instead. +func (*TokenInfo) Descriptor() ([]byte, []int) { return file_rpc_core_proto_rawDescGZIP(), []int{51} } -func (x *IDReq) GetId() uint64 { +func (x *TokenInfo) GetId() string { if x != nil { return x.Id } - return 0 -} - -type Meta struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` - Icon string `protobuf:"bytes,2,opt,name=icon,proto3" json:"icon,omitempty"` - HideMenu bool `protobuf:"varint,3,opt,name=hide_menu,json=hideMenu,proto3" json:"hide_menu,omitempty"` - HideBreadcrumb bool `protobuf:"varint,4,opt,name=hide_breadcrumb,json=hideBreadcrumb,proto3" json:"hide_breadcrumb,omitempty"` - CurrentActiveMenu string `protobuf:"bytes,5,opt,name=current_active_menu,json=currentActiveMenu,proto3" json:"current_active_menu,omitempty"` - IgnoreKeepAlive bool `protobuf:"varint,6,opt,name=ignore_keep_alive,json=ignoreKeepAlive,proto3" json:"ignore_keep_alive,omitempty"` - HideTab bool `protobuf:"varint,7,opt,name=hide_tab,json=hideTab,proto3" json:"hide_tab,omitempty"` - FrameSrc string `protobuf:"bytes,8,opt,name=frame_src,json=frameSrc,proto3" json:"frame_src,omitempty"` - CarryParam bool `protobuf:"varint,9,opt,name=carry_param,json=carryParam,proto3" json:"carry_param,omitempty"` - HideChildrenInMenu bool `protobuf:"varint,10,opt,name=hide_children_in_menu,json=hideChildrenInMenu,proto3" json:"hide_children_in_menu,omitempty"` - Affix bool `protobuf:"varint,11,opt,name=affix,proto3" json:"affix,omitempty"` - DynamicLevel uint32 `protobuf:"varint,12,opt,name=dynamic_level,json=dynamicLevel,proto3" json:"dynamic_level,omitempty"` - RealPath string `protobuf:"bytes,13,opt,name=real_path,json=realPath,proto3" json:"real_path,omitempty"` -} - -func (x *Meta) Reset() { - *x = Meta{} - if protoimpl.UnsafeEnabled { - mi := &file_rpc_core_proto_msgTypes[52] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Meta) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Meta) ProtoMessage() {} - -func (x *Meta) ProtoReflect() protoreflect.Message { - mi := &file_rpc_core_proto_msgTypes[52] - 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 Meta.ProtoReflect.Descriptor instead. -func (*Meta) Descriptor() ([]byte, []int) { - return file_rpc_core_proto_rawDescGZIP(), []int{52} -} - -func (x *Meta) GetTitle() string { - if x != nil { - return x.Title - } return "" } -func (x *Meta) GetIcon() string { +func (x *TokenInfo) GetCreatedAt() int64 { if x != nil { - return x.Icon + return x.CreatedAt } - return "" + return 0 } -func (x *Meta) GetHideMenu() bool { +func (x *TokenInfo) GetUpdatedAt() int64 { if x != nil { - return x.HideMenu + return x.UpdatedAt } - return false + return 0 } -func (x *Meta) GetHideBreadcrumb() bool { +func (x *TokenInfo) GetUuid() string { if x != nil { - return x.HideBreadcrumb + return x.Uuid } - return false + return "" } -func (x *Meta) GetCurrentActiveMenu() string { +func (x *TokenInfo) GetToken() string { if x != nil { - return x.CurrentActiveMenu + return x.Token } return "" } -func (x *Meta) GetIgnoreKeepAlive() bool { +func (x *TokenInfo) GetSource() string { if x != nil { - return x.IgnoreKeepAlive + return x.Source } - return false + return "" } -func (x *Meta) GetHideTab() bool { +func (x *TokenInfo) GetStatus() uint32 { if x != nil { - return x.HideTab + return x.Status } - return false + return 0 } -func (x *Meta) GetFrameSrc() string { +func (x *TokenInfo) GetExpiredAt() int64 { if x != nil { - return x.FrameSrc + return x.ExpiredAt } - return "" + return 0 } -func (x *Meta) GetCarryParam() bool { - if x != nil { - return x.CarryParam - } - return false +type LoginReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` + Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"` } -func (x *Meta) GetHideChildrenInMenu() bool { - if x != nil { - return x.HideChildrenInMenu +func (x *LoginReq) Reset() { + *x = LoginReq{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_core_proto_msgTypes[52] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return false } -func (x *Meta) GetAffix() bool { - if x != nil { - return x.Affix +func (x *LoginReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LoginReq) ProtoMessage() {} + +func (x *LoginReq) ProtoReflect() protoreflect.Message { + mi := &file_rpc_core_proto_msgTypes[52] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return false + return mi.MessageOf(x) } -func (x *Meta) GetDynamicLevel() uint32 { +// Deprecated: Use LoginReq.ProtoReflect.Descriptor instead. +func (*LoginReq) Descriptor() ([]byte, []int) { + return file_rpc_core_proto_rawDescGZIP(), []int{52} +} + +func (x *LoginReq) GetUsername() string { if x != nil { - return x.DynamicLevel + return x.Username } - return 0 + return "" } -func (x *Meta) GetRealPath() string { +func (x *LoginReq) GetPassword() string { if x != nil { - return x.RealPath + return x.Password } return "" } @@ -4002,419 +4026,139 @@ var File_rpc_core_proto protoreflect.FileDescriptor var file_rpc_core_proto_rawDesc = []byte{ 0x0a, 0x0e, 0x72, 0x70, 0x63, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x12, 0x04, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x1c, 0x0a, 0x08, 0x55, 0x55, 0x49, 0x44, 0x73, 0x52, - 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x03, 0x69, 0x64, 0x73, 0x22, 0x29, 0x0a, 0x13, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, - 0xe5, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, - 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, - 0x69, 0x7a, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, - 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, - 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6c, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, - 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x61, 0x72, - 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xa1, 0x01, 0x0a, 0x0a, 0x41, 0x70, 0x69, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, - 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, - 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x20, 0x0a, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, - 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, - 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x52, 0x0a, 0x11, 0x4d, - 0x65, 0x6e, 0x75, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x27, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x6e, 0x75, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, - 0x52, 0x0a, 0x0b, 0x50, 0x6f, 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x12, - 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x70, 0x61, - 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x22, 0xa9, 0x02, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x6e, 0x75, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, - 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x65, - 0x76, 0x65, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x70, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x64, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x64, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, - 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, - 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, - 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, - 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0a, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, - 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x6e, 0x75, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x6d, 0x65, 0x6e, 0x75, 0x54, 0x79, 0x70, 0x65, 0x22, - 0x50, 0x0a, 0x10, 0x4d, 0x65, 0x6e, 0x75, 0x52, 0x6f, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x26, 0x0a, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4d, - 0x65, 0x6e, 0x75, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x22, 0x1a, 0x0a, 0x06, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x69, - 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x1c, 0x0a, - 0x08, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0xc4, 0x01, 0x0a, 0x08, - 0x50, 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 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, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, - 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x73, 0x6f, - 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, - 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, - 0x72, 0x6b, 0x22, 0x48, 0x0a, 0x0c, 0x50, 0x6f, 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x22, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x6f, - 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xda, 0x02, 0x0a, - 0x08, 0x4d, 0x65, 0x6e, 0x75, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 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, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1b, 0x0a, - 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, - 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x1c, - 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x73, 0x6f, 0x72, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, - 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x04, - 0x6d, 0x65, 0x74, 0x61, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x1b, 0x0a, 0x09, - 0x6d, 0x65, 0x6e, 0x75, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x08, 0x6d, 0x65, 0x6e, 0x75, 0x54, 0x79, 0x70, 0x65, 0x22, 0x41, 0x0a, 0x0d, 0x4f, 0x61, 0x75, - 0x74, 0x68, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, 0xdf, 0x02, 0x0a, - 0x0c, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x23, - 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, - 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x64, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x12, 0x19, - 0x0a, 0x08, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x61, 0x75, 0x74, 0x68, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x73, - 0x74, 0x79, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, - 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x75, 0x72, - 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6e, 0x66, 0x6f, 0x55, 0x72, 0x6c, - 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x03, 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, 0x0c, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x58, - 0x0a, 0x14, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x2a, 0x0a, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xa9, 0x03, 0x0a, 0x0c, 0x55, 0x73, 0x65, - 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, - 0x74, 0x61, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, - 0x72, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, - 0x62, 0x69, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x6f, 0x62, 0x69, - 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, - 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x6f, 0x6c, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, - 0x61, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x12, 0x04, 0x63, 0x6f, 0x72, 0x65, 0x22, 0xa1, 0x01, 0x0a, 0x0a, 0x41, 0x70, 0x69, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, + 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x61, + 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, + 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, + 0x74, 0x68, 0x6f, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x1c, 0x0a, 0x08, 0x42, 0x61, + 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x70, 0x0a, 0x11, 0x44, 0x65, 0x70, 0x61, + 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, + 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x70, 0x61, 0x67, + 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0x48, 0x0a, 0x0c, 0x50, 0x6f, + 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x12, 0x22, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x22, 0x3b, 0x0a, 0x11, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, + 0x64, 0x65, 0x55, 0x55, 0x49, 0x44, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x22, 0x4c, 0x0a, 0x0c, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x26, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x73, 0x65, + 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, + 0x46, 0x0a, 0x0b, 0x41, 0x70, 0x69, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, + 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x21, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x70, 0x69, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x07, 0x0a, 0x05, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x22, 0x19, 0x0a, 0x07, 0x55, 0x55, 0x49, 0x44, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xb4, 0x01, 0x0a, 0x0e, + 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, + 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, + 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x64, 0x65, 0x73, 0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 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, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, - 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x0d, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x6d, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x20, 0x0a, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x0f, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, - 0x6e, 0x74, 0x49, 0x64, 0x22, 0xb4, 0x01, 0x0a, 0x0e, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x22, 0xdb, 0x01, 0x0a, 0x10, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, + 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, - 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x1d, 0x0a, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 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, 0x07, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0xa6, 0x01, 0x0a, 0x10, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, - 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, - 0x69, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, - 0x61, 0x74, 0x61, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, - 0x61, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x42, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, - 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, - 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x4c, 0x0a, 0x0c, 0x55, 0x73, 0x65, 0x72, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, - 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x26, - 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, - 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x3e, 0x0a, 0x0b, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, - 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x61, - 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x50, 0x0a, 0x0c, 0x4d, 0x65, 0x6e, 0x75, 0x52, 0x6f, - 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x6d, 0x65, 0x6e, 0x75, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6d, 0x65, 0x6e, 0x75, 0x49, 0x64, 0x12, - 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x37, 0x0a, 0x0b, 0x43, 0x61, 0x6c, 0x6c, - 0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, - 0x65, 0x22, 0xa1, 0x01, 0x0a, 0x0c, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, - 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, - 0x69, 0x7a, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, - 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, - 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x75, 0x75, 0x69, 0x64, 0x22, 0xbb, 0x01, 0x0a, 0x07, 0x41, 0x70, 0x69, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x03, 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, 0x03, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, - 0x61, 0x74, 0x68, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x6d, - 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, - 0x68, 0x6f, 0x64, 0x22, 0x46, 0x0a, 0x0b, 0x41, 0x70, 0x69, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x21, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x70, - 0x69, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x6e, 0x0a, 0x11, 0x44, - 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, - 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, - 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1b, - 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x48, 0x0a, 0x14, 0x52, - 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x6e, 0x75, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, - 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, - 0x6d, 0x65, 0x6e, 0x75, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x6d, - 0x65, 0x6e, 0x75, 0x49, 0x64, 0x22, 0x19, 0x0a, 0x07, 0x55, 0x55, 0x49, 0x44, 0x52, 0x65, 0x71, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, - 0x22, 0x48, 0x0a, 0x0c, 0x52, 0x6f, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x22, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x6f, 0x6c, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xcd, 0x01, 0x0a, 0x08, 0x52, - 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x72, 0x6f, 0x75, - 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, - 0x6c, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 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, 0x12, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x12, 0x1c, 0x0a, 0x09, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x70, 0x0a, 0x09, 0x4c, 0x6f, - 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x30, 0x0a, 0x15, - 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x6e, 0x75, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, - 0x79, 0x52, 0x65, 0x73, 0x70, 0x12, 0x17, 0x0a, 0x07, 0x6d, 0x65, 0x6e, 0x75, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x6d, 0x65, 0x6e, 0x75, 0x49, 0x64, 0x22, 0x70, - 0x0a, 0x11, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, - 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, - 0x53, 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x22, 0x50, 0x0a, 0x0e, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x4c, 0x69, - 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x44, 0x69, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, - 0x74, 0x61, 0x22, 0x07, 0x0a, 0x05, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xb5, 0x02, 0x0a, 0x0e, - 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, - 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 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, 0x03, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x16, 0x0a, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x6e, 0x63, 0x65, - 0x73, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6e, 0x63, - 0x65, 0x73, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x14, - 0x0a, 0x05, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, - 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6f, - 0x72, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x12, 0x16, - 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, - 0x74, 0x49, 0x64, 0x22, 0xdb, 0x01, 0x0a, 0x10, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, - 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x03, 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, 0x07, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x23, 0x0a, 0x0d, - 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x0c, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x49, - 0x64, 0x22, 0x69, 0x0a, 0x11, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, - 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x6c, 0x64, 0x5f, 0x70, 0x61, - 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x6c, - 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x65, 0x77, - 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x6e, 0x65, 0x77, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x25, 0x0a, 0x11, - 0x4f, 0x61, 0x75, 0x74, 0x68, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x75, 0x72, 0x6c, 0x22, 0x50, 0x0a, 0x10, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x4c, + 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x64, + 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x0c, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x49, 0x64, + 0x22, 0x58, 0x0a, 0x14, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x2a, + 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x41, 0x0a, 0x0d, 0x4f, 0x61, + 0x75, 0x74, 0x68, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, 0x50, 0x0a, + 0x10, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x26, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, + 0x52, 0x0a, 0x0b, 0x50, 0x6f, 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x12, + 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x70, 0x61, + 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x22, 0x4a, 0x0a, 0x0d, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x23, 0x0a, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, + 0xa6, 0x01, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x29, 0x0a, 0x13, 0x44, 0x69, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x22, 0x50, 0x0a, 0x10, 0x4d, 0x65, 0x6e, 0x75, 0x52, 0x6f, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x26, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x37, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, - 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x3b, - 0x0a, 0x11, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x55, 0x55, 0x49, 0x44, - 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x54, 0x0a, 0x12, 0x44, - 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x44, 0x65, 0x70, - 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x22, 0xd2, 0x01, 0x0a, 0x09, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x03, 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, 0x03, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x12, 0x0a, - 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, - 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, - 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x65, 0x78, 0x70, - 0x69, 0x72, 0x65, 0x64, 0x41, 0x74, 0x22, 0xd6, 0x02, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, - 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, - 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, - 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x68, - 0x6f, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x68, 0x6f, 0x6d, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, - 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, - 0x48, 0x0a, 0x0c, 0x4d, 0x65, 0x6e, 0x75, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, - 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x22, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x6e, 0x75, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x81, 0x01, 0x0a, 0x1a, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x6e, 0x75, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x6d, 0x65, 0x6e, 0x75, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6d, 0x65, 0x6e, 0x75, 0x49, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x4a, 0x0a, - 0x0d, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, - 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x23, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x99, 0x01, 0x0a, 0x0d, 0x4d, 0x65, - 0x6e, 0x75, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 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, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x17, 0x0a, 0x05, 0x49, 0x44, 0x52, 0x65, 0x71, 0x12, 0x0e, + 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x6e, 0x75, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xdf, 0x02, 0x0a, 0x0c, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x21, 0x0a, 0x0c, + 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x55, 0x72, 0x6c, 0x12, + 0x16, 0x0a, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x75, 0x74, 0x68, 0x5f, + 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x75, 0x74, 0x68, 0x55, + 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x55, 0x72, 0x6c, 0x12, + 0x1d, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x19, + 0x0a, 0x08, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x69, 0x6e, 0x66, 0x6f, 0x55, 0x72, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 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, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x1c, 0x0a, 0x08, 0x55, 0x55, 0x49, 0x44, 0x73, + 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x17, 0x0a, 0x05, 0x49, 0x44, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x22, 0xb6, 0x03, 0x0a, 0x04, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, 0x0a, @@ -4443,199 +4187,484 @@ var file_rpc_core_proto_rawDesc = []byte{ 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x6c, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, - 0x65, 0x61, 0x6c, 0x50, 0x61, 0x74, 0x68, 0x32, 0xea, 0x17, 0x0a, 0x04, 0x43, 0x6f, 0x72, 0x65, - 0x12, 0x32, 0x0a, 0x11, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x41, 0x70, 0x69, 0x12, 0x0d, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x70, 0x69, - 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x28, 0x0a, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, - 0x69, 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x31, - 0x0a, 0x0a, 0x67, 0x65, 0x74, 0x41, 0x70, 0x69, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x10, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x70, 0x69, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x11, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x70, 0x69, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x3c, 0x0a, 0x10, 0x67, 0x65, 0x74, 0x4d, 0x65, 0x6e, 0x75, 0x41, 0x75, 0x74, 0x68, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x44, 0x52, - 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, - 0x6e, 0x75, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x49, 0x0a, 0x1b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x4d, 0x65, 0x6e, 0x75, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1a, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x6e, 0x75, 0x41, 0x75, - 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2b, 0x0a, 0x0c, 0x69, 0x6e, - 0x69, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, - 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x40, 0x0a, 0x18, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, - 0x65, 0x6e, 0x74, 0x12, 0x14, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x44, 0x65, 0x70, 0x61, 0x72, - 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x46, 0x0a, 0x11, 0x67, 0x65, 0x74, - 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x17, + 0x65, 0x61, 0x6c, 0x50, 0x61, 0x74, 0x68, 0x22, 0x48, 0x0a, 0x14, 0x52, 0x6f, 0x6c, 0x65, 0x4d, + 0x65, 0x6e, 0x75, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x12, + 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x6d, 0x65, 0x6e, 0x75, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x6d, 0x65, 0x6e, 0x75, 0x49, + 0x64, 0x22, 0x48, 0x0a, 0x0c, 0x4d, 0x65, 0x6e, 0x75, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, + 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x22, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x6e, + 0x75, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x50, 0x0a, 0x0c, 0x4d, + 0x65, 0x6e, 0x75, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x6d, + 0x65, 0x6e, 0x75, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6d, 0x65, + 0x6e, 0x75, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x81, 0x01, + 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x4d, 0x65, 0x6e, 0x75, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, + 0x6d, 0x65, 0x6e, 0x75, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6d, + 0x65, 0x6e, 0x75, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x22, 0x99, 0x01, 0x0a, 0x0d, 0x4d, 0x65, 0x6e, 0x75, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, + 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x03, 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, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x70, 0x0a, + 0x09, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, + 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, + 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x6f, 0x6c, 0x65, 0x5f, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x6f, 0x6c, + 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x22, + 0x54, 0x0a, 0x12, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x28, 0x0a, 0x04, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xa9, 0x02, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x6e, 0x75, 0x52, 0x65, 0x71, 0x12, + 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, + 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, + 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, + 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, + 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6f, + 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, + 0x62, 0x6c, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, + 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, + 0x6d, 0x65, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x6e, 0x75, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x6d, 0x65, 0x6e, 0x75, 0x54, 0x79, 0x70, + 0x65, 0x22, 0xbb, 0x01, 0x0a, 0x07, 0x41, 0x70, 0x69, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, + 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 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, 0x03, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, + 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, + 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, + 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, + 0xb5, 0x02, 0x0a, 0x0e, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, + 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 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, + 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, + 0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, + 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x12, + 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x73, 0x6f, + 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xc4, 0x01, 0x0a, 0x08, 0x50, 0x6f, 0x73, 0x74, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 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, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6f, + 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x22, 0xcd, + 0x01, 0x0a, 0x08, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 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, 0x12, 0x0a, 0x04, + 0x73, 0x6f, 0x72, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, + 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x1a, + 0x0a, 0x06, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0xda, 0x02, 0x0a, 0x08, 0x4d, + 0x65, 0x6e, 0x75, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 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, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x1c, 0x0a, 0x09, + 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6f, + 0x72, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x12, 0x1a, + 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x04, 0x6d, 0x65, + 0x74, 0x61, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, + 0x6e, 0x75, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x6d, + 0x65, 0x6e, 0x75, 0x54, 0x79, 0x70, 0x65, 0x22, 0xc2, 0x03, 0x0a, 0x0c, 0x55, 0x73, 0x65, 0x72, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, + 0x61, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, + 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x62, + 0x69, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6e, + 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, + 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 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, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, + 0x1b, 0x0a, 0x09, 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x6d, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x20, 0x0a, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, + 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x0f, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, + 0x74, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x10, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x70, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x22, 0x37, 0x0a, 0x0d, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x6e, 0x0a, 0x11, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, + 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, + 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x61, 0x67, + 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x52, 0x0a, 0x11, 0x4d, 0x65, 0x6e, 0x75, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x12, 0x27, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x6e, 0x75, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, + 0x65, 0x73, 0x70, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xfe, 0x01, 0x0a, 0x0e, 0x47, 0x65, + 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, + 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, + 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, + 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, + 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x6d, + 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x6f, 0x62, + 0x69, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, + 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x49, + 0x64, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x06, 0x70, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x22, 0x3e, 0x0a, 0x0b, 0x50, 0x61, + 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, + 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0xa1, 0x01, 0x0a, 0x0c, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x70, + 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, + 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, + 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x22, 0x69, + 0x0a, 0x11, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, + 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x6c, 0x64, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, + 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x6c, 0x64, 0x50, 0x61, + 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x61, + 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x65, + 0x77, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0xef, 0x02, 0x0a, 0x15, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, + 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x72, + 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x72, 0x6f, + 0x6c, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, + 0x69, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, + 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, + 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1b, + 0x0a, 0x09, 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x68, 0x6f, 0x6d, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x20, 0x0a, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, + 0x0d, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, + 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x06, 0x70, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x22, 0x30, 0x0a, 0x15, 0x52, + 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x6e, 0x75, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x17, 0x0a, 0x07, 0x6d, 0x65, 0x6e, 0x75, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x6d, 0x65, 0x6e, 0x75, 0x49, 0x64, 0x22, 0x50, 0x0a, + 0x0e, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x12, + 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x44, 0x69, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, + 0x25, 0x0a, 0x11, 0x4f, 0x61, 0x75, 0x74, 0x68, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x37, 0x0a, 0x0b, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, + 0x63, 0x6b, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, + 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, + 0x48, 0x0a, 0x0c, 0x52, 0x6f, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x22, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xd2, 0x01, 0x0a, 0x09, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 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, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, + 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x1d, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x41, 0x74, 0x22, 0x42, + 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, + 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, + 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, + 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, + 0x72, 0x64, 0x32, 0xea, 0x17, 0x0a, 0x04, 0x43, 0x6f, 0x72, 0x65, 0x12, 0x32, 0x0a, 0x11, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x69, + 0x12, 0x0d, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x70, 0x69, 0x49, 0x6e, 0x66, 0x6f, 0x1a, + 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x28, 0x0a, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x69, 0x12, 0x0b, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x31, 0x0a, 0x0a, 0x67, 0x65, 0x74, + 0x41, 0x70, 0x69, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x10, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, + 0x70, 0x69, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x41, 0x70, 0x69, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3c, 0x0a, 0x10, + 0x67, 0x65, 0x74, 0x4d, 0x65, 0x6e, 0x75, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x6e, 0x75, 0x41, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x12, 0x49, 0x0a, 0x1b, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x6e, 0x75, + 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x6e, 0x75, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x74, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2b, 0x0a, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x44, 0x61, 0x74, + 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x40, 0x0a, 0x18, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x44, - 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x2f, 0x0a, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x70, 0x61, 0x72, - 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x44, 0x52, - 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x35, 0x0a, 0x15, 0x62, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x0c, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3d, 0x0a, 0x16, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x13, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x40, 0x0a, 0x18, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x61, 0x72, 0x79, 0x12, 0x14, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x44, 0x69, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2f, 0x0a, 0x10, 0x64, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x12, 0x0b, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x42, 0x0a, 0x11, 0x67, - 0x65, 0x74, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, - 0x12, 0x17, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x12, - 0x52, 0x0a, 0x19, 0x67, 0x65, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x42, 0x79, 0x44, 0x69, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x44, - 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x4c, - 0x69, 0x73, 0x74, 0x12, 0x48, 0x0a, 0x1e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x16, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x44, 0x69, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x1a, 0x0e, 0x2e, + 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x46, 0x0a, 0x11, 0x67, 0x65, 0x74, 0x44, 0x65, 0x70, 0x61, 0x72, + 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x17, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, + 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2f, 0x0a, 0x10, + 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, + 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x35, 0x0a, - 0x16, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, - 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, - 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x41, 0x0a, 0x12, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x6e, 0x75, 0x12, 0x1b, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x4d, 0x65, 0x6e, 0x75, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, - 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x29, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x4d, 0x65, 0x6e, 0x75, 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x44, 0x52, + 0x15, 0x62, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x70, 0x61, + 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x0c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x44, + 0x73, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x3d, 0x0a, 0x16, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, + 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x13, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, + 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x40, 0x0a, 0x18, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x12, + 0x14, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, + 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2f, 0x0a, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, + 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, + 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x42, 0x0a, 0x11, 0x67, 0x65, 0x74, 0x44, 0x69, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x17, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x44, 0x69, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x52, 0x0a, 0x19, 0x67, 0x65, + 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x42, 0x79, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x44, + 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, + 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x48, + 0x0a, 0x1e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x12, 0x16, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x35, 0x0a, 0x16, 0x64, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, + 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x41, 0x0a, 0x12, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x4d, 0x65, 0x6e, 0x75, 0x12, 0x1b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x6e, 0x75, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x34, 0x0a, 0x11, 0x67, 0x65, 0x74, 0x4d, 0x65, 0x6e, 0x75, 0x4c, 0x69, 0x73, - 0x74, 0x42, 0x79, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, - 0x44, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x6e, 0x75, - 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x4d, - 0x65, 0x6e, 0x75, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x11, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, - 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x4d, 0x65, 0x6e, 0x75, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x4b, - 0x0a, 0x17, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x4d, 0x65, 0x6e, 0x75, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x20, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, - 0x65, 0x6e, 0x75, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2e, 0x0a, 0x0f, 0x64, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x65, 0x6e, 0x75, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x0b, + 0x73, 0x70, 0x12, 0x29, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x65, 0x6e, 0x75, + 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x34, 0x0a, + 0x11, 0x67, 0x65, 0x74, 0x4d, 0x65, 0x6e, 0x75, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x79, 0x52, 0x6f, + 0x6c, 0x65, 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, + 0x12, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x6e, 0x75, 0x49, 0x6e, 0x66, 0x6f, 0x4c, + 0x69, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x4d, 0x65, 0x6e, 0x75, 0x4c, 0x69, + 0x73, 0x74, 0x12, 0x11, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x6e, + 0x75, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x4b, 0x0a, 0x17, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x6e, 0x75, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x12, 0x20, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x6e, 0x75, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, + 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2e, 0x0a, 0x0f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x4d, 0x65, 0x6e, 0x75, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, + 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x40, 0x0a, 0x18, 0x67, 0x65, 0x74, 0x4d, 0x65, 0x6e, + 0x75, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x79, 0x4d, 0x65, 0x6e, 0x75, + 0x49, 0x64, 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, + 0x17, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x6e, 0x75, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3c, 0x0a, 0x16, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x12, 0x12, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, + 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2d, 0x0a, 0x0e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3c, 0x0a, 0x0f, 0x67, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x11, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x3a, 0x0a, 0x0a, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x4c, 0x6f, 0x67, 0x69, + 0x6e, 0x12, 0x13, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, 0x61, 0x75, 0x74, 0x68, 0x4c, 0x6f, + 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, 0x61, + 0x75, 0x74, 0x68, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x33, 0x0a, 0x0d, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, + 0x12, 0x11, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, + 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x34, 0x0a, 0x12, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x73, 0x74, 0x12, 0x0e, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x34, 0x0a, 0x0b, 0x67, 0x65, + 0x74, 0x50, 0x6f, 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x11, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x29, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x73, 0x74, 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x40, 0x0a, 0x18, 0x67, - 0x65, 0x74, 0x4d, 0x65, 0x6e, 0x75, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x42, - 0x79, 0x4d, 0x65, 0x6e, 0x75, 0x49, 0x64, 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, - 0x44, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x6e, 0x75, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3c, 0x0a, - 0x16, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x12, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2d, 0x0a, 0x0e, 0x64, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x0b, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3c, 0x0a, 0x0f, 0x67, 0x65, - 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x11, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, - 0x1a, 0x16, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3a, 0x0a, 0x0a, 0x6f, 0x61, 0x75, 0x74, - 0x68, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x13, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, 0x61, - 0x75, 0x74, 0x68, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x4f, 0x61, 0x75, 0x74, 0x68, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x33, 0x0a, 0x0d, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x43, 0x61, 0x6c, - 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x12, 0x11, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x61, 0x6c, - 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x34, 0x0a, 0x12, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x73, 0x74, 0x12, - 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x1a, - 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x34, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x11, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, - 0x71, 0x1a, 0x12, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x29, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, - 0x6f, 0x73, 0x74, 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x44, 0x52, 0x65, 0x71, - 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x2f, 0x0a, 0x0f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, - 0x6f, 0x73, 0x74, 0x12, 0x0c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x44, 0x73, 0x52, 0x65, + 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2f, 0x0a, 0x0f, 0x62, + 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x73, 0x74, 0x12, 0x0c, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x37, 0x0a, 0x10, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x13, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, + 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x34, 0x0a, 0x12, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, + 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x0e, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x29, 0x0a, 0x0a, 0x64, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, + 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2a, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x52, 0x6f, 0x6c, + 0x65, 0x42, 0x79, 0x49, 0x64, 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x44, 0x52, + 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x6e, + 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x4c, 0x69, 0x73, + 0x74, 0x12, 0x11, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x6f, 0x6c, 0x65, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x37, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x13, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x37, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x73, 0x74, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x13, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x34, 0x0a, 0x12, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, - 0x12, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, - 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x29, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x0b, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2a, 0x0a, 0x0b, 0x67, - 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x79, 0x49, 0x64, 0x12, 0x0b, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, - 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x52, 0x6f, - 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x11, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, - 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x37, 0x0a, - 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x12, 0x13, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, - 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, - 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x36, 0x0a, 0x13, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x0f, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x0e, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2c, - 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x0d, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x55, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x32, 0x0a, 0x10, - 0x62, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x12, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x55, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, - 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x37, 0x0a, 0x0c, 0x67, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4c, 0x69, 0x73, 0x74, - 0x12, 0x12, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3c, 0x0a, 0x11, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x17, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, + 0x70, 0x12, 0x36, 0x0a, 0x13, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x0f, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2c, 0x0a, 0x0b, 0x64, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x0d, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x55, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, - 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x32, 0x0a, 0x11, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x55, 0x73, 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x0d, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x55, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x28, 0x0a, 0x05, 0x6c, - 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x69, - 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x69, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x39, 0x0a, 0x0e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, - 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x17, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, - 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x41, 0x0a, 0x12, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, - 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x42, 0x79, - 0x49, 0x64, 0x12, 0x0d, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x55, 0x49, 0x44, 0x52, 0x65, - 0x71, 0x1a, 0x12, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x37, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, - 0x4c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x55, - 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2b, - 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0d, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x55, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x31, 0x0a, 0x0f, 0x62, - 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0e, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x55, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x0e, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x37, - 0x0a, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, - 0x16, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, - 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3b, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x17, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x55, 0x55, 0x49, - 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x42, 0x08, 0x5a, 0x06, 0x2e, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x32, 0x0a, 0x10, 0x62, 0x61, 0x74, 0x63, 0x68, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x0e, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x55, 0x55, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x37, 0x0a, 0x0c, 0x67, + 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x12, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, + 0x13, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x3c, 0x0a, 0x11, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x17, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x55, 0x55, 0x49, 0x44, 0x52, + 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x32, 0x0a, 0x11, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x41, + 0x6c, 0x6c, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x0d, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, + 0x55, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, + 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x28, 0x0a, 0x05, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x12, + 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x1a, + 0x0f, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x39, 0x0a, 0x0e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, + 0x72, 0x64, 0x12, 0x17, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x41, 0x0a, 0x12, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, + 0x72, 0x12, 0x1b, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, + 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x0e, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, + 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x42, 0x79, 0x49, 0x64, 0x12, 0x0d, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x55, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x37, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, + 0x14, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x73, 0x65, + 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2b, 0x0a, 0x0a, 0x64, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0d, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, + 0x55, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, + 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x31, 0x0a, 0x0f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x55, 0x55, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x37, 0x0a, 0x0d, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x16, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, + 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x3b, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x17, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x55, 0x55, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, + 0x0e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x42, + 0x08, 0x5a, 0x06, 0x2e, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( @@ -4652,183 +4681,183 @@ func file_rpc_core_proto_rawDescGZIP() []byte { var file_rpc_core_proto_msgTypes = make([]protoimpl.MessageInfo, 53) var file_rpc_core_proto_goTypes = []interface{}{ - (*UUIDsReq)(nil), // 0: core.UUIDsReq - (*DictionaryDetailReq)(nil), // 1: core.DictionaryDetailReq - (*GetUserListReq)(nil), // 2: core.GetUserListReq - (*ApiListReq)(nil), // 3: core.ApiListReq - (*MenuParamListResp)(nil), // 4: core.MenuParamListResp - (*PostListReq)(nil), // 5: core.PostListReq - (*CreateOrUpdateMenuReq)(nil), // 6: core.CreateOrUpdateMenuReq - (*MenuRoleListResp)(nil), // 7: core.MenuRoleListResp - (*IDsReq)(nil), // 8: core.IDsReq - (*BaseResp)(nil), // 9: core.BaseResp - (*PostInfo)(nil), // 10: core.PostInfo - (*PostListResp)(nil), // 11: core.PostListResp - (*MenuInfo)(nil), // 12: core.MenuInfo - (*OauthLoginReq)(nil), // 13: core.OauthLoginReq - (*ProviderInfo)(nil), // 14: core.ProviderInfo - (*DictionaryDetailList)(nil), // 15: core.DictionaryDetailList - (*UserInfoResp)(nil), // 16: core.UserInfoResp - (*DictionaryInfo)(nil), // 17: core.DictionaryInfo - (*UpdateProfileReq)(nil), // 18: core.UpdateProfileReq - (*LoginReq)(nil), // 19: core.LoginReq - (*UserListResp)(nil), // 20: core.UserListResp - (*PageInfoReq)(nil), // 21: core.PageInfoReq - (*MenuRoleInfo)(nil), // 22: core.MenuRoleInfo - (*CallbackReq)(nil), // 23: core.CallbackReq - (*TokenListReq)(nil), // 24: core.TokenListReq - (*ApiInfo)(nil), // 25: core.ApiInfo - (*ApiListResp)(nil), // 26: core.ApiListResp - (*DictionaryListReq)(nil), // 27: core.DictionaryListReq - (*RoleMenuAuthorityReq)(nil), // 28: core.RoleMenuAuthorityReq - (*UUIDReq)(nil), // 29: core.UUIDReq - (*RoleListResp)(nil), // 30: core.RoleListResp - (*RoleInfo)(nil), // 31: core.RoleInfo - (*LoginResp)(nil), // 32: core.LoginResp - (*RoleMenuAuthorityResp)(nil), // 33: core.RoleMenuAuthorityResp - (*DepartmentListReq)(nil), // 34: core.DepartmentListReq - (*DictionaryList)(nil), // 35: core.DictionaryList - (*Empty)(nil), // 36: core.Empty - (*DepartmentInfo)(nil), // 37: core.DepartmentInfo - (*DictionaryDetail)(nil), // 38: core.DictionaryDetail - (*ChangePasswordReq)(nil), // 39: core.ChangePasswordReq - (*OauthRedirectResp)(nil), // 40: core.OauthRedirectResp - (*ProviderListResp)(nil), // 41: core.ProviderListResp - (*StatusCodeReq)(nil), // 42: core.StatusCodeReq - (*StatusCodeUUIDReq)(nil), // 43: core.StatusCodeUUIDReq - (*DepartmentListResp)(nil), // 44: core.DepartmentListResp - (*TokenInfo)(nil), // 45: core.TokenInfo - (*CreateOrUpdateUserReq)(nil), // 46: core.CreateOrUpdateUserReq - (*MenuInfoList)(nil), // 47: core.MenuInfoList - (*CreateOrUpdateMenuParamReq)(nil), // 48: core.CreateOrUpdateMenuParamReq - (*TokenListResp)(nil), // 49: core.TokenListResp - (*MenuParamResp)(nil), // 50: core.MenuParamResp - (*IDReq)(nil), // 51: core.IDReq - (*Meta)(nil), // 52: core.Meta + (*ApiListReq)(nil), // 0: core.ApiListReq + (*BaseResp)(nil), // 1: core.BaseResp + (*DepartmentListReq)(nil), // 2: core.DepartmentListReq + (*PostListResp)(nil), // 3: core.PostListResp + (*StatusCodeUUIDReq)(nil), // 4: core.StatusCodeUUIDReq + (*UserListResp)(nil), // 5: core.UserListResp + (*ApiListResp)(nil), // 6: core.ApiListResp + (*Empty)(nil), // 7: core.Empty + (*UUIDReq)(nil), // 8: core.UUIDReq + (*DictionaryInfo)(nil), // 9: core.DictionaryInfo + (*DictionaryDetail)(nil), // 10: core.DictionaryDetail + (*DictionaryDetailList)(nil), // 11: core.DictionaryDetailList + (*OauthLoginReq)(nil), // 12: core.OauthLoginReq + (*ProviderListResp)(nil), // 13: core.ProviderListResp + (*PostListReq)(nil), // 14: core.PostListReq + (*TokenListResp)(nil), // 15: core.TokenListResp + (*UpdateProfileReq)(nil), // 16: core.UpdateProfileReq + (*DictionaryDetailReq)(nil), // 17: core.DictionaryDetailReq + (*MenuRoleListResp)(nil), // 18: core.MenuRoleListResp + (*ProviderInfo)(nil), // 19: core.ProviderInfo + (*UUIDsReq)(nil), // 20: core.UUIDsReq + (*IDReq)(nil), // 21: core.IDReq + (*Meta)(nil), // 22: core.Meta + (*RoleMenuAuthorityReq)(nil), // 23: core.RoleMenuAuthorityReq + (*MenuInfoList)(nil), // 24: core.MenuInfoList + (*MenuRoleInfo)(nil), // 25: core.MenuRoleInfo + (*CreateOrUpdateMenuParamReq)(nil), // 26: core.CreateOrUpdateMenuParamReq + (*MenuParamResp)(nil), // 27: core.MenuParamResp + (*LoginResp)(nil), // 28: core.LoginResp + (*DepartmentListResp)(nil), // 29: core.DepartmentListResp + (*CreateOrUpdateMenuReq)(nil), // 30: core.CreateOrUpdateMenuReq + (*ApiInfo)(nil), // 31: core.ApiInfo + (*DepartmentInfo)(nil), // 32: core.DepartmentInfo + (*PostInfo)(nil), // 33: core.PostInfo + (*RoleInfo)(nil), // 34: core.RoleInfo + (*IDsReq)(nil), // 35: core.IDsReq + (*MenuInfo)(nil), // 36: core.MenuInfo + (*UserInfoResp)(nil), // 37: core.UserInfoResp + (*StatusCodeReq)(nil), // 38: core.StatusCodeReq + (*DictionaryListReq)(nil), // 39: core.DictionaryListReq + (*MenuParamListResp)(nil), // 40: core.MenuParamListResp + (*GetUserListReq)(nil), // 41: core.GetUserListReq + (*PageInfoReq)(nil), // 42: core.PageInfoReq + (*TokenListReq)(nil), // 43: core.TokenListReq + (*ChangePasswordReq)(nil), // 44: core.ChangePasswordReq + (*CreateOrUpdateUserReq)(nil), // 45: core.CreateOrUpdateUserReq + (*RoleMenuAuthorityResp)(nil), // 46: core.RoleMenuAuthorityResp + (*DictionaryList)(nil), // 47: core.DictionaryList + (*OauthRedirectResp)(nil), // 48: core.OauthRedirectResp + (*CallbackReq)(nil), // 49: core.CallbackReq + (*RoleListResp)(nil), // 50: core.RoleListResp + (*TokenInfo)(nil), // 51: core.TokenInfo + (*LoginReq)(nil), // 52: core.LoginReq } var file_rpc_core_proto_depIdxs = []int32{ - 50, // 0: core.MenuParamListResp.data:type_name -> core.MenuParamResp - 52, // 1: core.CreateOrUpdateMenuReq.meta:type_name -> core.Meta - 22, // 2: core.MenuRoleListResp.data:type_name -> core.MenuRoleInfo - 10, // 3: core.PostListResp.data:type_name -> core.PostInfo - 52, // 4: core.MenuInfo.meta:type_name -> core.Meta - 38, // 5: core.DictionaryDetailList.data:type_name -> core.DictionaryDetail - 16, // 6: core.UserListResp.data:type_name -> core.UserInfoResp - 25, // 7: core.ApiListResp.data:type_name -> core.ApiInfo - 31, // 8: core.RoleListResp.data:type_name -> core.RoleInfo - 17, // 9: core.DictionaryList.data:type_name -> core.DictionaryInfo - 14, // 10: core.ProviderListResp.data:type_name -> core.ProviderInfo - 37, // 11: core.DepartmentListResp.data:type_name -> core.DepartmentInfo - 12, // 12: core.MenuInfoList.data:type_name -> core.MenuInfo - 45, // 13: core.TokenListResp.data:type_name -> core.TokenInfo - 25, // 14: core.Core.createOrUpdateApi:input_type -> core.ApiInfo - 51, // 15: core.Core.deleteApi:input_type -> core.IDReq - 3, // 16: core.Core.getApiList:input_type -> core.ApiListReq - 51, // 17: core.Core.getMenuAuthority:input_type -> core.IDReq - 28, // 18: core.Core.createOrUpdateMenuAuthority:input_type -> core.RoleMenuAuthorityReq - 36, // 19: core.Core.initDatabase:input_type -> core.Empty - 37, // 20: core.Core.createOrUpdateDepartment:input_type -> core.DepartmentInfo - 34, // 21: core.Core.getDepartmentList:input_type -> core.DepartmentListReq - 51, // 22: core.Core.deleteDepartment:input_type -> core.IDReq - 8, // 23: core.Core.batchDeleteDepartment:input_type -> core.IDsReq - 42, // 24: core.Core.updateDepartmentStatus:input_type -> core.StatusCodeReq - 17, // 25: core.Core.createOrUpdateDictionary:input_type -> core.DictionaryInfo - 51, // 26: core.Core.deleteDictionary:input_type -> core.IDReq - 27, // 27: core.Core.getDictionaryList:input_type -> core.DictionaryListReq - 1, // 28: core.Core.getDetailByDictionaryName:input_type -> core.DictionaryDetailReq - 38, // 29: core.Core.createOrUpdateDictionaryDetail:input_type -> core.DictionaryDetail - 51, // 30: core.Core.deleteDictionaryDetail:input_type -> core.IDReq - 6, // 31: core.Core.createOrUpdateMenu:input_type -> core.CreateOrUpdateMenuReq - 51, // 32: core.Core.deleteMenu:input_type -> core.IDReq - 51, // 33: core.Core.getMenuListByRole:input_type -> core.IDReq - 21, // 34: core.Core.getMenuList:input_type -> core.PageInfoReq - 48, // 35: core.Core.createOrUpdateMenuParam:input_type -> core.CreateOrUpdateMenuParamReq - 51, // 36: core.Core.deleteMenuParam:input_type -> core.IDReq - 51, // 37: core.Core.getMenuParamListByMenuId:input_type -> core.IDReq - 14, // 38: core.Core.createOrUpdateProvider:input_type -> core.ProviderInfo - 51, // 39: core.Core.deleteProvider:input_type -> core.IDReq - 21, // 40: core.Core.getProviderList:input_type -> core.PageInfoReq - 13, // 41: core.Core.oauthLogin:input_type -> core.OauthLoginReq - 23, // 42: core.Core.oauthCallback:input_type -> core.CallbackReq - 10, // 43: core.Core.createOrUpdatePost:input_type -> core.PostInfo - 5, // 44: core.Core.getPostList:input_type -> core.PostListReq - 51, // 45: core.Core.deletePost:input_type -> core.IDReq - 8, // 46: core.Core.batchDeletePost:input_type -> core.IDsReq - 42, // 47: core.Core.updatePostStatus:input_type -> core.StatusCodeReq - 31, // 48: core.Core.createOrUpdateRole:input_type -> core.RoleInfo - 51, // 49: core.Core.deleteRole:input_type -> core.IDReq - 51, // 50: core.Core.getRoleById:input_type -> core.IDReq - 21, // 51: core.Core.getRoleList:input_type -> core.PageInfoReq - 42, // 52: core.Core.updateRoleStatus:input_type -> core.StatusCodeReq - 45, // 53: core.Core.createOrUpdateToken:input_type -> core.TokenInfo - 29, // 54: core.Core.deleteToken:input_type -> core.UUIDReq - 0, // 55: core.Core.batchDeleteToken:input_type -> core.UUIDsReq - 24, // 56: core.Core.getTokenList:input_type -> core.TokenListReq - 43, // 57: core.Core.updateTokenStatus:input_type -> core.StatusCodeUUIDReq - 29, // 58: core.Core.blockUserAllToken:input_type -> core.UUIDReq - 19, // 59: core.Core.login:input_type -> core.LoginReq - 39, // 60: core.Core.changePassword:input_type -> core.ChangePasswordReq - 46, // 61: core.Core.createOrUpdateUser:input_type -> core.CreateOrUpdateUserReq - 29, // 62: core.Core.getUserById:input_type -> core.UUIDReq - 2, // 63: core.Core.getUserList:input_type -> core.GetUserListReq - 29, // 64: core.Core.deleteUser:input_type -> core.UUIDReq - 0, // 65: core.Core.batchDeleteUser:input_type -> core.UUIDsReq - 18, // 66: core.Core.updateProfile:input_type -> core.UpdateProfileReq - 43, // 67: core.Core.updateUserStatus:input_type -> core.StatusCodeUUIDReq - 9, // 68: core.Core.createOrUpdateApi:output_type -> core.BaseResp - 9, // 69: core.Core.deleteApi:output_type -> core.BaseResp - 26, // 70: core.Core.getApiList:output_type -> core.ApiListResp - 33, // 71: core.Core.getMenuAuthority:output_type -> core.RoleMenuAuthorityResp - 9, // 72: core.Core.createOrUpdateMenuAuthority:output_type -> core.BaseResp - 9, // 73: core.Core.initDatabase:output_type -> core.BaseResp - 9, // 74: core.Core.createOrUpdateDepartment:output_type -> core.BaseResp - 44, // 75: core.Core.getDepartmentList:output_type -> core.DepartmentListResp - 9, // 76: core.Core.deleteDepartment:output_type -> core.BaseResp - 9, // 77: core.Core.batchDeleteDepartment:output_type -> core.BaseResp - 9, // 78: core.Core.updateDepartmentStatus:output_type -> core.BaseResp - 9, // 79: core.Core.createOrUpdateDictionary:output_type -> core.BaseResp - 9, // 80: core.Core.deleteDictionary:output_type -> core.BaseResp - 35, // 81: core.Core.getDictionaryList:output_type -> core.DictionaryList - 15, // 82: core.Core.getDetailByDictionaryName:output_type -> core.DictionaryDetailList - 9, // 83: core.Core.createOrUpdateDictionaryDetail:output_type -> core.BaseResp - 9, // 84: core.Core.deleteDictionaryDetail:output_type -> core.BaseResp - 9, // 85: core.Core.createOrUpdateMenu:output_type -> core.BaseResp - 9, // 86: core.Core.deleteMenu:output_type -> core.BaseResp - 47, // 87: core.Core.getMenuListByRole:output_type -> core.MenuInfoList - 47, // 88: core.Core.getMenuList:output_type -> core.MenuInfoList - 9, // 89: core.Core.createOrUpdateMenuParam:output_type -> core.BaseResp - 9, // 90: core.Core.deleteMenuParam:output_type -> core.BaseResp - 4, // 91: core.Core.getMenuParamListByMenuId:output_type -> core.MenuParamListResp - 9, // 92: core.Core.createOrUpdateProvider:output_type -> core.BaseResp - 9, // 93: core.Core.deleteProvider:output_type -> core.BaseResp - 41, // 94: core.Core.getProviderList:output_type -> core.ProviderListResp - 40, // 95: core.Core.oauthLogin:output_type -> core.OauthRedirectResp - 32, // 96: core.Core.oauthCallback:output_type -> core.LoginResp - 9, // 97: core.Core.createOrUpdatePost:output_type -> core.BaseResp - 11, // 98: core.Core.getPostList:output_type -> core.PostListResp - 9, // 99: core.Core.deletePost:output_type -> core.BaseResp - 9, // 100: core.Core.batchDeletePost:output_type -> core.BaseResp - 9, // 101: core.Core.updatePostStatus:output_type -> core.BaseResp - 9, // 102: core.Core.createOrUpdateRole:output_type -> core.BaseResp - 9, // 103: core.Core.deleteRole:output_type -> core.BaseResp - 31, // 104: core.Core.getRoleById:output_type -> core.RoleInfo - 30, // 105: core.Core.getRoleList:output_type -> core.RoleListResp - 9, // 106: core.Core.updateRoleStatus:output_type -> core.BaseResp - 9, // 107: core.Core.createOrUpdateToken:output_type -> core.BaseResp - 9, // 108: core.Core.deleteToken:output_type -> core.BaseResp - 9, // 109: core.Core.batchDeleteToken:output_type -> core.BaseResp - 49, // 110: core.Core.getTokenList:output_type -> core.TokenListResp - 9, // 111: core.Core.updateTokenStatus:output_type -> core.BaseResp - 9, // 112: core.Core.blockUserAllToken:output_type -> core.BaseResp - 32, // 113: core.Core.login:output_type -> core.LoginResp - 9, // 114: core.Core.changePassword:output_type -> core.BaseResp - 9, // 115: core.Core.createOrUpdateUser:output_type -> core.BaseResp - 16, // 116: core.Core.getUserById:output_type -> core.UserInfoResp - 20, // 117: core.Core.getUserList:output_type -> core.UserListResp - 9, // 118: core.Core.deleteUser:output_type -> core.BaseResp - 9, // 119: core.Core.batchDeleteUser:output_type -> core.BaseResp - 9, // 120: core.Core.updateProfile:output_type -> core.BaseResp - 9, // 121: core.Core.updateUserStatus:output_type -> core.BaseResp + 33, // 0: core.PostListResp.data:type_name -> core.PostInfo + 37, // 1: core.UserListResp.data:type_name -> core.UserInfoResp + 31, // 2: core.ApiListResp.data:type_name -> core.ApiInfo + 10, // 3: core.DictionaryDetailList.data:type_name -> core.DictionaryDetail + 19, // 4: core.ProviderListResp.data:type_name -> core.ProviderInfo + 51, // 5: core.TokenListResp.data:type_name -> core.TokenInfo + 25, // 6: core.MenuRoleListResp.data:type_name -> core.MenuRoleInfo + 36, // 7: core.MenuInfoList.data:type_name -> core.MenuInfo + 32, // 8: core.DepartmentListResp.data:type_name -> core.DepartmentInfo + 22, // 9: core.CreateOrUpdateMenuReq.meta:type_name -> core.Meta + 22, // 10: core.MenuInfo.meta:type_name -> core.Meta + 27, // 11: core.MenuParamListResp.data:type_name -> core.MenuParamResp + 9, // 12: core.DictionaryList.data:type_name -> core.DictionaryInfo + 34, // 13: core.RoleListResp.data:type_name -> core.RoleInfo + 31, // 14: core.Core.createOrUpdateApi:input_type -> core.ApiInfo + 21, // 15: core.Core.deleteApi:input_type -> core.IDReq + 0, // 16: core.Core.getApiList:input_type -> core.ApiListReq + 21, // 17: core.Core.getMenuAuthority:input_type -> core.IDReq + 23, // 18: core.Core.createOrUpdateMenuAuthority:input_type -> core.RoleMenuAuthorityReq + 7, // 19: core.Core.initDatabase:input_type -> core.Empty + 32, // 20: core.Core.createOrUpdateDepartment:input_type -> core.DepartmentInfo + 2, // 21: core.Core.getDepartmentList:input_type -> core.DepartmentListReq + 21, // 22: core.Core.deleteDepartment:input_type -> core.IDReq + 35, // 23: core.Core.batchDeleteDepartment:input_type -> core.IDsReq + 38, // 24: core.Core.updateDepartmentStatus:input_type -> core.StatusCodeReq + 9, // 25: core.Core.createOrUpdateDictionary:input_type -> core.DictionaryInfo + 21, // 26: core.Core.deleteDictionary:input_type -> core.IDReq + 39, // 27: core.Core.getDictionaryList:input_type -> core.DictionaryListReq + 17, // 28: core.Core.getDetailByDictionaryName:input_type -> core.DictionaryDetailReq + 10, // 29: core.Core.createOrUpdateDictionaryDetail:input_type -> core.DictionaryDetail + 21, // 30: core.Core.deleteDictionaryDetail:input_type -> core.IDReq + 30, // 31: core.Core.createOrUpdateMenu:input_type -> core.CreateOrUpdateMenuReq + 21, // 32: core.Core.deleteMenu:input_type -> core.IDReq + 21, // 33: core.Core.getMenuListByRole:input_type -> core.IDReq + 42, // 34: core.Core.getMenuList:input_type -> core.PageInfoReq + 26, // 35: core.Core.createOrUpdateMenuParam:input_type -> core.CreateOrUpdateMenuParamReq + 21, // 36: core.Core.deleteMenuParam:input_type -> core.IDReq + 21, // 37: core.Core.getMenuParamListByMenuId:input_type -> core.IDReq + 19, // 38: core.Core.createOrUpdateProvider:input_type -> core.ProviderInfo + 21, // 39: core.Core.deleteProvider:input_type -> core.IDReq + 42, // 40: core.Core.getProviderList:input_type -> core.PageInfoReq + 12, // 41: core.Core.oauthLogin:input_type -> core.OauthLoginReq + 49, // 42: core.Core.oauthCallback:input_type -> core.CallbackReq + 33, // 43: core.Core.createOrUpdatePost:input_type -> core.PostInfo + 14, // 44: core.Core.getPostList:input_type -> core.PostListReq + 21, // 45: core.Core.deletePost:input_type -> core.IDReq + 35, // 46: core.Core.batchDeletePost:input_type -> core.IDsReq + 38, // 47: core.Core.updatePostStatus:input_type -> core.StatusCodeReq + 34, // 48: core.Core.createOrUpdateRole:input_type -> core.RoleInfo + 21, // 49: core.Core.deleteRole:input_type -> core.IDReq + 21, // 50: core.Core.getRoleById:input_type -> core.IDReq + 42, // 51: core.Core.getRoleList:input_type -> core.PageInfoReq + 38, // 52: core.Core.updateRoleStatus:input_type -> core.StatusCodeReq + 51, // 53: core.Core.createOrUpdateToken:input_type -> core.TokenInfo + 8, // 54: core.Core.deleteToken:input_type -> core.UUIDReq + 20, // 55: core.Core.batchDeleteToken:input_type -> core.UUIDsReq + 43, // 56: core.Core.getTokenList:input_type -> core.TokenListReq + 4, // 57: core.Core.updateTokenStatus:input_type -> core.StatusCodeUUIDReq + 8, // 58: core.Core.blockUserAllToken:input_type -> core.UUIDReq + 52, // 59: core.Core.login:input_type -> core.LoginReq + 44, // 60: core.Core.changePassword:input_type -> core.ChangePasswordReq + 45, // 61: core.Core.createOrUpdateUser:input_type -> core.CreateOrUpdateUserReq + 8, // 62: core.Core.getUserById:input_type -> core.UUIDReq + 41, // 63: core.Core.getUserList:input_type -> core.GetUserListReq + 8, // 64: core.Core.deleteUser:input_type -> core.UUIDReq + 20, // 65: core.Core.batchDeleteUser:input_type -> core.UUIDsReq + 16, // 66: core.Core.updateProfile:input_type -> core.UpdateProfileReq + 4, // 67: core.Core.updateUserStatus:input_type -> core.StatusCodeUUIDReq + 1, // 68: core.Core.createOrUpdateApi:output_type -> core.BaseResp + 1, // 69: core.Core.deleteApi:output_type -> core.BaseResp + 6, // 70: core.Core.getApiList:output_type -> core.ApiListResp + 46, // 71: core.Core.getMenuAuthority:output_type -> core.RoleMenuAuthorityResp + 1, // 72: core.Core.createOrUpdateMenuAuthority:output_type -> core.BaseResp + 1, // 73: core.Core.initDatabase:output_type -> core.BaseResp + 1, // 74: core.Core.createOrUpdateDepartment:output_type -> core.BaseResp + 29, // 75: core.Core.getDepartmentList:output_type -> core.DepartmentListResp + 1, // 76: core.Core.deleteDepartment:output_type -> core.BaseResp + 1, // 77: core.Core.batchDeleteDepartment:output_type -> core.BaseResp + 1, // 78: core.Core.updateDepartmentStatus:output_type -> core.BaseResp + 1, // 79: core.Core.createOrUpdateDictionary:output_type -> core.BaseResp + 1, // 80: core.Core.deleteDictionary:output_type -> core.BaseResp + 47, // 81: core.Core.getDictionaryList:output_type -> core.DictionaryList + 11, // 82: core.Core.getDetailByDictionaryName:output_type -> core.DictionaryDetailList + 1, // 83: core.Core.createOrUpdateDictionaryDetail:output_type -> core.BaseResp + 1, // 84: core.Core.deleteDictionaryDetail:output_type -> core.BaseResp + 1, // 85: core.Core.createOrUpdateMenu:output_type -> core.BaseResp + 1, // 86: core.Core.deleteMenu:output_type -> core.BaseResp + 24, // 87: core.Core.getMenuListByRole:output_type -> core.MenuInfoList + 24, // 88: core.Core.getMenuList:output_type -> core.MenuInfoList + 1, // 89: core.Core.createOrUpdateMenuParam:output_type -> core.BaseResp + 1, // 90: core.Core.deleteMenuParam:output_type -> core.BaseResp + 40, // 91: core.Core.getMenuParamListByMenuId:output_type -> core.MenuParamListResp + 1, // 92: core.Core.createOrUpdateProvider:output_type -> core.BaseResp + 1, // 93: core.Core.deleteProvider:output_type -> core.BaseResp + 13, // 94: core.Core.getProviderList:output_type -> core.ProviderListResp + 48, // 95: core.Core.oauthLogin:output_type -> core.OauthRedirectResp + 28, // 96: core.Core.oauthCallback:output_type -> core.LoginResp + 1, // 97: core.Core.createOrUpdatePost:output_type -> core.BaseResp + 3, // 98: core.Core.getPostList:output_type -> core.PostListResp + 1, // 99: core.Core.deletePost:output_type -> core.BaseResp + 1, // 100: core.Core.batchDeletePost:output_type -> core.BaseResp + 1, // 101: core.Core.updatePostStatus:output_type -> core.BaseResp + 1, // 102: core.Core.createOrUpdateRole:output_type -> core.BaseResp + 1, // 103: core.Core.deleteRole:output_type -> core.BaseResp + 34, // 104: core.Core.getRoleById:output_type -> core.RoleInfo + 50, // 105: core.Core.getRoleList:output_type -> core.RoleListResp + 1, // 106: core.Core.updateRoleStatus:output_type -> core.BaseResp + 1, // 107: core.Core.createOrUpdateToken:output_type -> core.BaseResp + 1, // 108: core.Core.deleteToken:output_type -> core.BaseResp + 1, // 109: core.Core.batchDeleteToken:output_type -> core.BaseResp + 15, // 110: core.Core.getTokenList:output_type -> core.TokenListResp + 1, // 111: core.Core.updateTokenStatus:output_type -> core.BaseResp + 1, // 112: core.Core.blockUserAllToken:output_type -> core.BaseResp + 28, // 113: core.Core.login:output_type -> core.LoginResp + 1, // 114: core.Core.changePassword:output_type -> core.BaseResp + 1, // 115: core.Core.createOrUpdateUser:output_type -> core.BaseResp + 37, // 116: core.Core.getUserById:output_type -> core.UserInfoResp + 5, // 117: core.Core.getUserList:output_type -> core.UserListResp + 1, // 118: core.Core.deleteUser:output_type -> core.BaseResp + 1, // 119: core.Core.batchDeleteUser:output_type -> core.BaseResp + 1, // 120: core.Core.updateProfile:output_type -> core.BaseResp + 1, // 121: core.Core.updateUserStatus:output_type -> core.BaseResp 68, // [68:122] is the sub-list for method output_type 14, // [14:68] is the sub-list for method input_type 14, // [14:14] is the sub-list for extension type_name @@ -4843,7 +4872,7 @@ func file_rpc_core_proto_init() { } if !protoimpl.UnsafeEnabled { file_rpc_core_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UUIDsReq); i { + switch v := v.(*ApiListReq); i { case 0: return &v.state case 1: @@ -4855,7 +4884,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DictionaryDetailReq); i { + switch v := v.(*BaseResp); i { case 0: return &v.state case 1: @@ -4867,7 +4896,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetUserListReq); i { + switch v := v.(*DepartmentListReq); i { case 0: return &v.state case 1: @@ -4879,7 +4908,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ApiListReq); i { + switch v := v.(*PostListResp); i { case 0: return &v.state case 1: @@ -4891,7 +4920,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MenuParamListResp); i { + switch v := v.(*StatusCodeUUIDReq); i { case 0: return &v.state case 1: @@ -4903,7 +4932,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PostListReq); i { + switch v := v.(*UserListResp); i { case 0: return &v.state case 1: @@ -4915,7 +4944,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateOrUpdateMenuReq); i { + switch v := v.(*ApiListResp); i { case 0: return &v.state case 1: @@ -4927,7 +4956,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MenuRoleListResp); i { + switch v := v.(*Empty); i { case 0: return &v.state case 1: @@ -4939,7 +4968,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IDsReq); i { + switch v := v.(*UUIDReq); i { case 0: return &v.state case 1: @@ -4951,7 +4980,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BaseResp); i { + switch v := v.(*DictionaryInfo); i { case 0: return &v.state case 1: @@ -4963,7 +4992,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PostInfo); i { + switch v := v.(*DictionaryDetail); i { case 0: return &v.state case 1: @@ -4975,7 +5004,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PostListResp); i { + switch v := v.(*DictionaryDetailList); i { case 0: return &v.state case 1: @@ -4987,7 +5016,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MenuInfo); i { + switch v := v.(*OauthLoginReq); i { case 0: return &v.state case 1: @@ -4999,7 +5028,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OauthLoginReq); i { + switch v := v.(*ProviderListResp); i { case 0: return &v.state case 1: @@ -5011,7 +5040,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProviderInfo); i { + switch v := v.(*PostListReq); i { case 0: return &v.state case 1: @@ -5023,7 +5052,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DictionaryDetailList); i { + switch v := v.(*TokenListResp); i { case 0: return &v.state case 1: @@ -5035,7 +5064,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UserInfoResp); i { + switch v := v.(*UpdateProfileReq); i { case 0: return &v.state case 1: @@ -5047,7 +5076,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DictionaryInfo); i { + switch v := v.(*DictionaryDetailReq); i { case 0: return &v.state case 1: @@ -5059,7 +5088,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateProfileReq); i { + switch v := v.(*MenuRoleListResp); i { case 0: return &v.state case 1: @@ -5071,7 +5100,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LoginReq); i { + switch v := v.(*ProviderInfo); i { case 0: return &v.state case 1: @@ -5083,7 +5112,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UserListResp); i { + switch v := v.(*UUIDsReq); i { case 0: return &v.state case 1: @@ -5095,7 +5124,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PageInfoReq); i { + switch v := v.(*IDReq); i { case 0: return &v.state case 1: @@ -5107,7 +5136,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MenuRoleInfo); i { + switch v := v.(*Meta); i { case 0: return &v.state case 1: @@ -5119,7 +5148,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CallbackReq); i { + switch v := v.(*RoleMenuAuthorityReq); i { case 0: return &v.state case 1: @@ -5131,7 +5160,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TokenListReq); i { + switch v := v.(*MenuInfoList); i { case 0: return &v.state case 1: @@ -5143,7 +5172,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ApiInfo); i { + switch v := v.(*MenuRoleInfo); i { case 0: return &v.state case 1: @@ -5155,7 +5184,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ApiListResp); i { + switch v := v.(*CreateOrUpdateMenuParamReq); i { case 0: return &v.state case 1: @@ -5167,7 +5196,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DictionaryListReq); i { + switch v := v.(*MenuParamResp); i { case 0: return &v.state case 1: @@ -5179,7 +5208,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RoleMenuAuthorityReq); i { + switch v := v.(*LoginResp); i { case 0: return &v.state case 1: @@ -5191,7 +5220,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UUIDReq); i { + switch v := v.(*DepartmentListResp); i { case 0: return &v.state case 1: @@ -5203,7 +5232,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RoleListResp); i { + switch v := v.(*CreateOrUpdateMenuReq); i { case 0: return &v.state case 1: @@ -5215,7 +5244,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RoleInfo); i { + switch v := v.(*ApiInfo); i { case 0: return &v.state case 1: @@ -5227,7 +5256,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LoginResp); i { + switch v := v.(*DepartmentInfo); i { case 0: return &v.state case 1: @@ -5239,7 +5268,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RoleMenuAuthorityResp); i { + switch v := v.(*PostInfo); i { case 0: return &v.state case 1: @@ -5251,7 +5280,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DepartmentListReq); i { + switch v := v.(*RoleInfo); i { case 0: return &v.state case 1: @@ -5263,7 +5292,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DictionaryList); i { + switch v := v.(*IDsReq); i { case 0: return &v.state case 1: @@ -5275,7 +5304,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Empty); i { + switch v := v.(*MenuInfo); i { case 0: return &v.state case 1: @@ -5287,7 +5316,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DepartmentInfo); i { + switch v := v.(*UserInfoResp); i { case 0: return &v.state case 1: @@ -5299,7 +5328,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DictionaryDetail); i { + switch v := v.(*StatusCodeReq); i { case 0: return &v.state case 1: @@ -5311,7 +5340,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChangePasswordReq); i { + switch v := v.(*DictionaryListReq); i { case 0: return &v.state case 1: @@ -5323,7 +5352,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OauthRedirectResp); i { + switch v := v.(*MenuParamListResp); i { case 0: return &v.state case 1: @@ -5335,7 +5364,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProviderListResp); i { + switch v := v.(*GetUserListReq); i { case 0: return &v.state case 1: @@ -5347,7 +5376,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatusCodeReq); i { + switch v := v.(*PageInfoReq); i { case 0: return &v.state case 1: @@ -5359,7 +5388,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatusCodeUUIDReq); i { + switch v := v.(*TokenListReq); i { case 0: return &v.state case 1: @@ -5371,7 +5400,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DepartmentListResp); i { + switch v := v.(*ChangePasswordReq); i { case 0: return &v.state case 1: @@ -5383,7 +5412,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TokenInfo); i { + switch v := v.(*CreateOrUpdateUserReq); i { case 0: return &v.state case 1: @@ -5395,7 +5424,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateOrUpdateUserReq); i { + switch v := v.(*RoleMenuAuthorityResp); i { case 0: return &v.state case 1: @@ -5407,7 +5436,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MenuInfoList); i { + switch v := v.(*DictionaryList); i { case 0: return &v.state case 1: @@ -5419,7 +5448,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateOrUpdateMenuParamReq); i { + switch v := v.(*OauthRedirectResp); i { case 0: return &v.state case 1: @@ -5431,7 +5460,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TokenListResp); i { + switch v := v.(*CallbackReq); i { case 0: return &v.state case 1: @@ -5443,7 +5472,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MenuParamResp); i { + switch v := v.(*RoleListResp); i { case 0: return &v.state case 1: @@ -5455,7 +5484,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IDReq); i { + switch v := v.(*TokenInfo); i { case 0: return &v.state case 1: @@ -5467,7 +5496,7 @@ func file_rpc_core_proto_init() { } } file_rpc_core_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Meta); i { + switch v := v.(*LoginReq); i { case 0: return &v.state case 1: