diff --git a/pkg/invitations/transport/grpc/protobuf_type_converters.microgen.go b/pkg/invitations/transport/grpc/protobuf_type_converters.microgen.go index ee7b788e2bf670b9f885c0fa3d9a52cbff30502e..1b222519b0aacc35feb180e0273ac9758394aefe 100644 --- a/pkg/invitations/transport/grpc/protobuf_type_converters.microgen.go +++ b/pkg/invitations/transport/grpc/protobuf_type_converters.microgen.go @@ -104,11 +104,18 @@ func PtrServicesFindOptionsToProto(opts *options.FindOptions) (*pb.FindOptions, if opts == nil { return nil, nil } - return &pb.FindOptions{ + + fo := &pb.FindOptions{ Sort: opts.Sort, - PageNum: int32(opts.PageNum), - PageSize: int32(opts.PageSize), - }, nil + PageSize: int32(opts.Limit), + } + + if opts.Limit != 0 { + // Потенциальная ошибка если offset не кратен limit + fo.PageNum = int32(opts.Offset / opts.Limit) + } + + return fo, nil } func ProtoToPtrServicesFindOptions(protoOpts *pb.FindOptions) (*options.FindOptions, error) { @@ -120,8 +127,8 @@ func ProtoToPtrServicesFindOptions(protoOpts *pb.FindOptions) (*options.FindOpti Sort: protoOpts.Sort, }, PaginationOptions: options.PaginationOptions{ - PageNum: int(protoOpts.PageNum), - PageSize: int(protoOpts.PageSize), + Limit: int(protoOpts.PageSize), + Offset: int(protoOpts.PageNum * protoOpts.PageSize), }, }, nil } diff --git a/pkg/items/dummy.go b/pkg/items/dummy.go index a31b47c7095e29471321c90ef9b5307850147b73..29b2f59357b45febd23c59fb248877e0886f5bbc 100644 --- a/pkg/items/dummy.go +++ b/pkg/items/dummy.go @@ -25,18 +25,10 @@ type DummyWithOptions struct { func (d *DummyWithOptions) Find(_ context.Context, _, _, _ string, _ *Filter, opts ...*FindOptions) ([]*Item, int, error) { fo := MergeFindOptions(opts...) - limit := fo.Limit - if limit == 0 { - limit = fo.PageSize - } - return make([]*Item, limit), d.Total, nil + return make([]*Item, fo.Limit), d.Total, nil } func (d *DummyWithOptions) FindPublished(_ context.Context, _, _, _ string, _ *Filter, opts ...*FindPublishedOptions) ([]*Item, int, error) { fo := MergeFindPublishedOptions(opts...) - limit := fo.Limit - if limit == 0 { - limit = fo.PageSize - } - return make([]*Item, limit), d.Total, nil + return make([]*Item, fo.Limit), d.Total, nil } diff --git a/pkg/items/pagination.go b/pkg/items/pagination.go index f9461079ede21d815f77780d4d1c1adfb20bcc17..c8c4bb16d2da0d2d10e3d98422aaf345ffbf7c21 100644 --- a/pkg/items/pagination.go +++ b/pkg/items/pagination.go @@ -96,18 +96,12 @@ func (b *BatchProcessor) Do(ctx context.Context, f func(batch []*Item) error) (i b.FindOptions = new(FindOptions) } if b.FindOptions != nil { - b.limit = b.FindOptions.PageSize + b.limit = b.FindOptions.Limit b.sort = b.FindOptions.Sort - if b.FindOptions.Limit != 0 { - b.limit = b.FindOptions.Limit - } } if b.FindPublishedOptions != nil { - b.limit = b.FindPublishedOptions.PageSize + b.limit = b.FindPublishedOptions.Limit b.sort = b.FindPublishedOptions.Sort - if b.FindPublishedOptions.Limit != 0 { - b.limit = b.FindPublishedOptions.Limit - } } if b.limit == 0 { diff --git a/pkg/options/options.go b/pkg/options/options.go index cb0bd504ec0593d5b24f647d03dd54fc1cc291f4..d18ca338c01a7d0e2117a0e09f47d1a21421bdd1 100644 --- a/pkg/options/options.go +++ b/pkg/options/options.go @@ -13,10 +13,6 @@ type SortOptions struct { // PaginationOptions настройки возвращаемых страниц результатов type PaginationOptions struct { - //Deprecated - PageNum int - PageSize int - Limit int Offset int } @@ -101,8 +97,6 @@ func FindOptionsFromPB(protoOpts *commonpb.FindOptions) *FindOptions { Sort: protoOpts.Sort, }, PaginationOptions: PaginationOptions{ - PageNum: int(protoOpts.PageNum), - PageSize: int(protoOpts.PageSize), Limit: int(protoOpts.Limit), Offset: int(protoOpts.Offset), }, @@ -112,9 +106,9 @@ func FindOptionsFromPB(protoOpts *commonpb.FindOptions) *FindOptions { }, } - if fo.Offset == 0 && fo.Limit == 0 && fo.PageSize != 0 { - fo.Offset = fo.PageSize * fo.PageNum - fo.Limit = fo.PageSize + if fo.Offset == 0 && fo.Limit == 0 { + fo.Offset = int(protoOpts.PageSize * protoOpts.PageNum) + fo.Limit = int(protoOpts.PageSize) } return fo @@ -126,21 +120,11 @@ func FindOptionsToPB(opts *FindOptions) *commonpb.FindOptions { } 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 - } - if fo.Limit != 0 && fo.PageSize == 0 { - fo.PageSize = fo.Limit - fo.PageNum = fo.Offset / fo.Limit - } return fo } @@ -164,11 +148,9 @@ func MergeSortOptions(options ...SortOptions) SortOptions { func MergePaginationOptions(options ...PaginationOptions) PaginationOptions { fo := PaginationOptions{} for _, opt := range options { - if opt.PageSize == 0 && opt.PageNum == 0 && opt.Offset == 0 && opt.Limit == 0 { + if opt.Offset == 0 && opt.Limit == 0 { continue } - fo.PageNum = opt.PageNum - fo.PageSize = opt.PageSize fo.Offset = opt.Offset fo.Limit = opt.Limit } diff --git a/pkg/options/options_test.go b/pkg/options/options_test.go index da9e71dd99910c1a609eeba081a668c460cbaa1d..d2227a875a837c67006eab028f235afcbd1efe5e 100644 --- a/pkg/options/options_test.go +++ b/pkg/options/options_test.go @@ -22,32 +22,6 @@ func TestOptions_MergePaginationOptions(t *testing.T) { options: []PaginationOptions{}, expected: PaginationOptions{}, }, - { - name: "One page option", - options: []PaginationOptions{{PageNum: 10, PageSize: 100}}, - expected: PaginationOptions{PageNum: 10, PageSize: 100}, - }, - { - name: "Merge pages #1", - options: []PaginationOptions{{PageNum: 0, PageSize: 0}, {PageNum: 10, PageSize: 100}}, - expected: PaginationOptions{PageNum: 10, PageSize: 100}, - }, - { - name: "Merge pages #2", - options: []PaginationOptions{{PageNum: 10, PageSize: 100}, {PageNum: 0, PageSize: 0}}, - expected: PaginationOptions{PageNum: 10, PageSize: 100}, - }, - { - name: "Merge pages #3", - options: []PaginationOptions{{PageNum: 0, PageSize: 0}, {PageNum: 10, PageSize: 100}, {PageNum: 0, PageSize: 0}}, - expected: PaginationOptions{PageNum: 10, PageSize: 100}, - }, - { - name: "Merge pages #4", - options: []PaginationOptions{{PageNum: 10, PageSize: 100}, {}}, - expected: PaginationOptions{PageNum: 10, PageSize: 100}, - }, - { name: "One limit/offset option", options: []PaginationOptions{{Limit: 10, Offset: 100}},