Skip to content

Commit

Permalink
Merge branch 'release/1.11.2'
Browse files Browse the repository at this point in the history
  • Loading branch information
Bahul Neel Upadhyaya committed Mar 12, 2024
2 parents 0a6b1aa + a18f2ae commit 359a88e
Show file tree
Hide file tree
Showing 10 changed files with 34 additions and 19 deletions.
2 changes: 1 addition & 1 deletion .dev.source-map.edn

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion .esm.source-map.edn

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion .npm.source-map.edn

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.11.1
1.11.2
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@totalperspective/pondermatic",
"version": "1.11.1",
"version": "1.11.2",
"description": "Functional effect system driven rules engine",
"engines": {
"node": ">=16"
Expand Down
13 changes: 7 additions & 6 deletions src/example/clone.cljs
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
(ns example.clone
(:require [pondermatic.index :as p]
[pondermatic.flow :as flow]
[asami.core :as d]))

(reset! d/connections {})

(binding [flow/*tap-print* true]
(def engine-1 (p/create-engine (str (gensym "example.clone")) true))

(def engine-1 (p/create-engine (str (gensym "example.clone")) true))
(p/sh engine-1 {:->db (p/ruleset '[{:id :test
:rule/when {:id 1 :key ?value}
:rule/then {:id 2 :key ?value}}])})

(p/sh engine-1 {:->db (p/dataset [{:id 1 :key :value}])})
(p/sh engine-1 {:->db (p/dataset [{:id 1 :key :value}])})

(def engine-2 (p/copy engine-1))
(def engine-2 (p/copy engine-1))

(p/sh engine-2 {:->db (p/dataset [{:id 1 :key' :value2}])}))
(p/sh engine-2 {:->db (p/dataset [{:id 1 :key' :value2}])})
1 change: 0 additions & 1 deletion src/pondermatic/core.cljc
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,6 @@
ruleset))

(defn ruleset [rules]
(log/debug rules)
(-> (map #(assoc % type-name rule-type) rules)
id->ident
kw->qkw
Expand Down
23 changes: 19 additions & 4 deletions src/pondermatic/engine.cljc
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
(def type-name ::type)
(def rule-type ::rule)

(def !conns (atom {}))

(defn datum->eav [[e a v]]
[e a v])

Expand Down Expand Up @@ -73,9 +75,11 @@
(when (seq assertions)
(sh/|> rule-session (rules/insert* assertions)))))))))

(defn ->then-finally [?id entity-lvars then conn rules]
(defn ->then-finally [?id entity-lvars then rules]
(fn then-finally [session]
(let [matches (o/query-all session ?id)
(let [[{:keys [db-uri]}] (o/query-all session ::db-uri)
conn (get @!conns db-uri)
matches (o/query-all session ?id)
bindings (map (partial reduce-kv (fn [m k v]
(assoc m (symbol k) v))
{})
Expand Down Expand Up @@ -131,15 +135,18 @@
rule-spec {:what what
:when when-fn
:then-finally
(->then-finally ?id entity-lvars then conn rules)}
(->then-finally ?id entity-lvars then rules)}
rule (o/->rule ?id rule-spec)]
rule))

#_{:clj-kondo/ignore [:unused-binding]}
(defn add-base-rules [conn rules env]
(let [ruleset
(o/ruleset
{::collection-head
{::db-uri
[:what
[::db ::db-uri db-uri]]
::collection-head
[:what
[?first-node :a/first ?first-id]
[?entity-id ?attr ?first-node]
Expand Down Expand Up @@ -190,8 +197,15 @@
(log/error e)))]})]
(sh/|> rules (rules/add-rules ruleset))))

(defn register-conn! [conn rules]
(let [{:keys [db-uri]} conn]
(log/trace {::register-conn! db-uri})
(sh/|> rules (rules/insert ::db {::db-uri db-uri}))
(swap! !conns assoc db-uri conn)))

(defn ->engine [conn rules]
(add-base-rules conn rules '{!= not=})
(register-conn! conn rules)
(let [dispose:db=>rules (db=>rules conn rules)
session {::conn conn
::rules rules
Expand All @@ -216,6 +230,7 @@
session {::conn conn'
::rules rules'
::dispose:db=>rules dispose:db=>rules}]
(register-conn! conn' rules')
(log/trace session)
(->> session
(sh/engine engine-process)
Expand Down
2 changes: 1 addition & 1 deletion src/pondermatic/portal/client.cljc
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
(def !opts (atom {:port port :host host}))

(def submit-impl
#?(:cljs (if js/window
#?(:cljs (if (.-window js/globalThis)
pw/submit
p/submit)
:default p/submit))
Expand Down

0 comments on commit 359a88e

Please sign in to comment.