Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

list_options.go 1.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. // Copyright 2020 The Gitea Authors. All rights reserved.
  2. // Use of this source code is governed by a MIT-style
  3. // license that can be found in the LICENSE file.
  4. package models
  5. import (
  6. "code.gitea.io/gitea/modules/setting"
  7. "xorm.io/xorm"
  8. )
  9. // ListOptions options to paginate results
  10. type ListOptions struct {
  11. PageSize int
  12. Page int // start from 1
  13. }
  14. func (opts *ListOptions) getPaginatedSession() *xorm.Session {
  15. opts.setDefaultValues()
  16. return x.Limit(opts.PageSize, (opts.Page-1)*opts.PageSize)
  17. }
  18. func (opts *ListOptions) setSessionPagination(sess *xorm.Session) *xorm.Session {
  19. opts.setDefaultValues()
  20. if opts.PageSize <= 0 {
  21. return sess
  22. }
  23. return sess.Limit(opts.PageSize, (opts.Page-1)*opts.PageSize)
  24. }
  25. func (opts *ListOptions) setEnginePagination(e Engine) Engine {
  26. opts.setDefaultValues()
  27. return e.Limit(opts.PageSize, (opts.Page-1)*opts.PageSize)
  28. }
  29. // GetStartEnd returns the start and end of the ListOptions
  30. func (opts *ListOptions) GetStartEnd() (start, end int) {
  31. opts.setDefaultValues()
  32. start = (opts.Page - 1) * opts.PageSize
  33. end = start + opts.Page
  34. return
  35. }
  36. func (opts *ListOptions) setDefaultValues() {
  37. if opts.PageSize <= 0 {
  38. opts.PageSize = setting.API.DefaultPagingNum
  39. }
  40. if opts.PageSize > setting.API.MaxResponseItems {
  41. opts.PageSize = setting.API.MaxResponseItems
  42. }
  43. if opts.Page <= 0 {
  44. opts.Page = 1
  45. }
  46. }