
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

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

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

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

Google

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

Andrey
11.12.2016
12:49:35

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

Timothy
11.12.2016
12:50:01

Nikolay
11.12.2016
12:50:06

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

Andrey
11.12.2016
12:50:48

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

Andrey
11.12.2016
12:52:15

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

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 добавок
и я даже не знаю, как это можно сделать удобнее

Timothy
11.12.2016
12:58:16

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

Timothy
11.12.2016
13:00:29

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

Andrey
11.12.2016
13:06:19

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 его не беру теперь — простые запросы элементарно делаются на чём угодно