меня есть ендпоинт, который возвращает всех кошечек одного пользователя, но кошечек может быть много, и я бы не хотел возвращать всех кошечек пользователей, а возвращать частями ( пагинация ), и если параметр страницы / лимита не передан, то устанавливать некоторые дефолтные значения.
Вот, я создал следующую структуру:
type CatsFindByUserDTO struct {
UserID int `form:"user_id" binding:"required"`
Page *int `form:"page"`
Limit *int `form:"limit"`
}
Пытаюсь её замапить вот так:
var filter dto.CatsFindByUserDTO
if err := c.BindQuery(filter); err != nil {
newErrorResponse(c, http.StatusBadRequest, err.Error())
return
}
Но результат не тот, что я ожидал. Я нагуглил решения, в которых предлагается Page / Limit объявить строками, и сравнивать с пустой строкой. Нет ли возможности, мапить на указатель встроенными инструментами ? Т.е. я бы хотел, если значения нет — то nil, если есть, то указатель по которому лежит переданное число.
Если такого варианта нет, то как можно организовать логику этого маппинга ( куда вынести, как делают у вас проектах ) ?
я на прошлой работе вот такое использовал: https://github.com/volatiletech/null/
Обсуждают сегодня