Move SQL out of API and into separate modules
Create modules for each Table in our SQL database. This cleans up the handler bodies at the expense of introducing more files and indirection.
This commit is contained in:
parent
b355664858
commit
012296f156
3 changed files with 80 additions and 25 deletions
27
src/Trips.hs
Normal file
27
src/Trips.hs
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
{-# LANGUAGE OverloadedStrings #-}
|
||||
--------------------------------------------------------------------------------
|
||||
module Trips where
|
||||
--------------------------------------------------------------------------------
|
||||
import Data.Function ((&))
|
||||
import Database.SQLite.Simple
|
||||
|
||||
import qualified Types as T
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
-- | Create a new `trip` in `dbFile`.
|
||||
create :: FilePath -> T.Trip -> IO ()
|
||||
create dbFile trip = withConnection dbFile $ \conn ->
|
||||
execute conn "INSERT INTO Trips (username,destination,startDate,endDate,comment) VALUES (?,?,?,?,?)"
|
||||
(trip & T.tripFields)
|
||||
|
||||
-- | Delete a trip from `dbFile` using its `tripPK` Primary Key.
|
||||
delete :: FilePath -> T.TripPK -> IO ()
|
||||
delete dbFile tripPK =
|
||||
withConnection dbFile $ \conn -> do
|
||||
execute conn "DELETE FROM Trips WHERE username = ? AND destination = ? and startDate = ?"
|
||||
(tripPK & T.tripPKFields)
|
||||
|
||||
-- | Return a list of all of the trips in `dbFile`.
|
||||
list :: FilePath -> IO [T.Trip]
|
||||
list dbFile = withConnection dbFile $ \conn ->
|
||||
query_ conn "SELECT * FROM Trips"
|
||||
Loading…
Add table
Add a link
Reference in a new issue