@scala_ru

Страница 295 из 1499
Vladimir
11.12.2016
10:42:03
в примере как раз приватно все

Anatoliy
11.12.2016
10:47:55
но да, это было важно, правда щас ругаюсь с override def * = (from, feedback, headers, date_add, ip) <> (Feedback.tupled, Feedback.unapply _) - ну вот не хочет и всё тут. А в примере как раз работает...

Есть подозрение что это из за необходимости использовать import com.github.tototoshi.slick.MySQLJodaSupport.driver.api._, но и его не хочет видеть(

В обещм если кто может сказать почему показывает ошибку type mismatch; found : slick.lifted.MappedProjection[model.Feedback,(Long, String, String, String, org.joda.time.DateTime, String)] required: slick.lifted.ProvenShape[Nothing] - буду очень благодарен, до этого делал - всё работало что не так - не понимаю...

Google
Nikolay
11.12.2016
11:06:15
а можешь model.Feedback в gist тоже добавить?

extends Table(tag, "feedback”) -> extends Table[Feedback](tag, "feedback") попробуй

у меня смутное подозрение что дело в этом

Anatoliy
11.12.2016
11:09:56
а можешь model.Feedback в gist тоже добавить?
model добавил, но там собственно просто case class Feedback(id: Long = 0, from: String, feedback: String, headers: String, date_add: DateTime, ip: String)

Nikolay
11.12.2016
11:10:29
а type parameter пробовал добавить к Table уже?

Anatoliy
11.12.2016
11:11:09
class FeedbackTable(tag: Tag) extends Table[Feedback](tag, "feedback") { так?

Nikolay
11.12.2016
11:11:32
да

смотри, ты в IDEA кодишь?

Anatoliy
11.12.2016
11:12:34
Nikolay
11.12.2016
11:14:15
идея выводит тип как Nothing, как у тебя в ошибке

Anatoliy
11.12.2016
11:14:33
override def * : ProvenShape[Feedback] = (id, from, feedback, headers, date_add, ip) <> (Feedback.tupled, Feedback.unapply _)

Вот так в итоге получается олжно быть?

Сделал

Google
Anatoliy
11.12.2016
11:15:07
Так и выдало, 1 в 1

https://gist.github.com/Visteras/45794cc386ac1f7cc9e8f85cce0722f5

Вот такое в итоге начало выдавать

Nikolay
11.12.2016
11:16:10
у тебя есть для DateTime мапперы?

Or you use an unsupported type in a Query

Anatoliy
11.12.2016
11:17:01
У меня есть подозрение что это из-за использования DateTime, с которым по идее я проблему решил

implicit val dateTimeColumnType = MappedColumnType.base[DateTime, Timestamp]( dt => new Timestamp(dt.getMillis), ts => new DateTime(ts.getTime()) )

import com.github.tototoshi.slick.MySQLJodaSupport.driver.api._ вместо import driver.api._

Nikolay
11.12.2016
11:18:36
вот насчет импортов на раз сказать не могу

Anatoliy
11.12.2016
11:18:50
Всё, это я дурак, там было def listAllSortedDateDesc: Future[Seq[Feedback]] = { db.run((for { f <- table.sortBy(_.date_add.desc) } yield f.*).result) }

.* - там такого быть не должно

теперь работает, и это замечательно. Спасибо большое за помощь)

Nikolay
11.12.2016
11:20:04
?

это я понимаю приложение play+slick?

Sergey Tolmachev
11.12.2016
12:32:35
прочитал я последние сообщения. эти 40 минут стоили того, чтобы получить отсортированный список объектов? :) </slick-hater>

Kirill
11.12.2016
12:37:20
А если объективно, что сейчас в скале лучшее для работы с БД? quill/squeryll? или лучше вообще просто пользоваться обёртками над jdbc типо scalikejdbc?

Sergey Tolmachev
11.12.2016
12:38:18
я за последнее

но и то я заюзал их query dsl и уже немного жалею в очень сложных запросах

Daniel
11.12.2016
12:38:51
вопрос где много вкусовщины придется перепробовать самому

Google
Sergey Tolmachev
11.12.2016
12:39:04
это теперь не просто месиво из sql, а scala и sql месиво. но там стоит просто на sql написать

Andrey
11.12.2016
12:43:27
прочитал я последние сообщения. эти 40 минут стоили того, чтобы получить отсортированный список объектов? :) </slick-hater>
Ну это же тролинг)) Так можно сказать про любую новую изучаемую технологию. Всегда тратится время на то что бы въехать как использовать. Сейчас у меня на слике не тратится время на такие вещи. Плюс на нем рефакторить проект одно удовольствие, не надо кучу запросов переписывать каждый раз при изменении сущностей. Плюс это проверяется при компиляции, а не в рантайме, что еще больше времени экономит.

Sergey Tolmachev
11.12.2016
12:45:51
я пробовал слик и мое мнение, что что-то сложнее crud там сложно сделать

Timothy
11.12.2016
12:45:55
после 2 лет использования слика с его багами и очень медленным dsl, doobie это свет в тоннеле, где нет ебли с кривыми запросами и ошибок, когда где-то в дебрях слика происходит None.get

Sergey Tolmachev
11.12.2016
12:46:09
если хочешь сделать сложный запрос, то от тебя уйдет семья и друзья. или ты забьешь

doobie не пробовал, но возможно я теперь предвзят ко всему этому функциональному sql подходу и думаю суть осталась та же

Timothy
11.12.2016
12:46:59
doobie это обертка над jdbc

с фри монадками

Sergey Tolmachev
11.12.2016
12:47:06
а slick?

Timothy
11.12.2016
12:47:26
doobie это scalikejdbc на стероидах

Sergey Tolmachev
11.12.2016
12:47:29
это же все над jdbc, как ни крути

Andrey
11.12.2016
12:47:32
если хочешь сделать сложный запрос, то от тебя уйдет семья и друзья. или ты забьешь
Это просто отличный поинт, чтобы нормально архитектурить приложение. ЧТОб не пришлось потом заниматься извратом)

Daniel
11.12.2016
12:47:55
рекламные лозунги прям ?

Timothy
11.12.2016
12:48:09
а slick это orm, где написать сырой sql запрос с кастомными типами боль и унижение

Sergey Tolmachev
11.12.2016
12:48:28
Это просто отличный поинт, чтобы нормально архитектурить приложение. ЧТОб не пришлось потом заниматься извратом)
ну я например сам отдаю на sql уровне Futute[Result], как я делаю - это неважно, либа мне дает ее или я хоть на голом jdbc делаю запрос, обернутый в фьючу

Timothy
11.12.2016
12:48:43
ну или попробовать добавить туда нативный upsert для pg 9.6

Sergey Tolmachev
11.12.2016
12:48:51
архитектурный вопрос не решается либами

Andrey
11.12.2016
12:49:06
после 2 лет использования слика с его багами и очень медленным dsl, doobie это свет в тоннеле, где нет ебли с кривыми запросами и ошибок, когда где-то в дебрях слика происходит None.get
Да собственно никто и не говорит, что слик идеален. Мне от просто непонятно, почему так сильно хейтят его. За год использования ни разу не натыкался на какие-то серьезные баги. Ну и в использовании он простой как палка. Описал поля таблицв и фигаришь 2-3 строки запроса.

Google
Sergey Tolmachev
11.12.2016
12:49:12
там есть pg-extension и это тоже боль

Sergey Tolmachev
11.12.2016
12:49:58
ну вы меня прямо заинтриговали с doobie

Admin
ERROR: S client not available

Sergey Tolmachev
11.12.2016
12:50:08
но фри монадки я тоже неочень перевариваю

Timothy
11.12.2016
12:50:17
и запрос в 1-2 мс становится в 80-100 мс только из-за слика

Sergey Tolmachev
11.12.2016
12:50:47
а потом тебе нужно добавить пару джойнов, фильтры и твои compiled запросы уже не собираются
+++ при этом в scalikejdbc это хоть и немного монструозно, но копилируется и работает

Andrey
11.12.2016
12:50:48
и запрос в 1-2 мс становится в 80-100 мс только из-за слика
Да, это единственная серьезная проблема, если запрос не компилится,то беда

Sergey Tolmachev
11.12.2016
12:51:21
в scalikejdbc ты прям sql конструируешь и не получишь никакого неоптимального sql, если ты не написал его сам

или не построил с помощью dsl соответственно

Andrey
11.12.2016
12:51:43
Плохо, что слик очень медленно развивается. Так то задумка очень удобная, можно ипользовать

Timothy
11.12.2016
12:51:51
Да, это единственная серьезная проблема, если запрос не компилится,то беда
это не беда, беда когда у тебя в рантайме падает слик из-за ошибок с None.get, как я писал выше и тут начинаются приключения

Andrey
11.12.2016
12:52:15
это не беда, беда когда у тебя в рантайме падает слик из-за ошибок с None.get, как я писал выше и тут начинаются приключения
Ни разу не сталкивался, а из-за чего такое появляется? Может это старая 2.0 версия?

Timothy
11.12.2016
12:53:15
это была версия 3.0 https://github.com/slick/slick/issues/1137

иногда в 3.1 такое бывает, но теперь сложные запросы только через sql"..."

Sergey Tolmachev
11.12.2016
12:53:58
ну серьезные баги везде бывают. в play 2.5.* я не уверен, что до сих пор утечку памяти исправили

Andrey
11.12.2016
12:54:12
это была версия 3.0 https://github.com/slick/slick/issues/1137
Да уж, беда. И кейс-то простой.

Sergey Tolmachev
11.12.2016
12:54:14
и это явно не повод для хейта

Google
Timothy
11.12.2016
12:54:56
я не хейчу слик, но рекомендовать его бы не стал, когда нужно быстро набросать crud

Sergey Tolmachev
11.12.2016
12:55:28
я бы скорее наоборот, когда быстро и crud может и норм, а в долгосрочной перспективе или для чего-то сложного ни за что

Andrey
11.12.2016
12:55:59
А вот если надо чтобы все прямо сейчас, тогда вопрос

Sergey Tolmachev
11.12.2016
12:56:20
мой поинт тут фейл в подходе, а не в библиотеке и ее текущих проблемах

ок, сейчас для меня проблема, что там нет upsert в pg. спустя пару лет они впилят. а за это время еще пара фичей появится, которые фиг заюзаешь опять до обновления

в scalike я это делаю либо просто на sql, либо на query dsl + немного голых sql добавок

и я даже не знаю, как это можно сделать удобнее

Sergey Tolmachev
11.12.2016
12:59:06
непросто или нельзя в slick совмещать их плюшки и голый sql. тем более компоновать

а в doobie с этим как? если он на scalike, то спуститься на уровень ниже можно всегда?

Timothy
11.12.2016
13:00:29
непросто или нельзя в slick совмещать их плюшки и голый sql. тем более компоновать
в слике же обычный маппинг нельзя переиспользовать для сырого sql, нужно снова повторять имплиситы для SetParamater и GetResult

а в doobie с этим как? если он на scalike, то спуститься на уровень ниже можно всегда?
он не на скалайк, он как функциональная прослойка для jdbc без магии как в slick

Sergey Tolmachev
11.12.2016
13:02:59
если честно, я когда-то этого от slick и ожидал. а там это

Timothy
11.12.2016
13:10:40
а да, чем еще бесит слик, так это когда сложный джойн и нужна группировка только по pk одной из таблиц, то слик группирует сразу по всем из таблицы, иначе остальные пойдут как колонки для агрегации. с кастомными типами или колонками типа json в одной из таблиц это настоящая боль. в итоге distinct on и вера в то, что компайлер запросов построит запрос хотя бы в 2 раза хуже ручного (в 3.2 сломали джойны и иногда они становятся селектами без вызова subquery)

Lev
11.12.2016
13:11:44
что с pg проблемы, что с oracle, что с sqlite. архитектурные решения, рассчитанные на универсальность, не дают его использовать в сколь-нибудь сложных приложениях. если честно, я даже в crud его не беру теперь — простые запросы элементарно делаются на чём угодно

Страница 295 из 1499