Как стать автором
Обновить

Комментарии 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 (...))

мне казалось, что dobbie-запросы не то что типобезопасные, а даже наоборот. и самое плохое, что там можно пилить чистого вида SQL-запросы, которые даже не валидируются. или я просто не умею его готовить

Зарегистрируйтесь на Хабре, чтобы оставить комментарий