quotes-api/lib/Api/Types.hs
2023-02-27 23:46:29 +05:30

36 lines
1.1 KiB
Haskell

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DerivingVia #-}
{-# LANGUAGE DeriveGeneric #-}
module Api.Types
( Quote(..)
)
where
import Database.SQLite.Simple
import Data.Aeson
import Data.Text (Text)
import Deriving.Aeson
import Database.SQLite.Simple.ToField (ToField(toField))
data Quote = Quote { qQuote :: Text
, qAuthor :: Text
, qTitle :: Text
, qPage :: Text
, qChapter :: Maybe Text
, qCreatedOn :: Maybe Integer
} deriving (Show, Eq, Ord, Generic)
deriving (FromJSON,ToJSON)
via CustomJSON '[OmitNothingFields, FieldLabelModifier '[StripPrefix "q", CamelToSnake]] Quote
instance FromRow Quote where
fromRow = Quote <$> field <*> field <*> field <*> field <*> field <*> field
instance ToRow Quote where
toRow q = [toField (qQuote q),
toField (qAuthor q),
toField (qTitle q),
toField (qPage q),
toField (qChapter q),
toField (qCreatedOn q)]