до БД? (в ЧА)
Вижу здесь 2 варианта:
1) Описание всех этих вещей через какие-нибудь DTO
2) Прокидывать от транспорта до БД query builder
Второй вариант нравится больше первого, но не нравится завязка на SQL и зависимость от query builder'а в бизнес-логике
Стикер
1 вариант своя либа, назвал ее SFQB. SortAndFilteringQueryBuilder скоро выложу в опенсорс
а можно посмотреть? если даже и пример а, обновление только что увидел Буду ждать :)
queryFilter, err := sfqb_rqp.NewParseURL(r.URL.Query(), sfqb.QuerySpecification{ IgnoreErrors: false, SingleFields: []sfqb.QuerySingleField{ sfqb.NewRequiredQuerySingleField("limit", sfqb.IntField, sfqb.MinMax(1, 10000)), sfqb.NewRequiredQuerySingleField("offset", sfqb.IntField, sfqb.Min(0)), sfqb.NewRequiredQuerySingleField("company_id”, sfqb.StringField, nil), }, SortFields: sfqb.NewQuerySortFields("updated_at", "created_at"), })
Буквально на днях велосипедил нечто похожее 🤓
я не стал велосипедить, я взял готовую реализацию, написал обвязку свою, сделал человеческие интерфейсы.
А что за аббревиатура _rqp в названии пакета?
1 из реализаций, которую я взял за основу. https://github.com/timsolov/rest-query-parser
Ты линтер не запускал, правда?
да веротяней всего я nolint проставил просто
кстати, раз про линтер зашел разговор: у меня структура проекта следующая: ❯ tree -d -C -L 1 . ├── app │ ├── .golanci.yml | └── Makefile и как бы в app у меня лежит .golangci.yml, а в корне лежите Makefile, в котором есть target — lint. Вопрос: как адекватно запускать линтер чтобы: 1. он не проверял весь go sdk 2. он делал кликабельными ошибки в терминале 3. не было ложноположительных typechek типа chi или pgx undefined в импортах, потому что их импорты это pgx/v5 или chi/v4 а в идеале, я бы вообще вынес .golangci.yml в корень проекта или в папке linters спрятал, но так он вообще отказывается работать
Исправить структуру проекта и будет всё хорошо :)
подскажешь "правильную"?)))
Обсуждают сегодня