34 lines
908 B
Haskell
34 lines
908 B
Haskell
module Types where
|
|
|
|
import Data.Text (Text)
|
|
import Deriving.Aeson
|
|
import Deriving.Aeson.Stock (PrefixedSnake)
|
|
|
|
data Page = Page {pageTitle :: Text, pageContent :: Text}
|
|
deriving (Show, Generic)
|
|
deriving (ToJSON) via PrefixedSnake "page" Page
|
|
|
|
data RenderedPost = RenderedPost
|
|
{ rPostTitle :: Text,
|
|
rPostAuthor :: Maybe Text,
|
|
rPostTags :: [Text],
|
|
rPostHasTags :: Bool,
|
|
rPostDate :: Maybe Text,
|
|
rPostIsoDate :: Maybe Text,
|
|
rPostContent :: Maybe Text,
|
|
rPostLink :: Maybe Text
|
|
}
|
|
deriving (Show, Generic)
|
|
deriving (FromJSON, ToJSON) via PrefixedSnake "rPost" RenderedPost
|
|
|
|
data Post = Post
|
|
{ postTitle :: Text,
|
|
postAuthor :: Maybe Text,
|
|
postTags :: [Text],
|
|
postDate :: Maybe Text,
|
|
postContent :: Maybe Text,
|
|
postLink :: Maybe Text,
|
|
postDraft :: Maybe Bool
|
|
}
|
|
deriving (Show, Generic)
|
|
deriving (FromJSON, ToJSON) via PrefixedSnake "post" Post
|