aboutsummaryrefslogtreecommitdiff
path: root/fooes.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2014-03-20 13:20:25 -0400
committerGravatar Joey Hess <joey@kitenet.net>2014-03-20 13:20:25 -0400
commit2bf34f967a1512cc4c3a315cc0436170face7105 (patch)
tree832b9092858817af5136a88a909ec69faecb0813 /fooes.hs
parent6c9ea58d80f9c6fc8bc4faeb2cbb6ea8e0ecd330 (diff)
added my database experiments
Diffstat (limited to 'fooes.hs')
-rw-r--r--fooes.hs36
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)