Fork me on GitHub
#clojure-russia
<
2017-09-05
>
andrewtropin13:09:58

Кто использует graphql? Как вы живёте с тем, что там только camelCase? У меня получается база в snake_case, код в kebab-case и одно в другое неплохо конвертится автоматически. Но если добавить graphql, то как минимум схема на edn будет в camelCase, что совсем не прикольно. Кто знает как быть?

leov20:09:13

господа, а можно вот философский вопрос

leov20:09:31

а то я даже вот кложу подзабросил потому что я хз как вести на ней масштабируемую разработку (tm)

leov20:09:38

(это когда больше 5 файлов)

leov20:09:48

вопрос звучит так: почему мы юзаем keyword'ы с неймспейсами, которые нечувствительны к опечаткам, вместо того, чтобы объявить их в нужном неймспейсе как вары?

anjensan09:09:03

А мы юзаем? В смысле это разве распространенная практика -- использовать namespaced-keywords из другого неймспейса?

leov20:09:42

ну понятно, то есть раз кложа - мы гоняем туда-сюда словари, и делаем по ним мапы и ещё мапы. и потом сиди думай, устарели эти конкретные киворды, или ты уже всё отрефакторил и в коде реально это ещё как живёт

leov20:09:25

и сидишь пыришься в этот код без тестов, потому что тесты ещё не хватало писать на 6 файлов (да, вот добавляю к тем пяти шестой, ага)

leov20:09:47

то есть пропозал по идее какой? было

(ns hi.there)

(def mem-db
  {:something {:megaservice/adapter ..}})


(ns megaservice)
;; (defn .. разные функции, которые поедают и работаю с :megaservice/adapter)
стало
(ns hi.there)

(def mem-db
  {:something {megaservice-adapter ..}})

(ns megaservice)
(def adapter ::adapter)

leov20:09:57

имеем: сделал опечатку - А КОНПИЛЯТОР ВСЁ ВИДИТ(!)

leov20:09:38

как оно, такое? (дунул-придумал)

leov21:09:36

@kuzmin_m это императивненько

def move_link_to_packet_for_replaced_race(race)
    return if data.replaced_order_uid.blank?
    replaced_race = Race.find_by(uid: data.replaced_order_uid)
    return if replaced_race.blank?
    return if replaced_race.packet.blank?
    replaced_race.packet_attached_race.update! race: race
  end
менее императивно (а presence - рельсово):
def move_link_to_packet_for_replaced_race(race)
    data.replaced_order_uid.presence  # presence вставил только для того, чтобы сохранить дословно семантику оригинала
      .try! {|e| Race.find_by(uid: e)}
      .try!(:packet_attached_race) 
      .try! {|e| e.update! race: race }
  end

anjensan09:09:03

А мы юзаем? В смысле это разве распространенная практика -- использовать namespaced-keywords из другого неймспейса?