Size: a a a

Clojure — русскоговорящее сообщество

2020 June 12

A

Artem in Clojure — русскоговорящее сообщество
Ivan Grishaev
если только имя пользователя и департамента, то можно просто выбрать атрибуты и задать свойство keys, чтобы получить список мап. А пулл тогда не нужен
Для примера я мало аттрибутов указал. На деле там около 10 аттрибутов и 2 из них это ref-ы. Так вот мне нужно получить все родные атрибуты плюс какие-то атрибуты из ref-ов, но не сами рефы. Упаковать в виде красивой мапки
источник

A

Artem in Clojure — русскоговорящее сообщество
Таких запросов на различные сущности, думаю, будет в районе 8-10.
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
ну тогда просто перечислить атрибуты и добавить в запрос :keys
источник

A

Artem in Clojure — русскоговорящее сообщество
ок спасибо, значит не упустил ничего. с пулом не прокатит нормально.
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
а что значит "с пулом"?
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
Artem
Господа, приветствую. Вопрос по datomic/datalog.

Допустим, есть сущности с атрибутами (атрибутов значительно больше чем в примере)

;; user
{:user/name :db.type/string
:user/department :db.type/ref}

;; department
{:department/id :db.type/integer
:department/name :db.type/string}

Мне нужно заполучить список пользователей в виде

[{:user/name "Ikram"
 :department/name "Space Force"} ... ]

Я делаю следующим образом (выглядит некрасиво):

(d/query {:query '{:find [(pull ?u [:user/name]) ?dep-name]
                   :keys [user
                          dep-name]
                   :where [[?e :user/name]
                           [?e :user/department ?d]
                           [?d :department/name ?dep-name]]}})

А затем уже постфактум я маппирую полученные значения, придаю им нужную форму.
Можно сделать без pull, но тогда придется перечислять все поля в where, коих множество.
Как красивей реализовать подобное?
там еще можно ходить по ссылкам в обратную сторону, в том числе и в pull, будет не тот формат, который нужен, но вдруг это решение?
источник

A

Artem in Clojure — русскоговорящее сообщество
часть данных получить pull, а часть просто из where
источник

A

Artem in Clojure — русскоговорящее сообщество
Mikhail Kuzmin
там еще можно ходить по ссылкам в обратную сторону, в том числе и в pull, будет не тот формат, который нужен, но вдруг это решение?
спасибо, про обратные ссылки вкурсе, но не подходит
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
а, понял. Просто результат пула почти всегда нужно переколбашивать, а в запросе можно сразу собрать, что надо.
источник

A

Artem in Clojure — русскоговорящее сообщество
я думал можно сделать нечто вроде кастомного пула
источник

A

Artem in Clojure — русскоговорящее сообщество
часто встречал восторженные отзывы о pull
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
в пул можно передать паттерн, но его иерархия вседа будет постоянной
источник

A

Artem in Clojure — русскоговорящее сообщество
но пока не оценил
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
например, реф всегда будет вложенной сущностью, нельзя вкатить его на уровень выше
источник

A

Artem in Clojure — русскоговорящее сообщество
ref-ы из пула дергать неудобно, 100% создается дочерняя мапка
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
ну если что query это просто вектор, вся схема тоже доступна как данные. я к том, что никто не мешает генерить запросы или частично генерить запросы 😉
источник
2020 June 13

A

Artem in Clojure — русскоговорящее сообщество
источник

A

Artem in Clojure — русскоговорящее сообщество
у кого такое было? в Idea часто после tab/enter на подсказке пауза больше секунды перед вставкой.
источник

A

Artem in Clojure — русскоговорящее сообщество
возникает примерно в 30-40% случаев
источник

A

Artem in Clojure — русскоговорящее сообщество
источник