From f4b8c0df041b063c0b47d2ec6c818a9c202fd833 Mon Sep 17 00:00:00 2001
From: Ben Sima <ben@bsima.me>
Date: Wed, 15 Apr 2020 09:54:10 -0700
Subject: Re-namespacing

Moving away from the DNS-driven namespacing toward more condensed names,
mostly because I don't like typing so much.
---
 Hero/Database.hs | 41 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)
 create mode 100644 Hero/Database.hs

(limited to 'Hero/Database.hs')

diff --git a/Hero/Database.hs b/Hero/Database.hs
new file mode 100644
index 0000000..5726f3c
--- /dev/null
+++ b/Hero/Database.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+module Hero.Database
+  ( ComicDB
+  , getComics
+  , load
+  , dummy
+  )
+where
+
+import           Hero.App
+import           Data.Map                       ( Map )
+import qualified Data.Map                      as Map
+import           Dhall
+import           Protolude
+import           Servant                        ( Handler )
+
+type ComicDB = (Map ComicId Comic)
+
+instance Interpret Comic
+
+load :: IO ComicDB
+load = listToComicDB <$> input auto "./comic-database.dhall"
+
+dummy :: IO ComicDB
+dummy = return $ listToComicDB
+  [ Comic { comicId          = "ComicId"
+          , comicPages       = 10
+          , comicName        = "Dummy comic"
+          , comicIssue       = "dummy issue"
+          , comicDescription = "Lorem ipsum"
+          }
+  ]
+
+listToComicDB :: [Comic] -> ComicDB
+listToComicDB ls = Map.fromList $ (,) <$> comicId <*> identity <$> ls
+
+getComics :: ComicDB -> Handler [Comic]
+getComics db = return $ Map.elems db
-- 
cgit v1.2.3