Allow API users to create Trip entries
Next up: - list trips - update existing trip entries - delete existing trip entries
This commit is contained in:
parent
475f62fb16
commit
52ac4d79bd
3 changed files with 79 additions and 3 deletions
67
src/Types.hs
67
src/Types.hs
|
|
@ -107,8 +107,9 @@ data Account = Account
|
|||
, accountProfilePicture :: ProfilePicture
|
||||
} deriving (Eq, Show, Generic)
|
||||
|
||||
instance FromJSON Account
|
||||
-- TODO(wpcarro): Prefer username to accountUsername for JSON
|
||||
instance ToJSON Account
|
||||
instance FromJSON Account
|
||||
|
||||
-- | Return a tuple with all of the fields for an Account record to use for SQL.
|
||||
accountFields :: Account -> (Username, Password, Email, Role, ProfilePicture)
|
||||
|
|
@ -144,3 +145,67 @@ instance ToJSON Session where
|
|||
, "password" .= password
|
||||
, "role" .= role
|
||||
]
|
||||
|
||||
newtype Comment = Comment Text
|
||||
deriving (Eq, Show, Generic)
|
||||
|
||||
instance ToJSON Comment
|
||||
instance FromJSON Comment
|
||||
|
||||
instance ToField Comment where
|
||||
toField (Comment x) = SQLText x
|
||||
|
||||
instance FromField Comment where
|
||||
fromField = forNewtype Comment
|
||||
|
||||
-- TODO(wpcarro): Replace this with a different type.
|
||||
newtype Date = Date Text
|
||||
deriving (Eq, Show, Generic)
|
||||
|
||||
instance ToJSON Date
|
||||
instance FromJSON Date
|
||||
|
||||
instance ToField Date where
|
||||
toField (Date x) = SQLText x
|
||||
|
||||
instance FromField Date where
|
||||
fromField = forNewtype Date
|
||||
|
||||
newtype Destination = Destination Text
|
||||
deriving (Eq, Show, Generic)
|
||||
|
||||
-- TODO(wpcarro): Prefer username to tripUsername for JSON
|
||||
instance ToJSON Destination
|
||||
instance FromJSON Destination
|
||||
|
||||
instance ToField Destination where
|
||||
toField (Destination x) = SQLText x
|
||||
|
||||
instance FromField Destination where
|
||||
fromField = forNewtype Destination
|
||||
|
||||
data Trip = Trip
|
||||
{ tripUsername :: Username
|
||||
, tripDestination :: Destination
|
||||
, tripStartDate :: Date
|
||||
, tripEndDate :: Date
|
||||
, tripComment :: Comment
|
||||
} deriving (Eq, Show, Generic)
|
||||
|
||||
-- | Return the tuple representation of a Trip record for SQL.
|
||||
tripFields :: Trip -> (Username, Destination, Date, Date, Comment)
|
||||
tripFields (Trip{ tripUsername
|
||||
, tripDestination
|
||||
, tripStartDate
|
||||
, tripEndDate
|
||||
, tripComment
|
||||
})
|
||||
= ( tripUsername
|
||||
, tripDestination
|
||||
, tripStartDate
|
||||
, tripEndDate
|
||||
, tripComment
|
||||
)
|
||||
|
||||
instance ToJSON Trip
|
||||
instance FromJSON Trip
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue