diff options
author | 2014-03-20 13:20:25 -0400 | |
---|---|---|
committer | 2014-03-20 13:20:25 -0400 | |
commit | 2bf34f967a1512cc4c3a315cc0436170face7105 (patch) | |
tree | 832b9092858817af5136a88a909ec69faecb0813 /fooes.hs | |
parent | 6c9ea58d80f9c6fc8bc4faeb2cbb6ea8e0ecd330 (diff) |
added my database experiments
Diffstat (limited to 'fooes.hs')
-rw-r--r-- | fooes.hs | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/fooes.hs b/fooes.hs new file mode 100644 index 000000000..80f4b7dc5 --- /dev/null +++ b/fooes.hs @@ -0,0 +1,36 @@ +{-# LANGUAGE QuasiQuotes, TypeFamilies, GeneralizedNewtypeDeriving, TemplateHaskell, + OverloadedStrings, GADTs, FlexibleContexts #-} +import Database.Persist.TH +import Database.Persist.Sqlite (runSqlite) +import Control.Monad.IO.Class (liftIO) +import Control.Monad +import Database.Esqueleto hiding (Key) + +share [mkPersist sqlSettings, mkSave "entityDefs", mkMigrate "migrateAll"] [persistLowerCase| +CachedKey + key String + UniqueKey key + deriving Show + +AssociatedFiles + key CachedKeyId Eq + file FilePath + UniqueKeyFile key file + deriving Show +|] + +main :: IO () +main = runSqlite "foo.db" $ do + runMigration migrateAll + + forM_ [1..30000] $ \i -> do + k <- insert $ CachedKey (show i) + liftIO $ print k + insert $ AssociatedFiles k (show i) + + [(k2)] <- select $ from $ \k -> do + where_ (k ^. CachedKeyKey ==. val (show i)) + return (k ^. CachedKeyId) + liftIO $ print (2, k2) + delete $ from $ \f -> do + where_ (f ^. AssociatedFilesKey ==. k2) |