summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLLLL Colonq <llll@colonq>2025-12-16 14:24:17 -0500
committerLLLL Colonq <llll@colonq>2025-12-16 14:24:17 -0500
commitfbe045e102cd9e1c783df365ed939453bd6e5dad (patch)
treedcc670b3301492ac29c064f7ca83c4a0114c6534
parent5c8a8efeddd53fb6bb824c5074c4e4cb9393e9fb (diff)
Debt clock
-rw-r--r--fig-web/fig-web.cabal1
-rw-r--r--fig-web/src/Fig/Web/Module/Debt.hs24
-rw-r--r--fig-web/src/Fig/Web/Public.hs2
3 files changed, 27 insertions, 0 deletions
diff --git a/fig-web/fig-web.cabal b/fig-web/fig-web.cabal
index 8317fa5..540ceda 100644
--- a/fig-web/fig-web.cabal
+++ b/fig-web/fig-web.cabal
@@ -77,6 +77,7 @@ library
Fig.Web.Module.Advent
Fig.Web.Module.HLS
Fig.Web.Module.TCG
+ Fig.Web.Module.Debt
executable fig-web
import: defaults
diff --git a/fig-web/src/Fig/Web/Module/Debt.hs b/fig-web/src/Fig/Web/Module/Debt.hs
new file mode 100644
index 0000000..b438832
--- /dev/null
+++ b/fig-web/src/Fig/Web/Module/Debt.hs
@@ -0,0 +1,24 @@
+module Fig.Web.Module.Debt
+ ( public
+ ) where
+
+import Fig.Prelude
+
+import Data.Maybe (mapMaybe)
+import qualified Data.Map.Strict as Map
+import qualified Data.ByteString as BS
+
+import Fig.Web.Utils
+import Fig.Web.Types
+import qualified Fig.Web.DB as DB
+
+public :: PublicModule
+public a = do
+ onGet "/debt" $ respondBytes =<< liftIO (BS.readFile "/home/llll/src/debtclock/index.html")
+ onGet "/debtclonk.png" $ respondBytes =<< liftIO (BS.readFile "/home/llll/src/debtclock/debtclonk.png")
+ onGet "/api/debt" do
+ debts <- DB.hgetall a.db "debt"
+ respondJSON
+ $ Map.fromList
+ $ mapMaybe (\(k, v) -> (decodeUtf8 k,) <$> readMaybe @Double (unpack $ decodeUtf8 v))
+ $ Map.toList debts
diff --git a/fig-web/src/Fig/Web/Public.hs b/fig-web/src/Fig/Web/Public.hs
index a5e6722..297dac1 100644
--- a/fig-web/src/Fig/Web/Public.hs
+++ b/fig-web/src/Fig/Web/Public.hs
@@ -26,6 +26,7 @@ import qualified Fig.Web.Module.User as User
import qualified Fig.Web.Module.Shader as Shader
import qualified Fig.Web.Module.HLS as HLS
import qualified Fig.Web.Module.TCG as TCG
+import qualified Fig.Web.Module.Debt as Debt
allBusEvents :: PublicModuleArgs -> BusEventHandlers
allBusEvents args = busEvents . mconcat $ fmap ($ args)
@@ -95,6 +96,7 @@ app args = do
Shader.public args
HLS.public args
TCG.public args
+ Debt.public args
websocket $ mconcat
[ Gizmo.publicWebsockets args
, Circle.publicWebsockets args