Skip to content

Commit cb2d118

Browse files
committed
Complete transition to org.clojure/java.jdbc
1 parent 587b280 commit cb2d118

File tree

2 files changed

+60
-67
lines changed

2 files changed

+60
-67
lines changed

project.clj

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44
:license {:name "Eclipse Public License"
55
:url "http://www.eclipse.org/legal/epl-v10.html"}
66
:dependencies [[org.clojure/clojure "1.9.0"]
7-
[org.clojure/core.async "0.4.474"]
87
[com.stuartsierra/component "0.3.2"]
98
[com.walmartlabs/lacinia "0.30.0"]
109
[com.walmartlabs/lacinia-pedestal "0.10.0"]
11-
[alaisi/postgres.async "0.8.0"]
10+
[org.clojure/java.jdbc "0.7.8"]
11+
[org.postgresql/postgresql "42.2.5.jre7"]
12+
[com.mchange/c3p0 "0.9.5.2"]
1213
[io.aviso/logging "0.3.1"]])

src/clojure_game_geek/db.clj

Lines changed: 57 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,108 +1,100 @@
11
(ns clojure-game-geek.db
22
(:require
33
[com.stuartsierra.component :as component]
4-
[postgres.async :refer [open-db close-db!] :as pa]
5-
[clojure.core.async :refer [<!!]]
64
[io.pedestal.log :as log]
7-
[clojure.string :as str]))
5+
[clojure.java.jdbc :as jdbc]
6+
[clojure.string :as str])
7+
(:import (com.mchange.v2.c3p0 ComboPooledDataSource)))
88

9-
(defrecord ClojureGameGeekDb [conn]
9+
(defn ^:private pooled-data-source
10+
[host dbname user password port]
11+
{:datasource
12+
(doto (ComboPooledDataSource.)
13+
(.setDriverClass "org.postgresql.Driver")
14+
(.setJdbcUrl (str "jdbc:postgresql://" host ":" port "/" dbname))
15+
(.setUser user)
16+
(.setPassword password))})
17+
18+
(defrecord ClojureGameGeekDb [ds]
1019

1120
component/Lifecycle
1221

1322
(start [this]
1423
(assoc this
15-
:conn (open-db {:hostname "localhost"
16-
:database "cggdb"
17-
:username "cgg_role"
18-
:password "lacinia"
19-
;; Host port mapped to 5432 in the container
20-
:port 25432})))
24+
:ds (pooled-data-source "localhost" "cggdb" "cgg_role" "lacinia" 25432)))
2125

2226
(stop [this]
23-
(close-db! conn)
24-
(assoc this :conn nil)))
27+
(-> ds :datasource .close)
28+
(assoc this :ds nil)))
2529

2630
(defn new-db
2731
[]
2832
{:db (map->ClojureGameGeekDb {})})
2933

30-
(defn ^:private take!
31-
"Takes a value from a channel and rethrows an exception if that is the
32-
conveyed value."
33-
[ch]
34-
(let [v (<!! ch)]
35-
(if (instance? Throwable v)
36-
(throw v)
37-
v)))
3834

39-
(defn ^:private query!
35+
(defn ^:private query
4036
[component statement]
4137
(let [[sql & params] statement]
4238
(log/debug :sql (str/replace sql #"\s+" " ")
4339
:params params))
44-
(pa/query! (:conn component) statement))
40+
(jdbc/query (:ds component) statement))
4541

4642
(defn find-game-by-id
4743
[component game-id]
48-
(-> (query! component
49-
["select game_id, name, summary, min_players, max_players, created_at, updated_at
50-
from board_game where game_id = $1" game-id])
51-
take!
52-
first))
44+
(first
45+
(query component
46+
["select game_id, name, summary, min_players, max_players, created_at, updated_at
47+
from board_game where game_id = ?" game-id])))
5348

5449
(defn find-member-by-id
5550
[component member-id]
56-
(-> (query! component
57-
["select member_id, name, created_at, updated_at
58-
from member
59-
where member_id = $1" member-id])
60-
take!
61-
first))
51+
(first
52+
(query component
53+
["select member_id, name, created_at, updated_at
54+
from member
55+
where member_id = $1" member-id])))
6256

6357
(defn list-designers-for-game
6458
[component game-id]
65-
(take!
66-
(query! component
67-
["select d.designer_id, d.name, d.uri, d.created_at, d.updated_at
68-
from designer d
69-
inner join designer_to_game j on (d.designer_id = j.designer_id)
70-
where j.game_id = $1
71-
order by d.name" game-id])))
59+
(query component
60+
["select d.designer_id, d.name, d.uri, d.created_at, d.updated_at
61+
from designer d
62+
inner join designer_to_game j on (d.designer_id = j.designer_id)
63+
where j.game_id = $1
64+
order by d.name" game-id]))
7265

7366
(defn list-games-for-designer
7467
[component designer-id]
75-
(take!
76-
(query! component
77-
["select g.game_id, g.name, g.summary, g.min_players, g.max_players, g.created_at, g.updated_at
78-
from board_game g
79-
inner join designer_to_game j on (g.game_id = j.game_id)
80-
where j.designer_id = $1
81-
order by g.name" designer-id])))
68+
(query component
69+
["select g.game_id, g.name, g.summary, g.min_players, g.max_players, g.created_at, g.updated_at
70+
from board_game g
71+
inner join designer_to_game j on (g.game_id = j.game_id)
72+
where j.designer_id = $1
73+
order by g.name" designer-id]))
8274

8375
(defn list-ratings-for-game
8476
[component game-id]
85-
(take!
86-
(query! component
87-
["select game_id, member_id, rating, created_at, updated_at
88-
from game_rating
89-
where game_id = $1" game-id])))
77+
(query component
78+
["select game_id, member_id, rating, created_at, updated_at
79+
from game_rating
80+
where game_id = $1" game-id]))
9081

9182
(defn list-ratings-for-member
9283
[component member-id]
93-
(take!
94-
(query! component
95-
["select game_id, member_id, rating, created_at, updated_at
96-
from game_rating
97-
where member_id = $1" member-id])))
84+
(query component
85+
["select game_id, member_id, rating, created_at, updated_at
86+
from game_rating
87+
where member_id = $1" member-id]))
9888

9989
(defn upsert-game-rating
100-
"Adds a new game rating, or changes the value of an existing game rating."
90+
"Adds a new game rating, or changes the value of an existing game rating.
91+
92+
Returns nil"
10193
[component game-id member-id rating]
102-
(-> (query! component
103-
["insert into game_rating (game_id, member_id, rating)
104-
values ($1, $2, $3)
105-
on conflict (game_id, member_id) do update set rating = $3"
106-
game-id member-id rating])
107-
take!
108-
first))
94+
(query component
95+
["insert into game_rating (game_id, member_id, rating)
96+
values ($1, $2, $3)
97+
on conflict (game_id, member_id) do update set rating = $3"
98+
game-id member-id rating])
99+
100+
nil)

0 commit comments

Comments
 (0)