Skip to content

Commit d4182e0

Browse files
committed
Fix post-jdbc.core-migration problems (col. names, upsert, pos. params, constraint)
1 parent cb2d118 commit d4182e0

File tree

4 files changed

+24
-14
lines changed

4 files changed

+24
-14
lines changed

bin/setup-db.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,9 @@ create table game_rating (
6262
created_at timestamp not null default current_timestamp,
6363
updated_at timestamp not null default current_timestamp);
6464
65+
alter table game_rating add constraint cost_unique__game_rating_game_id_member_id
66+
unique (game_id, member_id);
67+
6568
create trigger game_rating_updated_at before update
6669
on game_rating for each row execute procedure
6770
mantain_updated_at();

resources/cgg-schema.edn

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
{:description "A member of Clojure Game Geek. Members can rate games."
3333
:fields
3434
{:member_id {:type (non-null Int)}
35-
:member_name {:type (non-null String)
35+
:name {:type (non-null String)
3636
:description "Unique name of member."}
3737
:ratings {:type (list :GameRating)
3838
:description "List of games and ratings provided by this member."

src/clojure_game_geek/db.clj

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,13 @@
3939
:params params))
4040
(jdbc/query (:ds component) statement))
4141

42+
(defn ^:private execute!
43+
[component statement]
44+
(let [[sql & params] statement]
45+
(log/debug :sql (str/replace sql #"\s+" " ")
46+
:params params))
47+
(jdbc/execute! (:ds component) statement))
48+
4249
(defn find-game-by-id
4350
[component game-id]
4451
(first
@@ -52,15 +59,15 @@
5259
(query component
5360
["select member_id, name, created_at, updated_at
5461
from member
55-
where member_id = $1" member-id])))
62+
where member_id = ?" member-id])))
5663

5764
(defn list-designers-for-game
5865
[component game-id]
5966
(query component
6067
["select d.designer_id, d.name, d.uri, d.created_at, d.updated_at
6168
from designer d
6269
inner join designer_to_game j on (d.designer_id = j.designer_id)
63-
where j.game_id = $1
70+
where j.game_id = ?
6471
order by d.name" game-id]))
6572

6673
(defn list-games-for-designer
@@ -69,32 +76,32 @@
6976
["select g.game_id, g.name, g.summary, g.min_players, g.max_players, g.created_at, g.updated_at
7077
from board_game g
7178
inner join designer_to_game j on (g.game_id = j.game_id)
72-
where j.designer_id = $1
79+
where j.designer_id = ?
7380
order by g.name" designer-id]))
7481

7582
(defn list-ratings-for-game
7683
[component game-id]
7784
(query component
7885
["select game_id, member_id, rating, created_at, updated_at
7986
from game_rating
80-
where game_id = $1" game-id]))
87+
where game_id = ?" game-id]))
8188

8289
(defn list-ratings-for-member
8390
[component member-id]
8491
(query component
8592
["select game_id, member_id, rating, created_at, updated_at
8693
from game_rating
87-
where member_id = $1" member-id]))
94+
where member_id = ?" member-id]))
8895

8996
(defn upsert-game-rating
9097
"Adds a new game rating, or changes the value of an existing game rating.
9198
9299
Returns nil"
93100
[component game-id member-id rating]
94-
(query component
101+
(execute! component
95102
["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])
103+
values (?, ?, ?)
104+
on conflict (game_id, member_id) do update set rating = ?"
105+
game-id member-id rating rating])
99106

100107
nil)

src/clojure_game_geek/schema.clj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,17 +48,17 @@
4848
(defn board-game-designers
4949
[db]
5050
(fn [_ _ board-game]
51-
(db/list-designers-for-game db (:id board-game))))
51+
(db/list-designers-for-game db (:game_id board-game))))
5252

5353
(defn designer-games
5454
[db]
5555
(fn [_ _ designer]
56-
(db/list-games-for-designer db (:id designer))))
56+
(db/list-games-for-designer db (:designer_id designer))))
5757

5858
(defn rating-summary
5959
[db]
6060
(fn [_ _ board-game]
61-
(let [ratings (map :rating (db/list-ratings-for-game db (:id board-game)))
61+
(let [ratings (map :rating (db/list-ratings-for-game db (:game_id board-game)))
6262
n (count ratings)]
6363
{:count n
6464
:average (if (zero? n)
@@ -69,7 +69,7 @@
6969
(defn member-ratings
7070
[db]
7171
(fn [_ _ member]
72-
(db/list-ratings-for-member db (:id member))))
72+
(db/list-ratings-for-member db (:member_id member))))
7373

7474
(defn game-rating->game
7575
[db]

0 commit comments

Comments
 (0)