diff --git a/log/client.go b/log/client.go index 97ae04aa8c39c23520a48b0850b7921c0f6f230c..65413f4f5ea9fd6d99b8d87bea668b6c585ba391 100644 --- a/log/client.go +++ b/log/client.go @@ -5,7 +5,6 @@ import ( errorsgrpc "git.perx.ru/perxis/perxis-go/pkg/errors/grpc" "git.perx.ru/perxis/perxis-go/pkg/options" - "git.perx.ru/perxis/perxis-go/proto/common" pb "git.perx.ru/perxis/perxis-go/proto/log" "google.golang.org/grpc" ) @@ -37,20 +36,15 @@ func (c *Client) Log(ctx context.Context, entries []*Entry) error { return nil } -func (c *Client) Find(ctx context.Context, filter *Filter, options *options.FindOptions) (*FindResult, error) { +func (c *Client) Find(ctx context.Context, filter *Filter, opts *options.FindOptions) (*FindResult, error) { request := new(pb.FindRequest) + if filter != nil { request.Filter = &pb.Filter{Q: filter.Q} } - if options != nil { - request.Options = &common.FindOptions{ - Sort: options.Sort, - Offset: int32(options.Offset), - Limit: int32(options.Limit), - PageSize: int32(options.PageSize), - PageNum: int32(options.PageNum), - } - } + + request.Options = options.FindOptionsToPB(opts) + response, err := c.client.Find(ctx, request) if err != nil { return nil, err diff --git a/pkg/extension/schema.go b/pkg/extension/schema.go index 501de9a247c3ba4240dc50ba641d7e2c56a1d2fc..521ebad6428dbd308228090469f369367e65068d 100644 --- a/pkg/extension/schema.go +++ b/pkg/extension/schema.go @@ -72,7 +72,7 @@ func NewActionsCollection(spaceID, envID string) *collections.Collection { // UI sch.Field.UI.ListView = &field.View{Options: map[string]interface{}{ - "fields": []interface{}{"name", "action", "kind", "updated_at", "updated_by", "state"}, + "fields": []interface{}{"icon", "name", "action", "kind", "updated_at", "updated_by", "state"}, "sort": []interface{}{"name"}, "page_size": float64(50), }} diff --git a/pkg/options/options.go b/pkg/options/options.go index 09296f359d42e838f4389cc106d8d93bc955cfd6..066d3f8aa347a4b08fb901c87e2fc9afee7aa15f 100644 --- a/pkg/options/options.go +++ b/pkg/options/options.go @@ -1,6 +1,10 @@ package options -import "time" +import ( + "time" + + commonpb "git.perx.ru/perxis/perxis-go/proto/common" +) // SortOptions настройки сортировки результатов type SortOptions struct { @@ -82,6 +86,56 @@ func MergeFindOptions(opts ...interface{}) *FindOptions { return fo } +func FindOptionsFromPB(protoOpts *commonpb.FindOptions) *FindOptions { + if protoOpts == nil { + return nil + } + fo := &FindOptions{ + SortOptions: SortOptions{ + Sort: protoOpts.Sort, + }, + PaginationOptions: PaginationOptions{ + Offset: int(protoOpts.Offset), + Limit: int(protoOpts.Limit), + }, + FieldOptions: FieldOptions{ + Fields: protoOpts.Fields, + ExcludeFields: protoOpts.ExcludeFields, + }, + } + + if fo.Offset == 0 && fo.Limit == 0 && fo.PageSize != 0 { + fo.Offset = fo.PageSize * (fo.PageNum - 1) + fo.Limit = fo.PageSize + } + + return fo +} + +func FindOptionsToPB(opts *FindOptions) *commonpb.FindOptions { + if opts == nil { + return nil + } + fo := &commonpb.FindOptions{ + Sort: opts.Sort, + PageNum: int32(opts.PageNum), + PageSize: int32(opts.PageSize), + Offset: int32(opts.Offset), + Limit: int32(opts.Limit), + Fields: opts.Fields, + ExcludeFields: opts.ExcludeFields, + } + if fo.PageSize != 0 && fo.Limit == 0 { + fo.Limit = fo.PageSize + fo.Offset = fo.PageSize * (fo.PageNum - 1) + } + if fo.Limit != 0 && fo.PageSize == 0 { + fo.PageSize = fo.Limit + fo.PageNum = fo.Offset / fo.Limit + } + return fo +} + type TimeFilter struct { Before, After time.Time }