Skip to content

Commit

Permalink
SQL-197 inputs for reaction crud sql fns
Browse files Browse the repository at this point in the history
  • Loading branch information
milt committed Jul 24, 2023
1 parent b9c97f0 commit 5061bad
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 1 deletion.
46 changes: 46 additions & 0 deletions src/main/lrsql/input/reaction.clj
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
(ns lrsql.input.reaction
(:require [clojure.spec.alpha :as s]
[lrsql.spec.reaction :as rs]
[lrsql.util :as u]))

(s/fdef insert-reaction-input
:args (s/cat :ruleset ::rs/ruleset :active ::rs/active)
:ret rs/insert-reaction-input-spec)

(defn insert-reaction-input
"Given `ruleset` and `active`, construct the input map for `insert-reaction!`."
[ruleset active]
(let [{squuid :squuid
squuid-ts :timestamp} (u/generate-squuid*)]
{:primary-key squuid
:ruleset ruleset
:active active
:created squuid-ts
:modified squuid-ts}))

(s/fdef update-reaction-input-spec
:args (s/cat :reaction-id ::rs/reaction-id
:ruleset (s/nilable ::rs/ruleset)
:active (s/nilable ::rs/active))
:ret rs/update-reaction-input-spec)

(defn update-reaction-input
"Given `reaction-id`, `ruleset` and `active`, construct the input map for
`update-reaction!`."
[reaction-id ruleset active]
(merge
{:reaction-id reaction-id
:modified (u/current-time)}
(when ruleset
{:ruleset ruleset})
(when (some? active)
{:active active})))

(s/fdef delete-reaction-input-spec
:args (s/cat :reaction-id ::rs/reaction-id)
:ret rs/delete-reaction-input-spec)

(defn delete-reaction-input
"Given `reaction-id`, construct the input map for `delete-reaction!`"
[reaction-id]
{:reaction-id reaction-id})
25 changes: 24 additions & 1 deletion src/main/lrsql/spec/reaction.clj
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
(ns lrsql.spec.reaction
(:require [clojure.spec.alpha :as s]
[xapi-schema.spec :as xs]
[lrsql.backend.protocol :as bp]))
[lrsql.backend.protocol :as bp]
[lrsql.spec.common :as c]))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Interface
Expand Down Expand Up @@ -98,6 +99,12 @@

(s/def ::trigger-id :statement/id)

(s/def ::active boolean?)

(s/def ::primary-key uuid?)

(s/def ::reaction-id uuid?)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Inputs
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Expand All @@ -107,6 +114,22 @@
::trigger-id
::statement-identity]))

(def insert-reaction-input-spec
(s/keys :req-un [::primary-key
::ruleset
::active
::created
::modified]))

(def update-reaction-input-spec
(s/keys :req-un [::reaction-id
::modified]
:opt-un [::ruleset
::active]))

(def delete-reaction-input-spec
(s/keys :req-un [::reaction-id]))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Results
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Expand Down

0 comments on commit 5061bad

Please sign in to comment.