package utils

import (
	"strconv"

	"braces.dev/errtrace"
	"github.com/gin-gonic/gin"
)

func GetPageAndPageSize(ctx *gin.Context) (pageInt, pageSizeInt uint32, err error) {
	page := ctx.Query("page")
	if page == "" {
		page = "1"
	}
	var pageSize string
	switch {
	case ctx.Query("page_size") != "":
		pageSize = ctx.Query("page_size")
	case ctx.Query("per_page") != "":
		pageSize = ctx.Query("per_page")
	default:
		pageSize = "10"
	}

	pageInt_, err := strconv.ParseUint(page, 10, 32)
	if err != nil {
		return 1, 10, errtrace.Wrap(err)
	}
	pageSizeInt_, err := strconv.ParseUint(pageSize, 10, 32)
	if err != nil {
		return 1, 10, errtrace.Wrap(err)
	}
	return uint32(pageInt_), uint32(pageSizeInt_), nil
}
