Add /api/kraken-hour endpoint returning last 60 hourly candles

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-13 13:33:08 +01:00
co-authored by Claude Opus 4.6
parent 44bb9a68d4
commit 42454646bb
2 changed files with 24 additions and 1 deletions
+5
View File
@@ -155,6 +155,11 @@ SELECT id, event_id, occurred_at, exchange, fiat_amount, fiat_currency,
FROM deposits FROM deposits
ORDER BY occurred_at DESC, id DESC ORDER BY occurred_at DESC, id DESC
-- :name get-kraken-hour-latest-60 :? :*
-- :doc Get the 60 most recent Kraken hourly candles
SELECT ts, open, high, low, close, vwap, volume, trade_count, created_at
FROM kraken_hour ORDER BY ts DESC LIMIT 60
-- :name upsert-kraken-minute! :! :n -- :name upsert-kraken-minute! :! :n
-- :doc Upsert a Kraken minute OHLC candle -- :doc Upsert a Kraken minute OHLC candle
INSERT INTO kraken_minute (ts, open, high, low, close, vwap, volume, trade_count) INSERT INTO kraken_minute (ts, open, high, low, close, vwap, volume, trade_count)
+19 -1
View File
@@ -144,6 +144,22 @@
:headers {"Content-Type" "application/json"} :headers {"Content-Type" "application/json"}
:body (json/write-str {:error "Invalid date format, use YYYY-MM-DD"})})))) :body (json/write-str {:error "Invalid date format, use YYYY-MM-DD"})}))))
(defn- kraken-hour-handler [{:keys [query-fn]} _req]
(let [rows (query-fn :get-kraken-hour-latest-60 {})]
{:status 200
:headers {"Content-Type" "application/json"}
:body (json/write-str
(mapv (fn [r]
{:ts (:ts r)
:open (str (:open r))
:high (str (:high r))
:low (str (:low r))
:close (str (:close r))
:vwap (str (:vwap r))
:volume (str (:volume r))
:trade_count (:trade_count r)})
rows))}))
(defn- api-routes [opts] (defn- api-routes [opts]
[["/swagger.json" [["/swagger.json"
{:get {:no-doc true {:get {:no-doc true
@@ -176,7 +192,9 @@
["/deposits" ["/deposits"
{:get (fn [req] (tx/list-deposits opts req))}] {:get (fn [req] (tx/list-deposits opts req))}]
["/deposits/rebuild" ["/deposits/rebuild"
{:post (fn [req] (tx/rebuild-deposits! opts req))}]]) {:post (fn [req] (tx/rebuild-deposits! opts req))}]
["/kraken-hour"
{:get (fn [req] (kraken-hour-handler opts req))}]])
(defn route-data [opts] (defn route-data [opts]
(merge (merge