этот фильтр и в зависимости от заполненных полей собирает запрос. Тут что с орм, что без него - одинаково - конструируем sql, ничего не абстрагируем.
С gorm это как-то так:
If filter.Name != "" {
bulider = builder.Where("name = ?", filter.Name)
}
builder.Count...
builder.Find...
Без gorm суть остаётся той же,
Но там разница в том, что все значения плейсхолдеров собираем в слайс []interface, и передаём при запросе единожды при запросе.
Вот я думал делать так, но как быть с местами, где у нас вложенные and/or и какие-то части запроса определяются вышестоящими условиями
Кстати, если у нас будет в зависимости от контекста необходимость делать выбор где, например, UserId равно чему то, либо же наоборот, не равно чему-то, вы бы как сделали? Сделали два поля UserIdEquals и UserIdNotEquals?
Обсуждают сегодня