// Code generated by ent, DO NOT EDIT. package ent import ( "context" "fmt" "wechat-api/ent/contact" "wechat-api/ent/server" "wechat-api/ent/wx" ) const errInvalidPage = "INVALID_PAGE" const ( listField = "list" pageNumField = "pageNum" pageSizeField = "pageSize" ) type PageDetails struct { Page uint64 `json:"page"` Size uint64 `json:"size"` Total uint64 `json:"total"` } // OrderDirection defines the directions in which to order a list of items. type OrderDirection string const ( // OrderDirectionAsc specifies an ascending order. OrderDirectionAsc OrderDirection = "ASC" // OrderDirectionDesc specifies a descending order. OrderDirectionDesc OrderDirection = "DESC" ) // Validate the order direction value. func (o OrderDirection) Validate() error { if o != OrderDirectionAsc && o != OrderDirectionDesc { return fmt.Errorf("%s is not a valid OrderDirection", o) } return nil } // String implements fmt.Stringer interface. func (o OrderDirection) String() string { return string(o) } func (o OrderDirection) reverse() OrderDirection { if o == OrderDirectionDesc { return OrderDirectionAsc } return OrderDirectionDesc } const errInvalidPagination = "INVALID_PAGINATION" type ContactPager struct { Order contact.OrderOption Filter func(*ContactQuery) (*ContactQuery, error) } // ContactPaginateOption enables pagination customization. type ContactPaginateOption func(*ContactPager) // DefaultContactOrder is the default ordering of Contact. var DefaultContactOrder = Desc(contact.FieldID) func newContactPager(opts []ContactPaginateOption) (*ContactPager, error) { pager := &ContactPager{} for _, opt := range opts { opt(pager) } if pager.Order == nil { pager.Order = DefaultContactOrder } return pager, nil } func (p *ContactPager) ApplyFilter(query *ContactQuery) (*ContactQuery, error) { if p.Filter != nil { return p.Filter(query) } return query, nil } // ContactPageList is Contact PageList result. type ContactPageList struct { List []*Contact `json:"list"` PageDetails *PageDetails `json:"pageDetails"` } func (c *ContactQuery) Page( ctx context.Context, pageNum uint64, pageSize uint64, opts ...ContactPaginateOption, ) (*ContactPageList, error) { pager, err := newContactPager(opts) if err != nil { return nil, err } if c, err = pager.ApplyFilter(c); err != nil { return nil, err } ret := &ContactPageList{} ret.PageDetails = &PageDetails{ Page: pageNum, Size: pageSize, } count, err := c.Clone().Count(ctx) if err != nil { return nil, err } ret.PageDetails.Total = uint64(count) if pager.Order != nil { c = c.Order(pager.Order) } else { c = c.Order(DefaultContactOrder) } c = c.Offset(int((pageNum - 1) * pageSize)).Limit(int(pageSize)) list, err := c.All(ctx) if err != nil { return nil, err } ret.List = list return ret, nil } type ServerPager struct { Order server.OrderOption Filter func(*ServerQuery) (*ServerQuery, error) } // ServerPaginateOption enables pagination customization. type ServerPaginateOption func(*ServerPager) // DefaultServerOrder is the default ordering of Server. var DefaultServerOrder = Desc(server.FieldID) func newServerPager(opts []ServerPaginateOption) (*ServerPager, error) { pager := &ServerPager{} for _, opt := range opts { opt(pager) } if pager.Order == nil { pager.Order = DefaultServerOrder } return pager, nil } func (p *ServerPager) ApplyFilter(query *ServerQuery) (*ServerQuery, error) { if p.Filter != nil { return p.Filter(query) } return query, nil } // ServerPageList is Server PageList result. type ServerPageList struct { List []*Server `json:"list"` PageDetails *PageDetails `json:"pageDetails"` } func (s *ServerQuery) Page( ctx context.Context, pageNum uint64, pageSize uint64, opts ...ServerPaginateOption, ) (*ServerPageList, error) { pager, err := newServerPager(opts) if err != nil { return nil, err } if s, err = pager.ApplyFilter(s); err != nil { return nil, err } ret := &ServerPageList{} ret.PageDetails = &PageDetails{ Page: pageNum, Size: pageSize, } count, err := s.Clone().Count(ctx) if err != nil { return nil, err } ret.PageDetails.Total = uint64(count) if pager.Order != nil { s = s.Order(pager.Order) } else { s = s.Order(DefaultServerOrder) } s = s.Offset(int((pageNum - 1) * pageSize)).Limit(int(pageSize)) list, err := s.All(ctx) if err != nil { return nil, err } ret.List = list return ret, nil } type WxPager struct { Order wx.OrderOption Filter func(*WxQuery) (*WxQuery, error) } // WxPaginateOption enables pagination customization. type WxPaginateOption func(*WxPager) // DefaultWxOrder is the default ordering of Wx. var DefaultWxOrder = Desc(wx.FieldID) func newWxPager(opts []WxPaginateOption) (*WxPager, error) { pager := &WxPager{} for _, opt := range opts { opt(pager) } if pager.Order == nil { pager.Order = DefaultWxOrder } return pager, nil } func (p *WxPager) ApplyFilter(query *WxQuery) (*WxQuery, error) { if p.Filter != nil { return p.Filter(query) } return query, nil } // WxPageList is Wx PageList result. type WxPageList struct { List []*Wx `json:"list"` PageDetails *PageDetails `json:"pageDetails"` } func (w *WxQuery) Page( ctx context.Context, pageNum uint64, pageSize uint64, opts ...WxPaginateOption, ) (*WxPageList, error) { pager, err := newWxPager(opts) if err != nil { return nil, err } if w, err = pager.ApplyFilter(w); err != nil { return nil, err } ret := &WxPageList{} ret.PageDetails = &PageDetails{ Page: pageNum, Size: pageSize, } count, err := w.Clone().Count(ctx) if err != nil { return nil, err } ret.PageDetails.Total = uint64(count) if pager.Order != nil { w = w.Order(pager.Order) } else { w = w.Order(DefaultWxOrder) } w = w.Offset(int((pageNum - 1) * pageSize)).Limit(int(pageSize)) list, err := w.All(ctx) if err != nil { return nil, err } ret.List = list return ret, nil }