Size: a a a

Programming Offtop

2020 March 19

U

Unat in Programming Offtop
Беда в том, что в случае с билдерами все-равно собирать придётся
источник

GK

Gregory Klyushnikov in Programming Offtop
Alex Wells
database
   .from(t)
   .select(t.departmentId, avg(t.salary))
   .groupBy(t.departmentId)
   .having { avg(t.salary) greater 100.0 }
   .forEach { row ->
       println("${row.getInt(1)}:${row.getDouble(2)}")
   }
Это какой язык
источник

VP

Vladimir Petrakovich in Programming Offtop
Unat
Беда в том, что в случае с билдерами все-равно собирать придётся
Да, но там это удобно, а не склеивание кусков строк руками
источник

VP

Vladimir Petrakovich in Programming Offtop
Добавился фильтр - добавляешь Condition в списочек и всё. А у него внутри кусок запроса и аргумент.
источник

U

Unat in Programming Offtop
Энивей, я не ору что они не нужны, я говорю что они не всегда нужны. И, в отличии от более вонючей инженерии, билдеры можно добавить позже
источник

U

Unat in Programming Offtop
Кстати, в питоне из билдеров выбор у тебя невелик и скорее всего это будет алхимия. А потом в рантайме ты заметишь, что сборка запросов у тебя кушает 96% времени.
источник

U

Unat in Programming Offtop
96%, карл
источник

U

Unat in Programming Offtop
*по информации 2016 года
источник

U

Unat in Programming Offtop
или 2017...
источник

VP

Vladimir Petrakovich in Programming Offtop
Unat
Кстати, в питоне из билдеров выбор у тебя невелик и скорее всего это будет алхимия. А потом в рантайме ты заметишь, что сборка запросов у тебя кушает 96% времени.
Бля, это что надо делать, чтобы конкатенация строк жрала больше, чем запрос к базе
источник

I

Igor in Programming Offtop
Unat
selectProductSt :: Statement ProductId ProductEntity
selectProductSt = Statement sql (encoder :: E.Params String) decoder True
 where
   sql = "select id, name, price, created_at from products where id = $1"
   encoder = E.param (E.nonNullable stringEncoder)
   decoder = D.singleRow productEntityDecoder

Вот хаскелёвый с hasql
Сколько десятков гигайт надо что бы это скомпилить в idea в плагином 🌚
источник

AW

Alex Wells in Programming Offtop
Anton Korotkikh
по факту, и из-за слишком большой разницы в устройстве бд. ну, например, многие тырпрайзы хотят пересесть с ораклины на постгрю... и хрен ты просто так пересядещь. по фичам пропасть - разные релязации jsonb, у кого-то есть blob у кого-то clob и xmltype из него. у кого-то в запросах вообще может быть xquery. у кого-то есть типы данных с массивами у кого-то не очень, кто-то могёт во встроенные key-value внутри записей (hstore в пг например), кто-то нет.

по факту, на большом или долгоигращим проекте, который начинает пользовать фишки бд, миграция становится невозможной даже в узком и популярном наборе бд, не то что подмена хранилища на уровне абстракции: постгря, оракл, мс, мускул... не говоря уже о каких-то менее поплуярных вещах типа дб2
Это ты про миграцию запросов. Там я говорил про маппинг.

Хотя и миграция реальная. Просто не стоит использовать эти фичи напрямую, а закрыть их какой-нибудь простенькой абстракцией, отделающих критерию выборки от реализации. Например - OfUserCriteria, с разной реализацией для разных рсубд (если нужно. Нет - можно и попроще)
источник

AW

Alex Wells in Programming Offtop
Gregory Klyushnikov
Это какой язык
kotlin
источник

U

Unat in Programming Offtop
Igor
Сколько десятков гигайт надо что бы это скомпилить в idea в плагином 🌚
Видел как плагин съедал на моём Hello World 1600мб
источник

Kd

Konstantin dmz9 in Programming Offtop
короче опять ктото орм не осилил и пиздит
источник

VP

Vladimir Petrakovich in Programming Offtop
Konstantin dmz9
короче опять ктото орм не осилил и пиздит
А зачем его осиливать?
источник

GK

Gregory Klyushnikov in Programming Offtop
источник

AW

Alex Wells in Programming Offtop
а ты у нас на чем пишешь?)
источник

Kd

Konstantin dmz9 in Programming Offtop
Vladimir Petrakovich
А зачем его осиливать?
затем что это избавляет от скобочкоебства
источник

AW

Alex Wells in Programming Offtop
а то чувствую, что твой язык мне проще засрать, чем тебе котлин)
источник