Skip to content

Commit 27dae9e

Browse files
committed
feat: message statistics db query and route
1 parent e9ba973 commit 27dae9e

File tree

3 files changed

+30
-1
lines changed

3 files changed

+30
-1
lines changed

src/clojurians_log/db/queries.clj

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,17 @@
137137
[?emoji :emoji/url ?url]]
138138
db)))
139139

140+
(defn message-stats-between-days [db from-date to-date]
141+
(d/q '[:find ?msg ?day
142+
:in $ ?from-date ?to-date
143+
:where
144+
[?msg :message/day ?day]
145+
[(> ?day ?from-date)]
146+
[(< ?day ?to-date)]]
147+
db
148+
from-date
149+
to-date))
150+
140151
#_
141152
(doseq [v [#'clojurians-log.db.queries/user-names
142153
#'clojurians-log.db.queries/channel

src/clojurians_log/routes.clj

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,16 @@
144144
views/sitemap
145145
response/xml-render)))
146146

147+
(defn message-stats-route [{:keys [endpoint] :as request}]
148+
(let [config @(get-in endpoint [:config :value])
149+
db (db-from-endpoint endpoint)
150+
{:keys [from-date to-date]} (:path-params request)]
151+
(-> request
152+
make-context
153+
(assoc :data/message-stats (queries/message-stats-between-days db from-date to-date))
154+
views/message-stats-page
155+
response/render)))
156+
147157
(def routes
148158
[["/" {:name :clojurians-log.routes/index
149159
:get index-route}]
@@ -158,4 +168,5 @@
158168
["/{channel}/{date}" {:name :clojurians-log.routes/channel-date,
159169
:get log-route}]
160170
["/{channel}/{date}/{ts}" {:name :clojurians-log.routes/message,
161-
:get log-route}]])
171+
:get log-route}]
172+
["/_/stats/{from-date}/{to-date}" {:name :clojurians-log.routes/message-stats :get message-stats-route}]])

src/clojurians_log/views.clj

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,10 @@
286286
:date day}))]
287287
[:lastmod day]]))])
288288

289+
(defn- message-stats-page-html [{:data/keys [message-stats] :as context}]
290+
[:div
291+
(for [[a b] message-stats] [:p a b])])
292+
289293
(defn log-page [context]
290294
(assoc context :response/html (log-page-html context)))
291295

@@ -300,3 +304,6 @@
300304

301305
(defn sitemap [context]
302306
(assoc context :response/xml (sitemap-xml context)))
307+
308+
(defn message-stats-page [context]
309+
(assoc context :response/html (message-stats-page-html context)))

0 commit comments

Comments
 (0)