This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2020-02-19
Channels
- # announcements (10)
- # aws (3)
- # aws-lambda (1)
- # babashka (24)
- # beginners (57)
- # boot (5)
- # calva (20)
- # chlorine-clover (3)
- # cider (14)
- # clj-kondo (37)
- # clojars (17)
- # clojure (200)
- # clojure-dev (40)
- # clojure-europe (9)
- # clojure-france (7)
- # clojure-gamedev (5)
- # clojure-hungary (4)
- # clojure-italy (8)
- # clojure-losangeles (2)
- # clojure-nl (9)
- # clojure-uk (97)
- # clojurebridge (1)
- # clojured (3)
- # clojuredesign-podcast (23)
- # clojurescript (13)
- # code-reviews (2)
- # component (22)
- # core-typed (7)
- # cursive (64)
- # datascript (12)
- # datomic (60)
- # emacs (6)
- # fulcro (54)
- # graalvm (11)
- # graphql (3)
- # hoplon (25)
- # jobs (1)
- # joker (85)
- # juxt (5)
- # kaocha (10)
- # klipse (8)
- # malli (2)
- # off-topic (36)
- # parinfer (1)
- # pathom (1)
- # re-frame (9)
- # reagent (4)
- # reitit (1)
- # remote-jobs (1)
- # shadow-cljs (24)
- # spacemacs (1)
- # sql (39)
- # tools-deps (10)
- # tree-sitter (18)
- # xtdb (18)
tegnap raneztem erre az app-state management / DI libre: https://github.com/juxt/clip korabban hasznaltam elesben stuartsierra/component-et, meg probalkoztam a mount-al es a mount-lite-al, meg a yourt-al is. duct-ot nem is probaltam mert ranezesre is tul bobeszedunek tunt. ez a clip viszont nagyon biztato! kicsit trukkosek az evaluation rule-jai, viszont azon tul nagyon tomor es egyertelmu szerintem.
tegnap pl egy ilyen teszt rendszert raktam ossze vele, ami egy datomic+graphql+http rendszert inicializal:
(ns xxx.system
(:require
[juxt.clip.core :as clip]
[xxx.datomic :as datomic]
[datomic.api :as d]
[com.walmartlabs.lacinia.schema :as lacinia.schema]
[com.walmartlabs.lacinia.pedestal :as lacinia.pedestal]
[xxx.graphql.schema :as gql.schema]
[io.pedestal.http :as http]))
(defmacro with
[[bound-var binding-expr] & body]
`(let [system-config# ~binding-expr
~bound-var (clip/start system-config#)]
(try
~@body
(finally
(clip/stop system-config# ~bound-var)))))
(def datomic
{:datomic/uri
{:start `datomic/random-mem-db-uri}
:datomic/conn
{:pre-start `(d/create-database (clip/ref :datomic/uri))
:start `(d/connect (clip/ref :datomic/uri))
:post-start `(d/transact (clip/ref :datomic/conn) (datomic/schema))}})
(def graphql
{:graphql/schema-fn
{:start (constantly #(gql.schema/compile (gql.schema/inline)))}})
(def web-service
{:pedestal/service-map
{:start `(lacinia.pedestal/service-map
(clip/ref :graphql/schema-fn)
{:graphiql false})}
:pedestal/server
{:start `(http/create-server (clip/ref :pedestal/service-map))}})
(def http
{:http/service
{:start `(::http/service-fn (clip/ref :pedestal/server))}
:http/server
{:start `(http/start (clip/ref :pedestal/server))
:stop `http/stop}})
(def test
{:components (merge datomic graphql web-service http)})
(comment
(def sys (clip/start config))
(clip/stop config sys)
(with [sys config]
(:datomic/conn sys))
(let [sys (clip/start config)
{:keys [graphql/schema-fn]} sys]
[config sys (lacinia.schema/compiled-schema? (schema-fn))])
)
)