// Code generated by ent, DO NOT EDIT. package ent import ( "context" "fmt" "wechat-api/ent/agent" "wechat-api/ent/batchmsg" "wechat-api/ent/contact" "wechat-api/ent/employee" "wechat-api/ent/label" "wechat-api/ent/labelrelationship" "wechat-api/ent/message" "wechat-api/ent/messagerecords" "wechat-api/ent/msg" "wechat-api/ent/server" "wechat-api/ent/sopnode" "wechat-api/ent/sopstage" "wechat-api/ent/soptask" "wechat-api/ent/token" "wechat-api/ent/tutorial" "wechat-api/ent/workexperience" "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 AgentPager struct { Order agent.OrderOption Filter func(*AgentQuery) (*AgentQuery, error) } // AgentPaginateOption enables pagination customization. type AgentPaginateOption func(*AgentPager) // DefaultAgentOrder is the default ordering of Agent. var DefaultAgentOrder = Desc(agent.FieldID) func newAgentPager(opts []AgentPaginateOption) (*AgentPager, error) { pager := &AgentPager{} for _, opt := range opts { opt(pager) } if pager.Order == nil { pager.Order = DefaultAgentOrder } return pager, nil } func (p *AgentPager) ApplyFilter(query *AgentQuery) (*AgentQuery, error) { if p.Filter != nil { return p.Filter(query) } return query, nil } // AgentPageList is Agent PageList result. type AgentPageList struct { List []*Agent `json:"list"` PageDetails *PageDetails `json:"pageDetails"` } func (a *AgentQuery) Page( ctx context.Context, pageNum uint64, pageSize uint64, opts ...AgentPaginateOption, ) (*AgentPageList, error) { pager, err := newAgentPager(opts) if err != nil { return nil, err } if a, err = pager.ApplyFilter(a); err != nil { return nil, err } ret := &AgentPageList{} ret.PageDetails = &PageDetails{ Page: pageNum, Size: pageSize, } query := a.Clone() query.ctx.Fields = nil count, err := query.Count(ctx) if err != nil { return nil, err } ret.PageDetails.Total = uint64(count) if pager.Order != nil { a = a.Order(pager.Order) } else { a = a.Order(DefaultAgentOrder) } a = a.Offset(int((pageNum - 1) * pageSize)).Limit(int(pageSize)) list, err := a.All(ctx) if err != nil { return nil, err } ret.List = list return ret, nil } type BatchMsgPager struct { Order batchmsg.OrderOption Filter func(*BatchMsgQuery) (*BatchMsgQuery, error) } // BatchMsgPaginateOption enables pagination customization. type BatchMsgPaginateOption func(*BatchMsgPager) // DefaultBatchMsgOrder is the default ordering of BatchMsg. var DefaultBatchMsgOrder = Desc(batchmsg.FieldID) func newBatchMsgPager(opts []BatchMsgPaginateOption) (*BatchMsgPager, error) { pager := &BatchMsgPager{} for _, opt := range opts { opt(pager) } if pager.Order == nil { pager.Order = DefaultBatchMsgOrder } return pager, nil } func (p *BatchMsgPager) ApplyFilter(query *BatchMsgQuery) (*BatchMsgQuery, error) { if p.Filter != nil { return p.Filter(query) } return query, nil } // BatchMsgPageList is BatchMsg PageList result. type BatchMsgPageList struct { List []*BatchMsg `json:"list"` PageDetails *PageDetails `json:"pageDetails"` } func (bm *BatchMsgQuery) Page( ctx context.Context, pageNum uint64, pageSize uint64, opts ...BatchMsgPaginateOption, ) (*BatchMsgPageList, error) { pager, err := newBatchMsgPager(opts) if err != nil { return nil, err } if bm, err = pager.ApplyFilter(bm); err != nil { return nil, err } ret := &BatchMsgPageList{} ret.PageDetails = &PageDetails{ Page: pageNum, Size: pageSize, } query := bm.Clone() query.ctx.Fields = nil count, err := query.Count(ctx) if err != nil { return nil, err } ret.PageDetails.Total = uint64(count) if pager.Order != nil { bm = bm.Order(pager.Order) } else { bm = bm.Order(DefaultBatchMsgOrder) } bm = bm.Offset(int((pageNum - 1) * pageSize)).Limit(int(pageSize)) list, err := bm.All(ctx) if err != nil { return nil, err } ret.List = list return ret, nil } 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, } query := c.Clone() query.ctx.Fields = nil count, err := query.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 EmployeePager struct { Order employee.OrderOption Filter func(*EmployeeQuery) (*EmployeeQuery, error) } // EmployeePaginateOption enables pagination customization. type EmployeePaginateOption func(*EmployeePager) // DefaultEmployeeOrder is the default ordering of Employee. var DefaultEmployeeOrder = Desc(employee.FieldID) func newEmployeePager(opts []EmployeePaginateOption) (*EmployeePager, error) { pager := &EmployeePager{} for _, opt := range opts { opt(pager) } if pager.Order == nil { pager.Order = DefaultEmployeeOrder } return pager, nil } func (p *EmployeePager) ApplyFilter(query *EmployeeQuery) (*EmployeeQuery, error) { if p.Filter != nil { return p.Filter(query) } return query, nil } // EmployeePageList is Employee PageList result. type EmployeePageList struct { List []*Employee `json:"list"` PageDetails *PageDetails `json:"pageDetails"` } func (e *EmployeeQuery) Page( ctx context.Context, pageNum uint64, pageSize uint64, opts ...EmployeePaginateOption, ) (*EmployeePageList, error) { pager, err := newEmployeePager(opts) if err != nil { return nil, err } if e, err = pager.ApplyFilter(e); err != nil { return nil, err } ret := &EmployeePageList{} ret.PageDetails = &PageDetails{ Page: pageNum, Size: pageSize, } query := e.Clone() query.ctx.Fields = nil count, err := query.Count(ctx) if err != nil { return nil, err } ret.PageDetails.Total = uint64(count) if pager.Order != nil { e = e.Order(pager.Order) } else { e = e.Order(DefaultEmployeeOrder) } e = e.Offset(int((pageNum - 1) * pageSize)).Limit(int(pageSize)) list, err := e.All(ctx) if err != nil { return nil, err } ret.List = list return ret, nil } type LabelPager struct { Order label.OrderOption Filter func(*LabelQuery) (*LabelQuery, error) } // LabelPaginateOption enables pagination customization. type LabelPaginateOption func(*LabelPager) // DefaultLabelOrder is the default ordering of Label. var DefaultLabelOrder = Desc(label.FieldID) func newLabelPager(opts []LabelPaginateOption) (*LabelPager, error) { pager := &LabelPager{} for _, opt := range opts { opt(pager) } if pager.Order == nil { pager.Order = DefaultLabelOrder } return pager, nil } func (p *LabelPager) ApplyFilter(query *LabelQuery) (*LabelQuery, error) { if p.Filter != nil { return p.Filter(query) } return query, nil } // LabelPageList is Label PageList result. type LabelPageList struct { List []*Label `json:"list"` PageDetails *PageDetails `json:"pageDetails"` } func (l *LabelQuery) Page( ctx context.Context, pageNum uint64, pageSize uint64, opts ...LabelPaginateOption, ) (*LabelPageList, error) { pager, err := newLabelPager(opts) if err != nil { return nil, err } if l, err = pager.ApplyFilter(l); err != nil { return nil, err } ret := &LabelPageList{} ret.PageDetails = &PageDetails{ Page: pageNum, Size: pageSize, } query := l.Clone() query.ctx.Fields = nil count, err := query.Count(ctx) if err != nil { return nil, err } ret.PageDetails.Total = uint64(count) if pager.Order != nil { l = l.Order(pager.Order) } else { l = l.Order(DefaultLabelOrder) } l = l.Offset(int((pageNum - 1) * pageSize)).Limit(int(pageSize)) list, err := l.All(ctx) if err != nil { return nil, err } ret.List = list return ret, nil } type LabelRelationshipPager struct { Order labelrelationship.OrderOption Filter func(*LabelRelationshipQuery) (*LabelRelationshipQuery, error) } // LabelRelationshipPaginateOption enables pagination customization. type LabelRelationshipPaginateOption func(*LabelRelationshipPager) // DefaultLabelRelationshipOrder is the default ordering of LabelRelationship. var DefaultLabelRelationshipOrder = Desc(labelrelationship.FieldID) func newLabelRelationshipPager(opts []LabelRelationshipPaginateOption) (*LabelRelationshipPager, error) { pager := &LabelRelationshipPager{} for _, opt := range opts { opt(pager) } if pager.Order == nil { pager.Order = DefaultLabelRelationshipOrder } return pager, nil } func (p *LabelRelationshipPager) ApplyFilter(query *LabelRelationshipQuery) (*LabelRelationshipQuery, error) { if p.Filter != nil { return p.Filter(query) } return query, nil } // LabelRelationshipPageList is LabelRelationship PageList result. type LabelRelationshipPageList struct { List []*LabelRelationship `json:"list"` PageDetails *PageDetails `json:"pageDetails"` } func (lr *LabelRelationshipQuery) Page( ctx context.Context, pageNum uint64, pageSize uint64, opts ...LabelRelationshipPaginateOption, ) (*LabelRelationshipPageList, error) { pager, err := newLabelRelationshipPager(opts) if err != nil { return nil, err } if lr, err = pager.ApplyFilter(lr); err != nil { return nil, err } ret := &LabelRelationshipPageList{} ret.PageDetails = &PageDetails{ Page: pageNum, Size: pageSize, } query := lr.Clone() query.ctx.Fields = nil count, err := query.Count(ctx) if err != nil { return nil, err } ret.PageDetails.Total = uint64(count) if pager.Order != nil { lr = lr.Order(pager.Order) } else { lr = lr.Order(DefaultLabelRelationshipOrder) } lr = lr.Offset(int((pageNum - 1) * pageSize)).Limit(int(pageSize)) list, err := lr.All(ctx) if err != nil { return nil, err } ret.List = list return ret, nil } type MessagePager struct { Order message.OrderOption Filter func(*MessageQuery) (*MessageQuery, error) } // MessagePaginateOption enables pagination customization. type MessagePaginateOption func(*MessagePager) // DefaultMessageOrder is the default ordering of Message. var DefaultMessageOrder = Desc(message.FieldID) func newMessagePager(opts []MessagePaginateOption) (*MessagePager, error) { pager := &MessagePager{} for _, opt := range opts { opt(pager) } if pager.Order == nil { pager.Order = DefaultMessageOrder } return pager, nil } func (p *MessagePager) ApplyFilter(query *MessageQuery) (*MessageQuery, error) { if p.Filter != nil { return p.Filter(query) } return query, nil } // MessagePageList is Message PageList result. type MessagePageList struct { List []*Message `json:"list"` PageDetails *PageDetails `json:"pageDetails"` } func (m *MessageQuery) Page( ctx context.Context, pageNum uint64, pageSize uint64, opts ...MessagePaginateOption, ) (*MessagePageList, error) { pager, err := newMessagePager(opts) if err != nil { return nil, err } if m, err = pager.ApplyFilter(m); err != nil { return nil, err } ret := &MessagePageList{} ret.PageDetails = &PageDetails{ Page: pageNum, Size: pageSize, } query := m.Clone() query.ctx.Fields = nil count, err := query.Count(ctx) if err != nil { return nil, err } ret.PageDetails.Total = uint64(count) if pager.Order != nil { m = m.Order(pager.Order) } else { m = m.Order(DefaultMessageOrder) } m = m.Offset(int((pageNum - 1) * pageSize)).Limit(int(pageSize)) list, err := m.All(ctx) if err != nil { return nil, err } ret.List = list return ret, nil } type MessageRecordsPager struct { Order messagerecords.OrderOption Filter func(*MessageRecordsQuery) (*MessageRecordsQuery, error) } // MessageRecordsPaginateOption enables pagination customization. type MessageRecordsPaginateOption func(*MessageRecordsPager) // DefaultMessageRecordsOrder is the default ordering of MessageRecords. var DefaultMessageRecordsOrder = Desc(messagerecords.FieldID) func newMessageRecordsPager(opts []MessageRecordsPaginateOption) (*MessageRecordsPager, error) { pager := &MessageRecordsPager{} for _, opt := range opts { opt(pager) } if pager.Order == nil { pager.Order = DefaultMessageRecordsOrder } return pager, nil } func (p *MessageRecordsPager) ApplyFilter(query *MessageRecordsQuery) (*MessageRecordsQuery, error) { if p.Filter != nil { return p.Filter(query) } return query, nil } // MessageRecordsPageList is MessageRecords PageList result. type MessageRecordsPageList struct { List []*MessageRecords `json:"list"` PageDetails *PageDetails `json:"pageDetails"` } func (mr *MessageRecordsQuery) Page( ctx context.Context, pageNum uint64, pageSize uint64, opts ...MessageRecordsPaginateOption, ) (*MessageRecordsPageList, error) { pager, err := newMessageRecordsPager(opts) if err != nil { return nil, err } if mr, err = pager.ApplyFilter(mr); err != nil { return nil, err } ret := &MessageRecordsPageList{} ret.PageDetails = &PageDetails{ Page: pageNum, Size: pageSize, } query := mr.Clone() query.ctx.Fields = nil count, err := query.Count(ctx) if err != nil { return nil, err } ret.PageDetails.Total = uint64(count) if pager.Order != nil { mr = mr.Order(pager.Order) } else { mr = mr.Order(DefaultMessageRecordsOrder) } mr = mr.Offset(int((pageNum - 1) * pageSize)).Limit(int(pageSize)) list, err := mr.All(ctx) if err != nil { return nil, err } ret.List = list return ret, nil } type MsgPager struct { Order msg.OrderOption Filter func(*MsgQuery) (*MsgQuery, error) } // MsgPaginateOption enables pagination customization. type MsgPaginateOption func(*MsgPager) // DefaultMsgOrder is the default ordering of Msg. var DefaultMsgOrder = Desc(msg.FieldID) func newMsgPager(opts []MsgPaginateOption) (*MsgPager, error) { pager := &MsgPager{} for _, opt := range opts { opt(pager) } if pager.Order == nil { pager.Order = DefaultMsgOrder } return pager, nil } func (p *MsgPager) ApplyFilter(query *MsgQuery) (*MsgQuery, error) { if p.Filter != nil { return p.Filter(query) } return query, nil } // MsgPageList is Msg PageList result. type MsgPageList struct { List []*Msg `json:"list"` PageDetails *PageDetails `json:"pageDetails"` } func (m *MsgQuery) Page( ctx context.Context, pageNum uint64, pageSize uint64, opts ...MsgPaginateOption, ) (*MsgPageList, error) { pager, err := newMsgPager(opts) if err != nil { return nil, err } if m, err = pager.ApplyFilter(m); err != nil { return nil, err } ret := &MsgPageList{} ret.PageDetails = &PageDetails{ Page: pageNum, Size: pageSize, } query := m.Clone() query.ctx.Fields = nil count, err := query.Count(ctx) if err != nil { return nil, err } ret.PageDetails.Total = uint64(count) if pager.Order != nil { m = m.Order(pager.Order) } else { m = m.Order(DefaultMsgOrder) } m = m.Offset(int((pageNum - 1) * pageSize)).Limit(int(pageSize)) list, err := m.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, } query := s.Clone() query.ctx.Fields = nil count, err := query.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 SopNodePager struct { Order sopnode.OrderOption Filter func(*SopNodeQuery) (*SopNodeQuery, error) } // SopNodePaginateOption enables pagination customization. type SopNodePaginateOption func(*SopNodePager) // DefaultSopNodeOrder is the default ordering of SopNode. var DefaultSopNodeOrder = Desc(sopnode.FieldID) func newSopNodePager(opts []SopNodePaginateOption) (*SopNodePager, error) { pager := &SopNodePager{} for _, opt := range opts { opt(pager) } if pager.Order == nil { pager.Order = DefaultSopNodeOrder } return pager, nil } func (p *SopNodePager) ApplyFilter(query *SopNodeQuery) (*SopNodeQuery, error) { if p.Filter != nil { return p.Filter(query) } return query, nil } // SopNodePageList is SopNode PageList result. type SopNodePageList struct { List []*SopNode `json:"list"` PageDetails *PageDetails `json:"pageDetails"` } func (sn *SopNodeQuery) Page( ctx context.Context, pageNum uint64, pageSize uint64, opts ...SopNodePaginateOption, ) (*SopNodePageList, error) { pager, err := newSopNodePager(opts) if err != nil { return nil, err } if sn, err = pager.ApplyFilter(sn); err != nil { return nil, err } ret := &SopNodePageList{} ret.PageDetails = &PageDetails{ Page: pageNum, Size: pageSize, } query := sn.Clone() query.ctx.Fields = nil count, err := query.Count(ctx) if err != nil { return nil, err } ret.PageDetails.Total = uint64(count) if pager.Order != nil { sn = sn.Order(pager.Order) } else { sn = sn.Order(DefaultSopNodeOrder) } sn = sn.Offset(int((pageNum - 1) * pageSize)).Limit(int(pageSize)) list, err := sn.All(ctx) if err != nil { return nil, err } ret.List = list return ret, nil } type SopStagePager struct { Order sopstage.OrderOption Filter func(*SopStageQuery) (*SopStageQuery, error) } // SopStagePaginateOption enables pagination customization. type SopStagePaginateOption func(*SopStagePager) // DefaultSopStageOrder is the default ordering of SopStage. var DefaultSopStageOrder = Desc(sopstage.FieldID) func newSopStagePager(opts []SopStagePaginateOption) (*SopStagePager, error) { pager := &SopStagePager{} for _, opt := range opts { opt(pager) } if pager.Order == nil { pager.Order = DefaultSopStageOrder } return pager, nil } func (p *SopStagePager) ApplyFilter(query *SopStageQuery) (*SopStageQuery, error) { if p.Filter != nil { return p.Filter(query) } return query, nil } // SopStagePageList is SopStage PageList result. type SopStagePageList struct { List []*SopStage `json:"list"` PageDetails *PageDetails `json:"pageDetails"` } func (ss *SopStageQuery) Page( ctx context.Context, pageNum uint64, pageSize uint64, opts ...SopStagePaginateOption, ) (*SopStagePageList, error) { pager, err := newSopStagePager(opts) if err != nil { return nil, err } if ss, err = pager.ApplyFilter(ss); err != nil { return nil, err } ret := &SopStagePageList{} ret.PageDetails = &PageDetails{ Page: pageNum, Size: pageSize, } query := ss.Clone() query.ctx.Fields = nil count, err := query.Count(ctx) if err != nil { return nil, err } ret.PageDetails.Total = uint64(count) if pager.Order != nil { ss = ss.Order(pager.Order) } else { ss = ss.Order(DefaultSopStageOrder) } ss = ss.Offset(int((pageNum - 1) * pageSize)).Limit(int(pageSize)) list, err := ss.All(ctx) if err != nil { return nil, err } ret.List = list return ret, nil } type SopTaskPager struct { Order soptask.OrderOption Filter func(*SopTaskQuery) (*SopTaskQuery, error) } // SopTaskPaginateOption enables pagination customization. type SopTaskPaginateOption func(*SopTaskPager) // DefaultSopTaskOrder is the default ordering of SopTask. var DefaultSopTaskOrder = Desc(soptask.FieldID) func newSopTaskPager(opts []SopTaskPaginateOption) (*SopTaskPager, error) { pager := &SopTaskPager{} for _, opt := range opts { opt(pager) } if pager.Order == nil { pager.Order = DefaultSopTaskOrder } return pager, nil } func (p *SopTaskPager) ApplyFilter(query *SopTaskQuery) (*SopTaskQuery, error) { if p.Filter != nil { return p.Filter(query) } return query, nil } // SopTaskPageList is SopTask PageList result. type SopTaskPageList struct { List []*SopTask `json:"list"` PageDetails *PageDetails `json:"pageDetails"` } func (st *SopTaskQuery) Page( ctx context.Context, pageNum uint64, pageSize uint64, opts ...SopTaskPaginateOption, ) (*SopTaskPageList, error) { pager, err := newSopTaskPager(opts) if err != nil { return nil, err } if st, err = pager.ApplyFilter(st); err != nil { return nil, err } ret := &SopTaskPageList{} ret.PageDetails = &PageDetails{ Page: pageNum, Size: pageSize, } query := st.Clone() query.ctx.Fields = nil count, err := query.Count(ctx) if err != nil { return nil, err } ret.PageDetails.Total = uint64(count) if pager.Order != nil { st = st.Order(pager.Order) } else { st = st.Order(DefaultSopTaskOrder) } st = st.Offset(int((pageNum - 1) * pageSize)).Limit(int(pageSize)) list, err := st.All(ctx) if err != nil { return nil, err } ret.List = list return ret, nil } type TokenPager struct { Order token.OrderOption Filter func(*TokenQuery) (*TokenQuery, error) } // TokenPaginateOption enables pagination customization. type TokenPaginateOption func(*TokenPager) // DefaultTokenOrder is the default ordering of Token. var DefaultTokenOrder = Desc(token.FieldID) func newTokenPager(opts []TokenPaginateOption) (*TokenPager, error) { pager := &TokenPager{} for _, opt := range opts { opt(pager) } if pager.Order == nil { pager.Order = DefaultTokenOrder } return pager, nil } func (p *TokenPager) ApplyFilter(query *TokenQuery) (*TokenQuery, error) { if p.Filter != nil { return p.Filter(query) } return query, nil } // TokenPageList is Token PageList result. type TokenPageList struct { List []*Token `json:"list"` PageDetails *PageDetails `json:"pageDetails"` } func (t *TokenQuery) Page( ctx context.Context, pageNum uint64, pageSize uint64, opts ...TokenPaginateOption, ) (*TokenPageList, error) { pager, err := newTokenPager(opts) if err != nil { return nil, err } if t, err = pager.ApplyFilter(t); err != nil { return nil, err } ret := &TokenPageList{} ret.PageDetails = &PageDetails{ Page: pageNum, Size: pageSize, } query := t.Clone() query.ctx.Fields = nil count, err := query.Count(ctx) if err != nil { return nil, err } ret.PageDetails.Total = uint64(count) if pager.Order != nil { t = t.Order(pager.Order) } else { t = t.Order(DefaultTokenOrder) } t = t.Offset(int((pageNum - 1) * pageSize)).Limit(int(pageSize)) list, err := t.All(ctx) if err != nil { return nil, err } ret.List = list return ret, nil } type TutorialPager struct { Order tutorial.OrderOption Filter func(*TutorialQuery) (*TutorialQuery, error) } // TutorialPaginateOption enables pagination customization. type TutorialPaginateOption func(*TutorialPager) // DefaultTutorialOrder is the default ordering of Tutorial. var DefaultTutorialOrder = Desc(tutorial.FieldID) func newTutorialPager(opts []TutorialPaginateOption) (*TutorialPager, error) { pager := &TutorialPager{} for _, opt := range opts { opt(pager) } if pager.Order == nil { pager.Order = DefaultTutorialOrder } return pager, nil } func (p *TutorialPager) ApplyFilter(query *TutorialQuery) (*TutorialQuery, error) { if p.Filter != nil { return p.Filter(query) } return query, nil } // TutorialPageList is Tutorial PageList result. type TutorialPageList struct { List []*Tutorial `json:"list"` PageDetails *PageDetails `json:"pageDetails"` } func (t *TutorialQuery) Page( ctx context.Context, pageNum uint64, pageSize uint64, opts ...TutorialPaginateOption, ) (*TutorialPageList, error) { pager, err := newTutorialPager(opts) if err != nil { return nil, err } if t, err = pager.ApplyFilter(t); err != nil { return nil, err } ret := &TutorialPageList{} ret.PageDetails = &PageDetails{ Page: pageNum, Size: pageSize, } query := t.Clone() query.ctx.Fields = nil count, err := query.Count(ctx) if err != nil { return nil, err } ret.PageDetails.Total = uint64(count) if pager.Order != nil { t = t.Order(pager.Order) } else { t = t.Order(DefaultTutorialOrder) } t = t.Offset(int((pageNum - 1) * pageSize)).Limit(int(pageSize)) list, err := t.All(ctx) if err != nil { return nil, err } ret.List = list return ret, nil } type WorkExperiencePager struct { Order workexperience.OrderOption Filter func(*WorkExperienceQuery) (*WorkExperienceQuery, error) } // WorkExperiencePaginateOption enables pagination customization. type WorkExperiencePaginateOption func(*WorkExperiencePager) // DefaultWorkExperienceOrder is the default ordering of WorkExperience. var DefaultWorkExperienceOrder = Desc(workexperience.FieldID) func newWorkExperiencePager(opts []WorkExperiencePaginateOption) (*WorkExperiencePager, error) { pager := &WorkExperiencePager{} for _, opt := range opts { opt(pager) } if pager.Order == nil { pager.Order = DefaultWorkExperienceOrder } return pager, nil } func (p *WorkExperiencePager) ApplyFilter(query *WorkExperienceQuery) (*WorkExperienceQuery, error) { if p.Filter != nil { return p.Filter(query) } return query, nil } // WorkExperiencePageList is WorkExperience PageList result. type WorkExperiencePageList struct { List []*WorkExperience `json:"list"` PageDetails *PageDetails `json:"pageDetails"` } func (we *WorkExperienceQuery) Page( ctx context.Context, pageNum uint64, pageSize uint64, opts ...WorkExperiencePaginateOption, ) (*WorkExperiencePageList, error) { pager, err := newWorkExperiencePager(opts) if err != nil { return nil, err } if we, err = pager.ApplyFilter(we); err != nil { return nil, err } ret := &WorkExperiencePageList{} ret.PageDetails = &PageDetails{ Page: pageNum, Size: pageSize, } query := we.Clone() query.ctx.Fields = nil count, err := query.Count(ctx) if err != nil { return nil, err } ret.PageDetails.Total = uint64(count) if pager.Order != nil { we = we.Order(pager.Order) } else { we = we.Order(DefaultWorkExperienceOrder) } we = we.Offset(int((pageNum - 1) * pageSize)).Limit(int(pageSize)) list, err := we.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, } query := w.Clone() query.ctx.Fields = nil count, err := query.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 }