-
Notifications
You must be signed in to change notification settings - Fork 0
/
portfolio.clj
54 lines (43 loc) · 1.7 KB
/
portfolio.clj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
(ns andrewslai.clj.api.portfolio
(:require [andrewslai.clj.persistence.rdbms :as rdbms]
[clojure.spec.alpha :as s]))
(s/def :andrewslai.portfolio/id int?)
(s/def :andrewslai.portfolio/name string?)
(s/def :andrewslai.portfolio/url string?)
(s/def :andrewslai.portfolio/image-url string?)
(s/def :andrewslai.portfolio/description string?)
(s/def :andrewslai.portfolio/tags string?)
(s/def :andrewslai.portfolio/entry
(s/keys :req-un [:andrewslai.portfolio/id
:andrewslai.portfolio/name
:andrewslai.portfolio/url
:andrewslai.portfolio/image-url
:andrewslai.portfolio/description
:andrewslai.portfolio/tags]))
(s/def :andrewslai.portfolio/entries
(s/coll-of :andrewslai.portfolio/entry))
(s/def :andrewslai.portfolio/name-1 :andrewslai.portfolio/name)
(s/def :andrewslai.portfolio/name-2 :andrewslai.portfolio/name)
(s/def :andrewslai.portfolio/relation string?)
(s/def :andrewslai.portfolio/link
(s/keys :req-un [:andrewslai.portfolio/id
:andrewslai.portfolio/name-1
:andrewslai.portfolio/relation
:andrewslai.portfolio/name-2
:andrewslai.portfolio/description]))
(s/def :andrewslai.portfolio/links
(s/coll-of :andrewslai.portfolio/link))
(s/def :andrewslai/portfolio
(s/keys :req-un [:andrewslai.portfolio/nodes
:andrewslai.portfolio/links]))
(defn portfolio?
[x]
(s/valid? :andrewslai/portfolio x))
(def get-nodes
(rdbms/make-finder :portfolio-entries))
(def get-links
(rdbms/make-finder :portfolio-links))
(defn get-portfolio
[database]
{:nodes (get-nodes database)
:links (get-links database)})