Комментарии 8
Есть ли на скале фреймворк который может строить запросы в бд таким образом:

Например Include(x => x.SomeProperty) это Join
Остальное думаю и так понятно.
Вся логика будет выполнена на стороне БД
Хмхм, если правильно понял, то будто бы quill и slick близки по ощущениям. Так же на dsl описывается логика, которая преобразуется автоматически в sql и выполняется в БД
Но я думаю ты согласишься что ты даже не зная что это за язык и фреймворк, понял каждую строчку.
меня смущает то что на скале это всё делается намного сложнее и преимуществ в этой сложности я не вижу
Смотря как посмотреть.
С одной стороны, дело привычки. Как по мне, так код quill-а выглядит интуитивным для скалистов, потому что .map, .flatMap и такого вида конструкции - это наш хлеб. И получается как раз понятный dsl вида query[Person].map(_.name).take(5). При этом под капотом там хитрые вещи происходят.
С другой стороны, а зачем вообще все эти синтаксический сахара над sql? Можно взять doobie, в котором буквально пилить чистого вида sql-запросы, но при этом типобезопасные.
Может ответ сумбурный получился, но я к тому, что есть фреймворки на разный вкус. Но, имхо, не красота синтаксиса решает. Функционал, стабильность и живость библиотек важнее)
Обычно все примеры на ORM фреймворках - уровня детского сада)))
А как там делается ветвление - опциональные фильтры, сортировка по выбору пользователя, группировка по выбору?
Как там добавить конструкции вида
foreach(paramFilter in paramFilters)
{
productsQuery = productsQuery
.Where(product => product .Params
.Any(param => param.ParamId == paramFilter.ParamId &&
paramFilter.Values.Contains(param.Value)));
}
Который транслируется в список
AND EXISTS(select 1
from ProductParamValues
where ProductId = ... AND ParamId = ... AND VALUE IN (...))
Примерно так-же и делается https://zio.dev/zio-quill/writing-queries#dynamic-queries
мне казалось, что dobbie-запросы не то что типобезопасные, а даже наоборот. и самое плохое, что там можно пилить чистого вида SQL-запросы, которые даже не валидируются. или я просто не умею его готовить
Scala Digest. Выпуск 20