Skip to content
Snippets Groups Projects
Commit 390c4294 authored by ko_oler's avatar ko_oler
Browse files

добавлены методы FindOptionsFromPB и FindOptionsToPB

parent 6b60cd37
No related branches found
No related tags found
No related merge requests found
package options package options
import "time" import (
"time"
commonpb "git.perx.ru/perxis/perxis-go/proto/common"
)
// SortOptions настройки сортировки результатов // SortOptions настройки сортировки результатов
type SortOptions struct { type SortOptions struct {
...@@ -82,6 +86,56 @@ func MergeFindOptions(opts ...interface{}) *FindOptions { ...@@ -82,6 +86,56 @@ func MergeFindOptions(opts ...interface{}) *FindOptions {
return fo 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 { type TimeFilter struct {
Before, After time.Time Before, After time.Time
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment