sqlite.hs 929 B

12345678910111213141516171819202122232425262728293031323334
  1. #!/usr/bin/env stack
  2. -- stack --resolver lts-9.21 script
  3. {-# LANGUAGE EmptyDataDecls #-}
  4. {-# LANGUAGE FlexibleContexts #-}
  5. {-# LANGUAGE GADTs #-}
  6. {-# LANGUAGE GeneralizedNewtypeDeriving #-}
  7. {-# LANGUAGE MultiParamTypeClasses #-}
  8. {-# LANGUAGE OverloadedStrings #-}
  9. {-# LANGUAGE QuasiQuotes #-}
  10. {-# LANGUAGE TemplateHaskell #-}
  11. {-# LANGUAGE TypeFamilies #-}
  12. import Control.Monad.IO.Class (liftIO)
  13. import Database.Persist
  14. import Database.Persist.Sqlite
  15. import Database.Persist.TH
  16. share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persistLowerCase|
  17. Person
  18. name String
  19. age Int Maybe
  20. deriving Show Eq
  21. BlogPost
  22. title String
  23. authorId PersonId
  24. deriving Show Eq
  25. |]
  26. main :: IO ()
  27. main = runSqlite ":memory:" $ do
  28. runMigration migrateAll
  29. johnId <- insert $ Person "John Doe" $ Just 35
  30. delete johnId