pagination.go 30 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448
  1. // Code generated by ent, DO NOT EDIT.
  2. package ent
  3. import (
  4. "context"
  5. "fmt"
  6. "wechat-api/ent/agent"
  7. "wechat-api/ent/batchmsg"
  8. "wechat-api/ent/contact"
  9. "wechat-api/ent/employee"
  10. "wechat-api/ent/label"
  11. "wechat-api/ent/labelrelationship"
  12. "wechat-api/ent/message"
  13. "wechat-api/ent/messagerecords"
  14. "wechat-api/ent/msg"
  15. "wechat-api/ent/server"
  16. "wechat-api/ent/sopnode"
  17. "wechat-api/ent/sopstage"
  18. "wechat-api/ent/soptask"
  19. "wechat-api/ent/token"
  20. "wechat-api/ent/tutorial"
  21. "wechat-api/ent/workexperience"
  22. "wechat-api/ent/wx"
  23. )
  24. const errInvalidPage = "INVALID_PAGE"
  25. const (
  26. listField = "list"
  27. pageNumField = "pageNum"
  28. pageSizeField = "pageSize"
  29. )
  30. type PageDetails struct {
  31. Page uint64 `json:"page"`
  32. Size uint64 `json:"size"`
  33. Total uint64 `json:"total"`
  34. }
  35. // OrderDirection defines the directions in which to order a list of items.
  36. type OrderDirection string
  37. const (
  38. // OrderDirectionAsc specifies an ascending order.
  39. OrderDirectionAsc OrderDirection = "ASC"
  40. // OrderDirectionDesc specifies a descending order.
  41. OrderDirectionDesc OrderDirection = "DESC"
  42. )
  43. // Validate the order direction value.
  44. func (o OrderDirection) Validate() error {
  45. if o != OrderDirectionAsc && o != OrderDirectionDesc {
  46. return fmt.Errorf("%s is not a valid OrderDirection", o)
  47. }
  48. return nil
  49. }
  50. // String implements fmt.Stringer interface.
  51. func (o OrderDirection) String() string {
  52. return string(o)
  53. }
  54. func (o OrderDirection) reverse() OrderDirection {
  55. if o == OrderDirectionDesc {
  56. return OrderDirectionAsc
  57. }
  58. return OrderDirectionDesc
  59. }
  60. const errInvalidPagination = "INVALID_PAGINATION"
  61. type AgentPager struct {
  62. Order agent.OrderOption
  63. Filter func(*AgentQuery) (*AgentQuery, error)
  64. }
  65. // AgentPaginateOption enables pagination customization.
  66. type AgentPaginateOption func(*AgentPager)
  67. // DefaultAgentOrder is the default ordering of Agent.
  68. var DefaultAgentOrder = Desc(agent.FieldID)
  69. func newAgentPager(opts []AgentPaginateOption) (*AgentPager, error) {
  70. pager := &AgentPager{}
  71. for _, opt := range opts {
  72. opt(pager)
  73. }
  74. if pager.Order == nil {
  75. pager.Order = DefaultAgentOrder
  76. }
  77. return pager, nil
  78. }
  79. func (p *AgentPager) ApplyFilter(query *AgentQuery) (*AgentQuery, error) {
  80. if p.Filter != nil {
  81. return p.Filter(query)
  82. }
  83. return query, nil
  84. }
  85. // AgentPageList is Agent PageList result.
  86. type AgentPageList struct {
  87. List []*Agent `json:"list"`
  88. PageDetails *PageDetails `json:"pageDetails"`
  89. }
  90. func (a *AgentQuery) Page(
  91. ctx context.Context, pageNum uint64, pageSize uint64, opts ...AgentPaginateOption,
  92. ) (*AgentPageList, error) {
  93. pager, err := newAgentPager(opts)
  94. if err != nil {
  95. return nil, err
  96. }
  97. if a, err = pager.ApplyFilter(a); err != nil {
  98. return nil, err
  99. }
  100. ret := &AgentPageList{}
  101. ret.PageDetails = &PageDetails{
  102. Page: pageNum,
  103. Size: pageSize,
  104. }
  105. query := a.Clone()
  106. query.ctx.Fields = nil
  107. count, err := query.Count(ctx)
  108. if err != nil {
  109. return nil, err
  110. }
  111. ret.PageDetails.Total = uint64(count)
  112. if pager.Order != nil {
  113. a = a.Order(pager.Order)
  114. } else {
  115. a = a.Order(DefaultAgentOrder)
  116. }
  117. a = a.Offset(int((pageNum - 1) * pageSize)).Limit(int(pageSize))
  118. list, err := a.All(ctx)
  119. if err != nil {
  120. return nil, err
  121. }
  122. ret.List = list
  123. return ret, nil
  124. }
  125. type BatchMsgPager struct {
  126. Order batchmsg.OrderOption
  127. Filter func(*BatchMsgQuery) (*BatchMsgQuery, error)
  128. }
  129. // BatchMsgPaginateOption enables pagination customization.
  130. type BatchMsgPaginateOption func(*BatchMsgPager)
  131. // DefaultBatchMsgOrder is the default ordering of BatchMsg.
  132. var DefaultBatchMsgOrder = Desc(batchmsg.FieldID)
  133. func newBatchMsgPager(opts []BatchMsgPaginateOption) (*BatchMsgPager, error) {
  134. pager := &BatchMsgPager{}
  135. for _, opt := range opts {
  136. opt(pager)
  137. }
  138. if pager.Order == nil {
  139. pager.Order = DefaultBatchMsgOrder
  140. }
  141. return pager, nil
  142. }
  143. func (p *BatchMsgPager) ApplyFilter(query *BatchMsgQuery) (*BatchMsgQuery, error) {
  144. if p.Filter != nil {
  145. return p.Filter(query)
  146. }
  147. return query, nil
  148. }
  149. // BatchMsgPageList is BatchMsg PageList result.
  150. type BatchMsgPageList struct {
  151. List []*BatchMsg `json:"list"`
  152. PageDetails *PageDetails `json:"pageDetails"`
  153. }
  154. func (bm *BatchMsgQuery) Page(
  155. ctx context.Context, pageNum uint64, pageSize uint64, opts ...BatchMsgPaginateOption,
  156. ) (*BatchMsgPageList, error) {
  157. pager, err := newBatchMsgPager(opts)
  158. if err != nil {
  159. return nil, err
  160. }
  161. if bm, err = pager.ApplyFilter(bm); err != nil {
  162. return nil, err
  163. }
  164. ret := &BatchMsgPageList{}
  165. ret.PageDetails = &PageDetails{
  166. Page: pageNum,
  167. Size: pageSize,
  168. }
  169. query := bm.Clone()
  170. query.ctx.Fields = nil
  171. count, err := query.Count(ctx)
  172. if err != nil {
  173. return nil, err
  174. }
  175. ret.PageDetails.Total = uint64(count)
  176. if pager.Order != nil {
  177. bm = bm.Order(pager.Order)
  178. } else {
  179. bm = bm.Order(DefaultBatchMsgOrder)
  180. }
  181. bm = bm.Offset(int((pageNum - 1) * pageSize)).Limit(int(pageSize))
  182. list, err := bm.All(ctx)
  183. if err != nil {
  184. return nil, err
  185. }
  186. ret.List = list
  187. return ret, nil
  188. }
  189. type ContactPager struct {
  190. Order contact.OrderOption
  191. Filter func(*ContactQuery) (*ContactQuery, error)
  192. }
  193. // ContactPaginateOption enables pagination customization.
  194. type ContactPaginateOption func(*ContactPager)
  195. // DefaultContactOrder is the default ordering of Contact.
  196. var DefaultContactOrder = Desc(contact.FieldID)
  197. func newContactPager(opts []ContactPaginateOption) (*ContactPager, error) {
  198. pager := &ContactPager{}
  199. for _, opt := range opts {
  200. opt(pager)
  201. }
  202. if pager.Order == nil {
  203. pager.Order = DefaultContactOrder
  204. }
  205. return pager, nil
  206. }
  207. func (p *ContactPager) ApplyFilter(query *ContactQuery) (*ContactQuery, error) {
  208. if p.Filter != nil {
  209. return p.Filter(query)
  210. }
  211. return query, nil
  212. }
  213. // ContactPageList is Contact PageList result.
  214. type ContactPageList struct {
  215. List []*Contact `json:"list"`
  216. PageDetails *PageDetails `json:"pageDetails"`
  217. }
  218. func (c *ContactQuery) Page(
  219. ctx context.Context, pageNum uint64, pageSize uint64, opts ...ContactPaginateOption,
  220. ) (*ContactPageList, error) {
  221. pager, err := newContactPager(opts)
  222. if err != nil {
  223. return nil, err
  224. }
  225. if c, err = pager.ApplyFilter(c); err != nil {
  226. return nil, err
  227. }
  228. ret := &ContactPageList{}
  229. ret.PageDetails = &PageDetails{
  230. Page: pageNum,
  231. Size: pageSize,
  232. }
  233. query := c.Clone()
  234. query.ctx.Fields = nil
  235. count, err := query.Count(ctx)
  236. if err != nil {
  237. return nil, err
  238. }
  239. ret.PageDetails.Total = uint64(count)
  240. if pager.Order != nil {
  241. c = c.Order(pager.Order)
  242. } else {
  243. c = c.Order(DefaultContactOrder)
  244. }
  245. c = c.Offset(int((pageNum - 1) * pageSize)).Limit(int(pageSize))
  246. list, err := c.All(ctx)
  247. if err != nil {
  248. return nil, err
  249. }
  250. ret.List = list
  251. return ret, nil
  252. }
  253. type EmployeePager struct {
  254. Order employee.OrderOption
  255. Filter func(*EmployeeQuery) (*EmployeeQuery, error)
  256. }
  257. // EmployeePaginateOption enables pagination customization.
  258. type EmployeePaginateOption func(*EmployeePager)
  259. // DefaultEmployeeOrder is the default ordering of Employee.
  260. var DefaultEmployeeOrder = Desc(employee.FieldID)
  261. func newEmployeePager(opts []EmployeePaginateOption) (*EmployeePager, error) {
  262. pager := &EmployeePager{}
  263. for _, opt := range opts {
  264. opt(pager)
  265. }
  266. if pager.Order == nil {
  267. pager.Order = DefaultEmployeeOrder
  268. }
  269. return pager, nil
  270. }
  271. func (p *EmployeePager) ApplyFilter(query *EmployeeQuery) (*EmployeeQuery, error) {
  272. if p.Filter != nil {
  273. return p.Filter(query)
  274. }
  275. return query, nil
  276. }
  277. // EmployeePageList is Employee PageList result.
  278. type EmployeePageList struct {
  279. List []*Employee `json:"list"`
  280. PageDetails *PageDetails `json:"pageDetails"`
  281. }
  282. func (e *EmployeeQuery) Page(
  283. ctx context.Context, pageNum uint64, pageSize uint64, opts ...EmployeePaginateOption,
  284. ) (*EmployeePageList, error) {
  285. pager, err := newEmployeePager(opts)
  286. if err != nil {
  287. return nil, err
  288. }
  289. if e, err = pager.ApplyFilter(e); err != nil {
  290. return nil, err
  291. }
  292. ret := &EmployeePageList{}
  293. ret.PageDetails = &PageDetails{
  294. Page: pageNum,
  295. Size: pageSize,
  296. }
  297. query := e.Clone()
  298. query.ctx.Fields = nil
  299. count, err := query.Count(ctx)
  300. if err != nil {
  301. return nil, err
  302. }
  303. ret.PageDetails.Total = uint64(count)
  304. if pager.Order != nil {
  305. e = e.Order(pager.Order)
  306. } else {
  307. e = e.Order(DefaultEmployeeOrder)
  308. }
  309. e = e.Offset(int((pageNum - 1) * pageSize)).Limit(int(pageSize))
  310. list, err := e.All(ctx)
  311. if err != nil {
  312. return nil, err
  313. }
  314. ret.List = list
  315. return ret, nil
  316. }
  317. type LabelPager struct {
  318. Order label.OrderOption
  319. Filter func(*LabelQuery) (*LabelQuery, error)
  320. }
  321. // LabelPaginateOption enables pagination customization.
  322. type LabelPaginateOption func(*LabelPager)
  323. // DefaultLabelOrder is the default ordering of Label.
  324. var DefaultLabelOrder = Desc(label.FieldID)
  325. func newLabelPager(opts []LabelPaginateOption) (*LabelPager, error) {
  326. pager := &LabelPager{}
  327. for _, opt := range opts {
  328. opt(pager)
  329. }
  330. if pager.Order == nil {
  331. pager.Order = DefaultLabelOrder
  332. }
  333. return pager, nil
  334. }
  335. func (p *LabelPager) ApplyFilter(query *LabelQuery) (*LabelQuery, error) {
  336. if p.Filter != nil {
  337. return p.Filter(query)
  338. }
  339. return query, nil
  340. }
  341. // LabelPageList is Label PageList result.
  342. type LabelPageList struct {
  343. List []*Label `json:"list"`
  344. PageDetails *PageDetails `json:"pageDetails"`
  345. }
  346. func (l *LabelQuery) Page(
  347. ctx context.Context, pageNum uint64, pageSize uint64, opts ...LabelPaginateOption,
  348. ) (*LabelPageList, error) {
  349. pager, err := newLabelPager(opts)
  350. if err != nil {
  351. return nil, err
  352. }
  353. if l, err = pager.ApplyFilter(l); err != nil {
  354. return nil, err
  355. }
  356. ret := &LabelPageList{}
  357. ret.PageDetails = &PageDetails{
  358. Page: pageNum,
  359. Size: pageSize,
  360. }
  361. query := l.Clone()
  362. query.ctx.Fields = nil
  363. count, err := query.Count(ctx)
  364. if err != nil {
  365. return nil, err
  366. }
  367. ret.PageDetails.Total = uint64(count)
  368. if pager.Order != nil {
  369. l = l.Order(pager.Order)
  370. } else {
  371. l = l.Order(DefaultLabelOrder)
  372. }
  373. l = l.Offset(int((pageNum - 1) * pageSize)).Limit(int(pageSize))
  374. list, err := l.All(ctx)
  375. if err != nil {
  376. return nil, err
  377. }
  378. ret.List = list
  379. return ret, nil
  380. }
  381. type LabelRelationshipPager struct {
  382. Order labelrelationship.OrderOption
  383. Filter func(*LabelRelationshipQuery) (*LabelRelationshipQuery, error)
  384. }
  385. // LabelRelationshipPaginateOption enables pagination customization.
  386. type LabelRelationshipPaginateOption func(*LabelRelationshipPager)
  387. // DefaultLabelRelationshipOrder is the default ordering of LabelRelationship.
  388. var DefaultLabelRelationshipOrder = Desc(labelrelationship.FieldID)
  389. func newLabelRelationshipPager(opts []LabelRelationshipPaginateOption) (*LabelRelationshipPager, error) {
  390. pager := &LabelRelationshipPager{}
  391. for _, opt := range opts {
  392. opt(pager)
  393. }
  394. if pager.Order == nil {
  395. pager.Order = DefaultLabelRelationshipOrder
  396. }
  397. return pager, nil
  398. }
  399. func (p *LabelRelationshipPager) ApplyFilter(query *LabelRelationshipQuery) (*LabelRelationshipQuery, error) {
  400. if p.Filter != nil {
  401. return p.Filter(query)
  402. }
  403. return query, nil
  404. }
  405. // LabelRelationshipPageList is LabelRelationship PageList result.
  406. type LabelRelationshipPageList struct {
  407. List []*LabelRelationship `json:"list"`
  408. PageDetails *PageDetails `json:"pageDetails"`
  409. }
  410. func (lr *LabelRelationshipQuery) Page(
  411. ctx context.Context, pageNum uint64, pageSize uint64, opts ...LabelRelationshipPaginateOption,
  412. ) (*LabelRelationshipPageList, error) {
  413. pager, err := newLabelRelationshipPager(opts)
  414. if err != nil {
  415. return nil, err
  416. }
  417. if lr, err = pager.ApplyFilter(lr); err != nil {
  418. return nil, err
  419. }
  420. ret := &LabelRelationshipPageList{}
  421. ret.PageDetails = &PageDetails{
  422. Page: pageNum,
  423. Size: pageSize,
  424. }
  425. query := lr.Clone()
  426. query.ctx.Fields = nil
  427. count, err := query.Count(ctx)
  428. if err != nil {
  429. return nil, err
  430. }
  431. ret.PageDetails.Total = uint64(count)
  432. if pager.Order != nil {
  433. lr = lr.Order(pager.Order)
  434. } else {
  435. lr = lr.Order(DefaultLabelRelationshipOrder)
  436. }
  437. lr = lr.Offset(int((pageNum - 1) * pageSize)).Limit(int(pageSize))
  438. list, err := lr.All(ctx)
  439. if err != nil {
  440. return nil, err
  441. }
  442. ret.List = list
  443. return ret, nil
  444. }
  445. type MessagePager struct {
  446. Order message.OrderOption
  447. Filter func(*MessageQuery) (*MessageQuery, error)
  448. }
  449. // MessagePaginateOption enables pagination customization.
  450. type MessagePaginateOption func(*MessagePager)
  451. // DefaultMessageOrder is the default ordering of Message.
  452. var DefaultMessageOrder = Desc(message.FieldID)
  453. func newMessagePager(opts []MessagePaginateOption) (*MessagePager, error) {
  454. pager := &MessagePager{}
  455. for _, opt := range opts {
  456. opt(pager)
  457. }
  458. if pager.Order == nil {
  459. pager.Order = DefaultMessageOrder
  460. }
  461. return pager, nil
  462. }
  463. func (p *MessagePager) ApplyFilter(query *MessageQuery) (*MessageQuery, error) {
  464. if p.Filter != nil {
  465. return p.Filter(query)
  466. }
  467. return query, nil
  468. }
  469. // MessagePageList is Message PageList result.
  470. type MessagePageList struct {
  471. List []*Message `json:"list"`
  472. PageDetails *PageDetails `json:"pageDetails"`
  473. }
  474. func (m *MessageQuery) Page(
  475. ctx context.Context, pageNum uint64, pageSize uint64, opts ...MessagePaginateOption,
  476. ) (*MessagePageList, error) {
  477. pager, err := newMessagePager(opts)
  478. if err != nil {
  479. return nil, err
  480. }
  481. if m, err = pager.ApplyFilter(m); err != nil {
  482. return nil, err
  483. }
  484. ret := &MessagePageList{}
  485. ret.PageDetails = &PageDetails{
  486. Page: pageNum,
  487. Size: pageSize,
  488. }
  489. query := m.Clone()
  490. query.ctx.Fields = nil
  491. count, err := query.Count(ctx)
  492. if err != nil {
  493. return nil, err
  494. }
  495. ret.PageDetails.Total = uint64(count)
  496. if pager.Order != nil {
  497. m = m.Order(pager.Order)
  498. } else {
  499. m = m.Order(DefaultMessageOrder)
  500. }
  501. m = m.Offset(int((pageNum - 1) * pageSize)).Limit(int(pageSize))
  502. list, err := m.All(ctx)
  503. if err != nil {
  504. return nil, err
  505. }
  506. ret.List = list
  507. return ret, nil
  508. }
  509. type MessageRecordsPager struct {
  510. Order messagerecords.OrderOption
  511. Filter func(*MessageRecordsQuery) (*MessageRecordsQuery, error)
  512. }
  513. // MessageRecordsPaginateOption enables pagination customization.
  514. type MessageRecordsPaginateOption func(*MessageRecordsPager)
  515. // DefaultMessageRecordsOrder is the default ordering of MessageRecords.
  516. var DefaultMessageRecordsOrder = Desc(messagerecords.FieldID)
  517. func newMessageRecordsPager(opts []MessageRecordsPaginateOption) (*MessageRecordsPager, error) {
  518. pager := &MessageRecordsPager{}
  519. for _, opt := range opts {
  520. opt(pager)
  521. }
  522. if pager.Order == nil {
  523. pager.Order = DefaultMessageRecordsOrder
  524. }
  525. return pager, nil
  526. }
  527. func (p *MessageRecordsPager) ApplyFilter(query *MessageRecordsQuery) (*MessageRecordsQuery, error) {
  528. if p.Filter != nil {
  529. return p.Filter(query)
  530. }
  531. return query, nil
  532. }
  533. // MessageRecordsPageList is MessageRecords PageList result.
  534. type MessageRecordsPageList struct {
  535. List []*MessageRecords `json:"list"`
  536. PageDetails *PageDetails `json:"pageDetails"`
  537. }
  538. func (mr *MessageRecordsQuery) Page(
  539. ctx context.Context, pageNum uint64, pageSize uint64, opts ...MessageRecordsPaginateOption,
  540. ) (*MessageRecordsPageList, error) {
  541. pager, err := newMessageRecordsPager(opts)
  542. if err != nil {
  543. return nil, err
  544. }
  545. if mr, err = pager.ApplyFilter(mr); err != nil {
  546. return nil, err
  547. }
  548. ret := &MessageRecordsPageList{}
  549. ret.PageDetails = &PageDetails{
  550. Page: pageNum,
  551. Size: pageSize,
  552. }
  553. query := mr.Clone()
  554. query.ctx.Fields = nil
  555. count, err := query.Count(ctx)
  556. if err != nil {
  557. return nil, err
  558. }
  559. ret.PageDetails.Total = uint64(count)
  560. if pager.Order != nil {
  561. mr = mr.Order(pager.Order)
  562. } else {
  563. mr = mr.Order(DefaultMessageRecordsOrder)
  564. }
  565. mr = mr.Offset(int((pageNum - 1) * pageSize)).Limit(int(pageSize))
  566. list, err := mr.All(ctx)
  567. if err != nil {
  568. return nil, err
  569. }
  570. ret.List = list
  571. return ret, nil
  572. }
  573. type MsgPager struct {
  574. Order msg.OrderOption
  575. Filter func(*MsgQuery) (*MsgQuery, error)
  576. }
  577. // MsgPaginateOption enables pagination customization.
  578. type MsgPaginateOption func(*MsgPager)
  579. // DefaultMsgOrder is the default ordering of Msg.
  580. var DefaultMsgOrder = Desc(msg.FieldID)
  581. func newMsgPager(opts []MsgPaginateOption) (*MsgPager, error) {
  582. pager := &MsgPager{}
  583. for _, opt := range opts {
  584. opt(pager)
  585. }
  586. if pager.Order == nil {
  587. pager.Order = DefaultMsgOrder
  588. }
  589. return pager, nil
  590. }
  591. func (p *MsgPager) ApplyFilter(query *MsgQuery) (*MsgQuery, error) {
  592. if p.Filter != nil {
  593. return p.Filter(query)
  594. }
  595. return query, nil
  596. }
  597. // MsgPageList is Msg PageList result.
  598. type MsgPageList struct {
  599. List []*Msg `json:"list"`
  600. PageDetails *PageDetails `json:"pageDetails"`
  601. }
  602. func (m *MsgQuery) Page(
  603. ctx context.Context, pageNum uint64, pageSize uint64, opts ...MsgPaginateOption,
  604. ) (*MsgPageList, error) {
  605. pager, err := newMsgPager(opts)
  606. if err != nil {
  607. return nil, err
  608. }
  609. if m, err = pager.ApplyFilter(m); err != nil {
  610. return nil, err
  611. }
  612. ret := &MsgPageList{}
  613. ret.PageDetails = &PageDetails{
  614. Page: pageNum,
  615. Size: pageSize,
  616. }
  617. query := m.Clone()
  618. query.ctx.Fields = nil
  619. count, err := query.Count(ctx)
  620. if err != nil {
  621. return nil, err
  622. }
  623. ret.PageDetails.Total = uint64(count)
  624. if pager.Order != nil {
  625. m = m.Order(pager.Order)
  626. } else {
  627. m = m.Order(DefaultMsgOrder)
  628. }
  629. m = m.Offset(int((pageNum - 1) * pageSize)).Limit(int(pageSize))
  630. list, err := m.All(ctx)
  631. if err != nil {
  632. return nil, err
  633. }
  634. ret.List = list
  635. return ret, nil
  636. }
  637. type ServerPager struct {
  638. Order server.OrderOption
  639. Filter func(*ServerQuery) (*ServerQuery, error)
  640. }
  641. // ServerPaginateOption enables pagination customization.
  642. type ServerPaginateOption func(*ServerPager)
  643. // DefaultServerOrder is the default ordering of Server.
  644. var DefaultServerOrder = Desc(server.FieldID)
  645. func newServerPager(opts []ServerPaginateOption) (*ServerPager, error) {
  646. pager := &ServerPager{}
  647. for _, opt := range opts {
  648. opt(pager)
  649. }
  650. if pager.Order == nil {
  651. pager.Order = DefaultServerOrder
  652. }
  653. return pager, nil
  654. }
  655. func (p *ServerPager) ApplyFilter(query *ServerQuery) (*ServerQuery, error) {
  656. if p.Filter != nil {
  657. return p.Filter(query)
  658. }
  659. return query, nil
  660. }
  661. // ServerPageList is Server PageList result.
  662. type ServerPageList struct {
  663. List []*Server `json:"list"`
  664. PageDetails *PageDetails `json:"pageDetails"`
  665. }
  666. func (s *ServerQuery) Page(
  667. ctx context.Context, pageNum uint64, pageSize uint64, opts ...ServerPaginateOption,
  668. ) (*ServerPageList, error) {
  669. pager, err := newServerPager(opts)
  670. if err != nil {
  671. return nil, err
  672. }
  673. if s, err = pager.ApplyFilter(s); err != nil {
  674. return nil, err
  675. }
  676. ret := &ServerPageList{}
  677. ret.PageDetails = &PageDetails{
  678. Page: pageNum,
  679. Size: pageSize,
  680. }
  681. query := s.Clone()
  682. query.ctx.Fields = nil
  683. count, err := query.Count(ctx)
  684. if err != nil {
  685. return nil, err
  686. }
  687. ret.PageDetails.Total = uint64(count)
  688. if pager.Order != nil {
  689. s = s.Order(pager.Order)
  690. } else {
  691. s = s.Order(DefaultServerOrder)
  692. }
  693. s = s.Offset(int((pageNum - 1) * pageSize)).Limit(int(pageSize))
  694. list, err := s.All(ctx)
  695. if err != nil {
  696. return nil, err
  697. }
  698. ret.List = list
  699. return ret, nil
  700. }
  701. type SopNodePager struct {
  702. Order sopnode.OrderOption
  703. Filter func(*SopNodeQuery) (*SopNodeQuery, error)
  704. }
  705. // SopNodePaginateOption enables pagination customization.
  706. type SopNodePaginateOption func(*SopNodePager)
  707. // DefaultSopNodeOrder is the default ordering of SopNode.
  708. var DefaultSopNodeOrder = Desc(sopnode.FieldID)
  709. func newSopNodePager(opts []SopNodePaginateOption) (*SopNodePager, error) {
  710. pager := &SopNodePager{}
  711. for _, opt := range opts {
  712. opt(pager)
  713. }
  714. if pager.Order == nil {
  715. pager.Order = DefaultSopNodeOrder
  716. }
  717. return pager, nil
  718. }
  719. func (p *SopNodePager) ApplyFilter(query *SopNodeQuery) (*SopNodeQuery, error) {
  720. if p.Filter != nil {
  721. return p.Filter(query)
  722. }
  723. return query, nil
  724. }
  725. // SopNodePageList is SopNode PageList result.
  726. type SopNodePageList struct {
  727. List []*SopNode `json:"list"`
  728. PageDetails *PageDetails `json:"pageDetails"`
  729. }
  730. func (sn *SopNodeQuery) Page(
  731. ctx context.Context, pageNum uint64, pageSize uint64, opts ...SopNodePaginateOption,
  732. ) (*SopNodePageList, error) {
  733. pager, err := newSopNodePager(opts)
  734. if err != nil {
  735. return nil, err
  736. }
  737. if sn, err = pager.ApplyFilter(sn); err != nil {
  738. return nil, err
  739. }
  740. ret := &SopNodePageList{}
  741. ret.PageDetails = &PageDetails{
  742. Page: pageNum,
  743. Size: pageSize,
  744. }
  745. query := sn.Clone()
  746. query.ctx.Fields = nil
  747. count, err := query.Count(ctx)
  748. if err != nil {
  749. return nil, err
  750. }
  751. ret.PageDetails.Total = uint64(count)
  752. if pager.Order != nil {
  753. sn = sn.Order(pager.Order)
  754. } else {
  755. sn = sn.Order(DefaultSopNodeOrder)
  756. }
  757. sn = sn.Offset(int((pageNum - 1) * pageSize)).Limit(int(pageSize))
  758. list, err := sn.All(ctx)
  759. if err != nil {
  760. return nil, err
  761. }
  762. ret.List = list
  763. return ret, nil
  764. }
  765. type SopStagePager struct {
  766. Order sopstage.OrderOption
  767. Filter func(*SopStageQuery) (*SopStageQuery, error)
  768. }
  769. // SopStagePaginateOption enables pagination customization.
  770. type SopStagePaginateOption func(*SopStagePager)
  771. // DefaultSopStageOrder is the default ordering of SopStage.
  772. var DefaultSopStageOrder = Desc(sopstage.FieldID)
  773. func newSopStagePager(opts []SopStagePaginateOption) (*SopStagePager, error) {
  774. pager := &SopStagePager{}
  775. for _, opt := range opts {
  776. opt(pager)
  777. }
  778. if pager.Order == nil {
  779. pager.Order = DefaultSopStageOrder
  780. }
  781. return pager, nil
  782. }
  783. func (p *SopStagePager) ApplyFilter(query *SopStageQuery) (*SopStageQuery, error) {
  784. if p.Filter != nil {
  785. return p.Filter(query)
  786. }
  787. return query, nil
  788. }
  789. // SopStagePageList is SopStage PageList result.
  790. type SopStagePageList struct {
  791. List []*SopStage `json:"list"`
  792. PageDetails *PageDetails `json:"pageDetails"`
  793. }
  794. func (ss *SopStageQuery) Page(
  795. ctx context.Context, pageNum uint64, pageSize uint64, opts ...SopStagePaginateOption,
  796. ) (*SopStagePageList, error) {
  797. pager, err := newSopStagePager(opts)
  798. if err != nil {
  799. return nil, err
  800. }
  801. if ss, err = pager.ApplyFilter(ss); err != nil {
  802. return nil, err
  803. }
  804. ret := &SopStagePageList{}
  805. ret.PageDetails = &PageDetails{
  806. Page: pageNum,
  807. Size: pageSize,
  808. }
  809. query := ss.Clone()
  810. query.ctx.Fields = nil
  811. count, err := query.Count(ctx)
  812. if err != nil {
  813. return nil, err
  814. }
  815. ret.PageDetails.Total = uint64(count)
  816. if pager.Order != nil {
  817. ss = ss.Order(pager.Order)
  818. } else {
  819. ss = ss.Order(DefaultSopStageOrder)
  820. }
  821. ss = ss.Offset(int((pageNum - 1) * pageSize)).Limit(int(pageSize))
  822. list, err := ss.All(ctx)
  823. if err != nil {
  824. return nil, err
  825. }
  826. ret.List = list
  827. return ret, nil
  828. }
  829. type SopTaskPager struct {
  830. Order soptask.OrderOption
  831. Filter func(*SopTaskQuery) (*SopTaskQuery, error)
  832. }
  833. // SopTaskPaginateOption enables pagination customization.
  834. type SopTaskPaginateOption func(*SopTaskPager)
  835. // DefaultSopTaskOrder is the default ordering of SopTask.
  836. var DefaultSopTaskOrder = Desc(soptask.FieldID)
  837. func newSopTaskPager(opts []SopTaskPaginateOption) (*SopTaskPager, error) {
  838. pager := &SopTaskPager{}
  839. for _, opt := range opts {
  840. opt(pager)
  841. }
  842. if pager.Order == nil {
  843. pager.Order = DefaultSopTaskOrder
  844. }
  845. return pager, nil
  846. }
  847. func (p *SopTaskPager) ApplyFilter(query *SopTaskQuery) (*SopTaskQuery, error) {
  848. if p.Filter != nil {
  849. return p.Filter(query)
  850. }
  851. return query, nil
  852. }
  853. // SopTaskPageList is SopTask PageList result.
  854. type SopTaskPageList struct {
  855. List []*SopTask `json:"list"`
  856. PageDetails *PageDetails `json:"pageDetails"`
  857. }
  858. func (st *SopTaskQuery) Page(
  859. ctx context.Context, pageNum uint64, pageSize uint64, opts ...SopTaskPaginateOption,
  860. ) (*SopTaskPageList, error) {
  861. pager, err := newSopTaskPager(opts)
  862. if err != nil {
  863. return nil, err
  864. }
  865. if st, err = pager.ApplyFilter(st); err != nil {
  866. return nil, err
  867. }
  868. ret := &SopTaskPageList{}
  869. ret.PageDetails = &PageDetails{
  870. Page: pageNum,
  871. Size: pageSize,
  872. }
  873. query := st.Clone()
  874. query.ctx.Fields = nil
  875. count, err := query.Count(ctx)
  876. if err != nil {
  877. return nil, err
  878. }
  879. ret.PageDetails.Total = uint64(count)
  880. if pager.Order != nil {
  881. st = st.Order(pager.Order)
  882. } else {
  883. st = st.Order(DefaultSopTaskOrder)
  884. }
  885. st = st.Offset(int((pageNum - 1) * pageSize)).Limit(int(pageSize))
  886. list, err := st.All(ctx)
  887. if err != nil {
  888. return nil, err
  889. }
  890. ret.List = list
  891. return ret, nil
  892. }
  893. type TokenPager struct {
  894. Order token.OrderOption
  895. Filter func(*TokenQuery) (*TokenQuery, error)
  896. }
  897. // TokenPaginateOption enables pagination customization.
  898. type TokenPaginateOption func(*TokenPager)
  899. // DefaultTokenOrder is the default ordering of Token.
  900. var DefaultTokenOrder = Desc(token.FieldID)
  901. func newTokenPager(opts []TokenPaginateOption) (*TokenPager, error) {
  902. pager := &TokenPager{}
  903. for _, opt := range opts {
  904. opt(pager)
  905. }
  906. if pager.Order == nil {
  907. pager.Order = DefaultTokenOrder
  908. }
  909. return pager, nil
  910. }
  911. func (p *TokenPager) ApplyFilter(query *TokenQuery) (*TokenQuery, error) {
  912. if p.Filter != nil {
  913. return p.Filter(query)
  914. }
  915. return query, nil
  916. }
  917. // TokenPageList is Token PageList result.
  918. type TokenPageList struct {
  919. List []*Token `json:"list"`
  920. PageDetails *PageDetails `json:"pageDetails"`
  921. }
  922. func (t *TokenQuery) Page(
  923. ctx context.Context, pageNum uint64, pageSize uint64, opts ...TokenPaginateOption,
  924. ) (*TokenPageList, error) {
  925. pager, err := newTokenPager(opts)
  926. if err != nil {
  927. return nil, err
  928. }
  929. if t, err = pager.ApplyFilter(t); err != nil {
  930. return nil, err
  931. }
  932. ret := &TokenPageList{}
  933. ret.PageDetails = &PageDetails{
  934. Page: pageNum,
  935. Size: pageSize,
  936. }
  937. query := t.Clone()
  938. query.ctx.Fields = nil
  939. count, err := query.Count(ctx)
  940. if err != nil {
  941. return nil, err
  942. }
  943. ret.PageDetails.Total = uint64(count)
  944. if pager.Order != nil {
  945. t = t.Order(pager.Order)
  946. } else {
  947. t = t.Order(DefaultTokenOrder)
  948. }
  949. t = t.Offset(int((pageNum - 1) * pageSize)).Limit(int(pageSize))
  950. list, err := t.All(ctx)
  951. if err != nil {
  952. return nil, err
  953. }
  954. ret.List = list
  955. return ret, nil
  956. }
  957. type TutorialPager struct {
  958. Order tutorial.OrderOption
  959. Filter func(*TutorialQuery) (*TutorialQuery, error)
  960. }
  961. // TutorialPaginateOption enables pagination customization.
  962. type TutorialPaginateOption func(*TutorialPager)
  963. // DefaultTutorialOrder is the default ordering of Tutorial.
  964. var DefaultTutorialOrder = Desc(tutorial.FieldID)
  965. func newTutorialPager(opts []TutorialPaginateOption) (*TutorialPager, error) {
  966. pager := &TutorialPager{}
  967. for _, opt := range opts {
  968. opt(pager)
  969. }
  970. if pager.Order == nil {
  971. pager.Order = DefaultTutorialOrder
  972. }
  973. return pager, nil
  974. }
  975. func (p *TutorialPager) ApplyFilter(query *TutorialQuery) (*TutorialQuery, error) {
  976. if p.Filter != nil {
  977. return p.Filter(query)
  978. }
  979. return query, nil
  980. }
  981. // TutorialPageList is Tutorial PageList result.
  982. type TutorialPageList struct {
  983. List []*Tutorial `json:"list"`
  984. PageDetails *PageDetails `json:"pageDetails"`
  985. }
  986. func (t *TutorialQuery) Page(
  987. ctx context.Context, pageNum uint64, pageSize uint64, opts ...TutorialPaginateOption,
  988. ) (*TutorialPageList, error) {
  989. pager, err := newTutorialPager(opts)
  990. if err != nil {
  991. return nil, err
  992. }
  993. if t, err = pager.ApplyFilter(t); err != nil {
  994. return nil, err
  995. }
  996. ret := &TutorialPageList{}
  997. ret.PageDetails = &PageDetails{
  998. Page: pageNum,
  999. Size: pageSize,
  1000. }
  1001. query := t.Clone()
  1002. query.ctx.Fields = nil
  1003. count, err := query.Count(ctx)
  1004. if err != nil {
  1005. return nil, err
  1006. }
  1007. ret.PageDetails.Total = uint64(count)
  1008. if pager.Order != nil {
  1009. t = t.Order(pager.Order)
  1010. } else {
  1011. t = t.Order(DefaultTutorialOrder)
  1012. }
  1013. t = t.Offset(int((pageNum - 1) * pageSize)).Limit(int(pageSize))
  1014. list, err := t.All(ctx)
  1015. if err != nil {
  1016. return nil, err
  1017. }
  1018. ret.List = list
  1019. return ret, nil
  1020. }
  1021. type WorkExperiencePager struct {
  1022. Order workexperience.OrderOption
  1023. Filter func(*WorkExperienceQuery) (*WorkExperienceQuery, error)
  1024. }
  1025. // WorkExperiencePaginateOption enables pagination customization.
  1026. type WorkExperiencePaginateOption func(*WorkExperiencePager)
  1027. // DefaultWorkExperienceOrder is the default ordering of WorkExperience.
  1028. var DefaultWorkExperienceOrder = Desc(workexperience.FieldID)
  1029. func newWorkExperiencePager(opts []WorkExperiencePaginateOption) (*WorkExperiencePager, error) {
  1030. pager := &WorkExperiencePager{}
  1031. for _, opt := range opts {
  1032. opt(pager)
  1033. }
  1034. if pager.Order == nil {
  1035. pager.Order = DefaultWorkExperienceOrder
  1036. }
  1037. return pager, nil
  1038. }
  1039. func (p *WorkExperiencePager) ApplyFilter(query *WorkExperienceQuery) (*WorkExperienceQuery, error) {
  1040. if p.Filter != nil {
  1041. return p.Filter(query)
  1042. }
  1043. return query, nil
  1044. }
  1045. // WorkExperiencePageList is WorkExperience PageList result.
  1046. type WorkExperiencePageList struct {
  1047. List []*WorkExperience `json:"list"`
  1048. PageDetails *PageDetails `json:"pageDetails"`
  1049. }
  1050. func (we *WorkExperienceQuery) Page(
  1051. ctx context.Context, pageNum uint64, pageSize uint64, opts ...WorkExperiencePaginateOption,
  1052. ) (*WorkExperiencePageList, error) {
  1053. pager, err := newWorkExperiencePager(opts)
  1054. if err != nil {
  1055. return nil, err
  1056. }
  1057. if we, err = pager.ApplyFilter(we); err != nil {
  1058. return nil, err
  1059. }
  1060. ret := &WorkExperiencePageList{}
  1061. ret.PageDetails = &PageDetails{
  1062. Page: pageNum,
  1063. Size: pageSize,
  1064. }
  1065. query := we.Clone()
  1066. query.ctx.Fields = nil
  1067. count, err := query.Count(ctx)
  1068. if err != nil {
  1069. return nil, err
  1070. }
  1071. ret.PageDetails.Total = uint64(count)
  1072. if pager.Order != nil {
  1073. we = we.Order(pager.Order)
  1074. } else {
  1075. we = we.Order(DefaultWorkExperienceOrder)
  1076. }
  1077. we = we.Offset(int((pageNum - 1) * pageSize)).Limit(int(pageSize))
  1078. list, err := we.All(ctx)
  1079. if err != nil {
  1080. return nil, err
  1081. }
  1082. ret.List = list
  1083. return ret, nil
  1084. }
  1085. type WxPager struct {
  1086. Order wx.OrderOption
  1087. Filter func(*WxQuery) (*WxQuery, error)
  1088. }
  1089. // WxPaginateOption enables pagination customization.
  1090. type WxPaginateOption func(*WxPager)
  1091. // DefaultWxOrder is the default ordering of Wx.
  1092. var DefaultWxOrder = Desc(wx.FieldID)
  1093. func newWxPager(opts []WxPaginateOption) (*WxPager, error) {
  1094. pager := &WxPager{}
  1095. for _, opt := range opts {
  1096. opt(pager)
  1097. }
  1098. if pager.Order == nil {
  1099. pager.Order = DefaultWxOrder
  1100. }
  1101. return pager, nil
  1102. }
  1103. func (p *WxPager) ApplyFilter(query *WxQuery) (*WxQuery, error) {
  1104. if p.Filter != nil {
  1105. return p.Filter(query)
  1106. }
  1107. return query, nil
  1108. }
  1109. // WxPageList is Wx PageList result.
  1110. type WxPageList struct {
  1111. List []*Wx `json:"list"`
  1112. PageDetails *PageDetails `json:"pageDetails"`
  1113. }
  1114. func (w *WxQuery) Page(
  1115. ctx context.Context, pageNum uint64, pageSize uint64, opts ...WxPaginateOption,
  1116. ) (*WxPageList, error) {
  1117. pager, err := newWxPager(opts)
  1118. if err != nil {
  1119. return nil, err
  1120. }
  1121. if w, err = pager.ApplyFilter(w); err != nil {
  1122. return nil, err
  1123. }
  1124. ret := &WxPageList{}
  1125. ret.PageDetails = &PageDetails{
  1126. Page: pageNum,
  1127. Size: pageSize,
  1128. }
  1129. query := w.Clone()
  1130. query.ctx.Fields = nil
  1131. count, err := query.Count(ctx)
  1132. if err != nil {
  1133. return nil, err
  1134. }
  1135. ret.PageDetails.Total = uint64(count)
  1136. if pager.Order != nil {
  1137. w = w.Order(pager.Order)
  1138. } else {
  1139. w = w.Order(DefaultWxOrder)
  1140. }
  1141. w = w.Offset(int((pageNum - 1) * pageSize)).Limit(int(pageSize))
  1142. list, err := w.All(ctx)
  1143. if err != nil {
  1144. return nil, err
  1145. }
  1146. ret.List = list
  1147. return ret, nil
  1148. }