about summary refs log tree commit diff
path: root/src/Trips.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Trips.hs')
-rw-r--r--src/Trips.hs27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/Trips.hs b/src/Trips.hs
new file mode 100644
index 000000000000..0b395f8bcfe8
--- /dev/null
+++ b/src/Trips.hs
@@ -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"