limit.go 591 B

12345678910111213141516171819202122232425262728293031323334353637
  1. package clause
  2. type Limit struct {
  3. limit int
  4. offset int
  5. }
  6. func NewLimit(pageNo int, pageSize int) *Limit {
  7. limit := -1
  8. offset := -1
  9. if pageNo != 0 && pageSize != 0 {
  10. limit = pageSize
  11. offset = (pageNo - 1) * pageSize
  12. }
  13. return &Limit{
  14. limit: limit,
  15. offset: offset,
  16. }
  17. }
  18. func (limit *Limit) Clause() (string, error) {
  19. if limit.limit == -1 || limit.offset == -1 {
  20. return "", nil
  21. }
  22. return `LIMIT ? OFFSET ?`, nil
  23. }
  24. func (limit *Limit) Args() []any {
  25. if limit.limit == -1 || limit.offset == -1 {
  26. return make([]any, 0)
  27. }
  28. return []any{limit.limit, limit.offset}
  29. }