|
44 | 44 |
|
45 | 45 | (defn find-member-by-id
|
46 | 46 | [component member-id]
|
47 |
| - (->> component |
48 |
| - :db |
49 |
| - deref |
50 |
| - :members |
51 |
| - (filter #(= member-id (:id %))) |
52 |
| - first)) |
| 47 | + (-> (query! (:conn component) |
| 48 | + ["select member_id, name, created_at, updated_at |
| 49 | + from member |
| 50 | + where member_id = $1" member-id]) |
| 51 | + take! |
| 52 | + first)) |
53 | 53 |
|
54 | 54 | (defn list-designers-for-game
|
55 | 55 | [component game-id]
|
56 |
| - (let [designers (:designers (find-game-by-id component game-id))] |
57 |
| - (->> component |
58 |
| - :db |
59 |
| - deref |
60 |
| - :designers |
61 |
| - (filter #(contains? designers (:id %)))))) |
| 56 | + (take! |
| 57 | + (query! (:conn component) |
| 58 | + ["select d.designer_id, d.name, d.uri, d.created_at, d.updated_at |
| 59 | + from designer d |
| 60 | + inner join designer_to_game j on (d.designer_id = j.designer_id) |
| 61 | + where j.game_id = $1 |
| 62 | + order by d.name" game-id]))) |
62 | 63 |
|
63 | 64 | (defn list-games-for-designer
|
64 | 65 | [component designer-id]
|
65 |
| - (->> component |
66 |
| - :db |
67 |
| - deref |
68 |
| - :games |
69 |
| - (filter #(-> % :designers (contains? designer-id))))) |
| 66 | + (take! |
| 67 | + (query! (:conn component) |
| 68 | + ["select g.game_id, g.name, g.summary, g.min_players, g.max_players, g.created_at, g.updated_at |
| 69 | + from board_game g |
| 70 | + inner join designer_to_game j on (g.game_id = j.game_id) |
| 71 | + where j.designer_id = $1 |
| 72 | + order by g.name" designer-id]))) |
70 | 73 |
|
71 | 74 | (defn list-ratings-for-game
|
72 | 75 | [component game-id]
|
73 |
| - (->> component |
74 |
| - :db |
75 |
| - deref |
76 |
| - :ratings |
77 |
| - (filter #(= game-id (:game_id %))))) |
| 76 | + (take! |
| 77 | + (query! (:conn component) |
| 78 | + ["select game_id, member_id, rating, created_at, updated_at |
| 79 | + from game_rating |
| 80 | + where game_id = $1" game-id]))) |
78 | 81 |
|
79 | 82 | (defn list-ratings-for-member
|
80 | 83 | [component member-id]
|
81 |
| - (->> component |
82 |
| - :db |
83 |
| - deref |
84 |
| - :ratings |
85 |
| - (filter #(= member-id (:member_id %))))) |
86 |
| - |
87 |
| -(defn ^:private apply-game-rating |
88 |
| - [game-ratings game-id member-id rating] |
89 |
| - (->> game-ratings |
90 |
| - (remove #(and (= game-id (:game_id %)) |
91 |
| - (= member-id (:member_id %)))) |
92 |
| - (cons {:game_id game-id |
93 |
| - :member_id member-id |
94 |
| - :rating rating}))) |
| 84 | + (take! |
| 85 | + (query! (:conn component) |
| 86 | + ["select game_id, member_id, rating, created_at, updated_at |
| 87 | + from game_rating |
| 88 | + where member_id = $1" member-id]))) |
95 | 89 |
|
96 | 90 | (defn upsert-game-rating
|
97 | 91 | "Adds a new game rating, or changes the value of an existing game rating."
|
98 |
| - [db game-id member-id rating] |
99 |
| - (-> db |
100 |
| - :db |
101 |
| - (swap! update :ratings apply-game-rating game-id member-id rating))) |
| 92 | + [component game-id member-id rating] |
| 93 | + (take! |
| 94 | + (query! (:conn 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]))) |
0 commit comments