From b75efdb2c81bc34b138d316e0893de216e68df91 Mon Sep 17 00:00:00 2001 From: Ben Sima Date: Mon, 2 Sep 2019 10:26:15 -0700 Subject: [ibb] reorganize types Move Person and Book to Biz.Ibb.Core. Now, Biz.Ibb.Influencers is just a list of the people we want to seed the database with. Eventually we will delete this file. --- lore/Biz/Ibb/Core.hs | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) (limited to 'lore/Biz/Ibb/Core.hs') diff --git a/lore/Biz/Ibb/Core.hs b/lore/Biz/Ibb/Core.hs index 39f506c..9ffa966 100644 --- a/lore/Biz/Ibb/Core.hs +++ b/lore/Biz/Ibb/Core.hs @@ -1,17 +1,54 @@ {-# LANGUAGE OverloadedStrings #-} -{-# OPTIONS_GHC -Wall #-} +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE DeriveGeneric #-} +{-# LANGUAGE DeriveDataTypeable #-} -- | Main app logic module Biz.Ibb.Core where import Alpha -import Biz.Ibb.Influencers +import Data.Aeson hiding (Success) +import Data.Data (Data, Typeable) +import Data.Text (Text) +import GHC.Generics (Generic) import Miso import Miso.String import Network.RemoteData import Servant.API import Servant.Links +-- * entity data types + +data Person = Person + { _name :: Text + -- ^ Their full name. + , _pic :: Text + -- ^ A link to their picture. + , _twitter :: Text + -- ^ Their twitter handle, without the `@` prefix. + , _website :: Text + -- ^ Their main website, fully formed: `https://example.com` + , _books :: [Book] + -- ^ A short list of the books they recommend. + , _blurb :: Text + -- ^ A short "about" section, like you would see on the jacket flap of a book. + } deriving (Generic, Show, Eq, Typeable, Data, Ord) + +instance FromJSON Person +instance ToJSON Person + +data Book = Book + { _title :: Text + , _author :: Text + , _amznref :: Text + -- ^ Amazon REF number, for creating affiliate links. + } deriving (Generic, Show, Eq, Typeable, Data, Ord) + +instance FromJSON Book +instance ToJSON Book + +-- * app data types + type Routes = Home type Home = View Action -- cgit v1.2.3