pagination.go 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295
  1. // Code generated by ent, DO NOT EDIT.
  2. package ent
  3. import (
  4. "context"
  5. "fmt"
  6. "github.com/suyuan32/simple-admin-job/ent/messagerecords"
  7. "github.com/suyuan32/simple-admin-job/ent/task"
  8. "github.com/suyuan32/simple-admin-job/ent/tasklog"
  9. )
  10. const errInvalidPage = "INVALID_PAGE"
  11. const (
  12. listField = "list"
  13. pageNumField = "pageNum"
  14. pageSizeField = "pageSize"
  15. )
  16. type PageDetails struct {
  17. Page uint64 `json:"page"`
  18. Size uint64 `json:"size"`
  19. Total uint64 `json:"total"`
  20. }
  21. // OrderDirection defines the directions in which to order a list of items.
  22. type OrderDirection string
  23. const (
  24. // OrderDirectionAsc specifies an ascending order.
  25. OrderDirectionAsc OrderDirection = "ASC"
  26. // OrderDirectionDesc specifies a descending order.
  27. OrderDirectionDesc OrderDirection = "DESC"
  28. )
  29. // Validate the order direction value.
  30. func (o OrderDirection) Validate() error {
  31. if o != OrderDirectionAsc && o != OrderDirectionDesc {
  32. return fmt.Errorf("%s is not a valid OrderDirection", o)
  33. }
  34. return nil
  35. }
  36. // String implements fmt.Stringer interface.
  37. func (o OrderDirection) String() string {
  38. return string(o)
  39. }
  40. func (o OrderDirection) reverse() OrderDirection {
  41. if o == OrderDirectionDesc {
  42. return OrderDirectionAsc
  43. }
  44. return OrderDirectionDesc
  45. }
  46. const errInvalidPagination = "INVALID_PAGINATION"
  47. type MessageRecordsPager struct {
  48. Order messagerecords.OrderOption
  49. Filter func(*MessageRecordsQuery) (*MessageRecordsQuery, error)
  50. }
  51. // MessageRecordsPaginateOption enables pagination customization.
  52. type MessageRecordsPaginateOption func(*MessageRecordsPager)
  53. // DefaultMessageRecordsOrder is the default ordering of MessageRecords.
  54. var DefaultMessageRecordsOrder = Desc(messagerecords.FieldID)
  55. func newMessageRecordsPager(opts []MessageRecordsPaginateOption) (*MessageRecordsPager, error) {
  56. pager := &MessageRecordsPager{}
  57. for _, opt := range opts {
  58. opt(pager)
  59. }
  60. if pager.Order == nil {
  61. pager.Order = DefaultMessageRecordsOrder
  62. }
  63. return pager, nil
  64. }
  65. func (p *MessageRecordsPager) ApplyFilter(query *MessageRecordsQuery) (*MessageRecordsQuery, error) {
  66. if p.Filter != nil {
  67. return p.Filter(query)
  68. }
  69. return query, nil
  70. }
  71. // MessageRecordsPageList is MessageRecords PageList result.
  72. type MessageRecordsPageList struct {
  73. List []*MessageRecords `json:"list"`
  74. PageDetails *PageDetails `json:"pageDetails"`
  75. }
  76. func (mr *MessageRecordsQuery) Page(
  77. ctx context.Context, pageNum uint64, pageSize uint64, opts ...MessageRecordsPaginateOption,
  78. ) (*MessageRecordsPageList, error) {
  79. pager, err := newMessageRecordsPager(opts)
  80. if err != nil {
  81. return nil, err
  82. }
  83. if mr, err = pager.ApplyFilter(mr); err != nil {
  84. return nil, err
  85. }
  86. ret := &MessageRecordsPageList{}
  87. ret.PageDetails = &PageDetails{
  88. Page: pageNum,
  89. Size: pageSize,
  90. }
  91. count, err := mr.Clone().Count(ctx)
  92. if err != nil {
  93. return nil, err
  94. }
  95. ret.PageDetails.Total = uint64(count)
  96. if pager.Order != nil {
  97. mr = mr.Order(pager.Order)
  98. } else {
  99. mr = mr.Order(DefaultMessageRecordsOrder)
  100. }
  101. mr = mr.Offset(int((pageNum - 1) * pageSize)).Limit(int(pageSize))
  102. list, err := mr.All(ctx)
  103. if err != nil {
  104. return nil, err
  105. }
  106. ret.List = list
  107. return ret, nil
  108. }
  109. type TaskPager struct {
  110. Order task.OrderOption
  111. Filter func(*TaskQuery) (*TaskQuery, error)
  112. }
  113. // TaskPaginateOption enables pagination customization.
  114. type TaskPaginateOption func(*TaskPager)
  115. // DefaultTaskOrder is the default ordering of Task.
  116. var DefaultTaskOrder = Desc(task.FieldID)
  117. func newTaskPager(opts []TaskPaginateOption) (*TaskPager, error) {
  118. pager := &TaskPager{}
  119. for _, opt := range opts {
  120. opt(pager)
  121. }
  122. if pager.Order == nil {
  123. pager.Order = DefaultTaskOrder
  124. }
  125. return pager, nil
  126. }
  127. func (p *TaskPager) ApplyFilter(query *TaskQuery) (*TaskQuery, error) {
  128. if p.Filter != nil {
  129. return p.Filter(query)
  130. }
  131. return query, nil
  132. }
  133. // TaskPageList is Task PageList result.
  134. type TaskPageList struct {
  135. List []*Task `json:"list"`
  136. PageDetails *PageDetails `json:"pageDetails"`
  137. }
  138. func (t *TaskQuery) Page(
  139. ctx context.Context, pageNum uint64, pageSize uint64, opts ...TaskPaginateOption,
  140. ) (*TaskPageList, error) {
  141. pager, err := newTaskPager(opts)
  142. if err != nil {
  143. return nil, err
  144. }
  145. if t, err = pager.ApplyFilter(t); err != nil {
  146. return nil, err
  147. }
  148. ret := &TaskPageList{}
  149. ret.PageDetails = &PageDetails{
  150. Page: pageNum,
  151. Size: pageSize,
  152. }
  153. count, err := t.Clone().Count(ctx)
  154. if err != nil {
  155. return nil, err
  156. }
  157. ret.PageDetails.Total = uint64(count)
  158. if pager.Order != nil {
  159. t = t.Order(pager.Order)
  160. } else {
  161. t = t.Order(DefaultTaskOrder)
  162. }
  163. t = t.Offset(int((pageNum - 1) * pageSize)).Limit(int(pageSize))
  164. list, err := t.All(ctx)
  165. if err != nil {
  166. return nil, err
  167. }
  168. ret.List = list
  169. return ret, nil
  170. }
  171. type TaskLogPager struct {
  172. Order tasklog.OrderOption
  173. Filter func(*TaskLogQuery) (*TaskLogQuery, error)
  174. }
  175. // TaskLogPaginateOption enables pagination customization.
  176. type TaskLogPaginateOption func(*TaskLogPager)
  177. // DefaultTaskLogOrder is the default ordering of TaskLog.
  178. var DefaultTaskLogOrder = Desc(tasklog.FieldID)
  179. func newTaskLogPager(opts []TaskLogPaginateOption) (*TaskLogPager, error) {
  180. pager := &TaskLogPager{}
  181. for _, opt := range opts {
  182. opt(pager)
  183. }
  184. if pager.Order == nil {
  185. pager.Order = DefaultTaskLogOrder
  186. }
  187. return pager, nil
  188. }
  189. func (p *TaskLogPager) ApplyFilter(query *TaskLogQuery) (*TaskLogQuery, error) {
  190. if p.Filter != nil {
  191. return p.Filter(query)
  192. }
  193. return query, nil
  194. }
  195. // TaskLogPageList is TaskLog PageList result.
  196. type TaskLogPageList struct {
  197. List []*TaskLog `json:"list"`
  198. PageDetails *PageDetails `json:"pageDetails"`
  199. }
  200. func (tl *TaskLogQuery) Page(
  201. ctx context.Context, pageNum uint64, pageSize uint64, opts ...TaskLogPaginateOption,
  202. ) (*TaskLogPageList, error) {
  203. pager, err := newTaskLogPager(opts)
  204. if err != nil {
  205. return nil, err
  206. }
  207. if tl, err = pager.ApplyFilter(tl); err != nil {
  208. return nil, err
  209. }
  210. ret := &TaskLogPageList{}
  211. ret.PageDetails = &PageDetails{
  212. Page: pageNum,
  213. Size: pageSize,
  214. }
  215. count, err := tl.Clone().Count(ctx)
  216. if err != nil {
  217. return nil, err
  218. }
  219. ret.PageDetails.Total = uint64(count)
  220. if pager.Order != nil {
  221. tl = tl.Order(pager.Order)
  222. } else {
  223. tl = tl.Order(DefaultTaskLogOrder)
  224. }
  225. tl = tl.Offset(int((pageNum - 1) * pageSize)).Limit(int(pageSize))
  226. list, err := tl.All(ctx)
  227. if err != nil {
  228. return nil, err
  229. }
  230. ret.List = list
  231. return ret, nil
  232. }