packages feed

esqueleto 1.0.8 → 1.2

raw patch · 6 files changed

+170/−113 lines, 6 filesdep +taggeddep ~persistentdep ~persistent-sqlitedep ~persistent-templatePVP ok

version bump matches the API change (PVP)

Dependencies added: tagged

Dependency ranges changed: persistent, persistent-sqlite, persistent-template

API changes (from Hackage documentation)

- Database.Esqueleto.Internal.Sql: rawExecute :: (MonadLogger m, MonadResourceBase m) => Mode -> SqlQuery () -> SqlPersist m Int64
+ Database.Esqueleto.Internal.Sql: rawEsqueleto :: (MonadLogger m, MonadResourceBase m) => Mode -> SqlQuery () -> SqlPersistT m Int64
- Database.Esqueleto: delete :: (MonadLogger m, MonadResourceBase m) => SqlQuery () -> SqlPersist m ()
+ Database.Esqueleto: delete :: (MonadLogger m, MonadResourceBase m) => SqlQuery () -> SqlPersistT m ()
- Database.Esqueleto: deleteCount :: (MonadLogger m, MonadResourceBase m) => SqlQuery () -> SqlPersist m Int64
+ Database.Esqueleto: deleteCount :: (MonadLogger m, MonadResourceBase m) => SqlQuery () -> SqlPersistT m Int64
- Database.Esqueleto: select :: (SqlSelect a r, MonadLogger m, MonadResourceBase m) => SqlQuery a -> SqlPersist m [r]
+ Database.Esqueleto: select :: (SqlSelect a r, MonadLogger m, MonadResourceBase m) => SqlQuery a -> SqlPersistT m [r]
- Database.Esqueleto: selectDistinct :: (SqlSelect a r, MonadLogger m, MonadResourceBase m) => SqlQuery a -> SqlPersist m [r]
+ Database.Esqueleto: selectDistinct :: (SqlSelect a r, MonadLogger m, MonadResourceBase m) => SqlQuery a -> SqlPersistT m [r]
- Database.Esqueleto: selectDistinctSource :: (SqlSelect a r, MonadLogger m, MonadResourceBase m) => SqlQuery a -> SqlPersist m (Source (ResourceT (SqlPersist m)) r)
+ Database.Esqueleto: selectDistinctSource :: (SqlSelect a r, MonadLogger m, MonadResourceBase m) => SqlQuery a -> SqlPersistT m (Source (ResourceT (SqlPersistT m)) r)
- Database.Esqueleto: selectSource :: (SqlSelect a r, MonadLogger m, MonadResourceBase m) => SqlQuery a -> SqlPersist m (Source (ResourceT (SqlPersist m)) r)
+ Database.Esqueleto: selectSource :: (SqlSelect a r, MonadLogger m, MonadResourceBase m) => SqlQuery a -> SqlPersistT m (Source (ResourceT (SqlPersistT m)) r)
- Database.Esqueleto: update :: (MonadLogger m, MonadResourceBase m, SqlEntity val) => (SqlExpr (Entity val) -> SqlQuery ()) -> SqlPersist m ()
+ Database.Esqueleto: update :: (MonadLogger m, MonadResourceBase m, SqlEntity val) => (SqlExpr (Entity val) -> SqlQuery ()) -> SqlPersistT m ()
- Database.Esqueleto: updateCount :: (MonadLogger m, MonadResourceBase m, SqlEntity val) => (SqlExpr (Entity val) -> SqlQuery ()) -> SqlPersist m Int64
+ Database.Esqueleto: updateCount :: (MonadLogger m, MonadResourceBase m, SqlEntity val) => (SqlExpr (Entity val) -> SqlQuery ()) -> SqlPersistT m Int64
- Database.Esqueleto.Internal.Sql: delete :: (MonadLogger m, MonadResourceBase m) => SqlQuery () -> SqlPersist m ()
+ Database.Esqueleto.Internal.Sql: delete :: (MonadLogger m, MonadResourceBase m) => SqlQuery () -> SqlPersistT m ()
- Database.Esqueleto.Internal.Sql: deleteCount :: (MonadLogger m, MonadResourceBase m) => SqlQuery () -> SqlPersist m Int64
+ Database.Esqueleto.Internal.Sql: deleteCount :: (MonadLogger m, MonadResourceBase m) => SqlQuery () -> SqlPersistT m Int64
- Database.Esqueleto.Internal.Sql: rawSelectSource :: (SqlSelect a r, MonadLogger m, MonadResourceBase m) => Mode -> SqlQuery a -> SqlPersist m (Source (ResourceT (SqlPersist m)) r)
+ Database.Esqueleto.Internal.Sql: rawSelectSource :: (SqlSelect a r, MonadLogger m, MonadResourceBase m) => Mode -> SqlQuery a -> SqlPersistT m (Source (ResourceT (SqlPersistT m)) r)
- Database.Esqueleto.Internal.Sql: runSource :: MonadResourceBase m => Source (ResourceT (SqlPersist m)) r -> SqlPersist m [r]
+ Database.Esqueleto.Internal.Sql: runSource :: MonadResourceBase m => Source (ResourceT (SqlPersistT m)) r -> SqlPersistT m [r]
- Database.Esqueleto.Internal.Sql: select :: (SqlSelect a r, MonadLogger m, MonadResourceBase m) => SqlQuery a -> SqlPersist m [r]
+ Database.Esqueleto.Internal.Sql: select :: (SqlSelect a r, MonadLogger m, MonadResourceBase m) => SqlQuery a -> SqlPersistT m [r]
- Database.Esqueleto.Internal.Sql: selectDistinct :: (SqlSelect a r, MonadLogger m, MonadResourceBase m) => SqlQuery a -> SqlPersist m [r]
+ Database.Esqueleto.Internal.Sql: selectDistinct :: (SqlSelect a r, MonadLogger m, MonadResourceBase m) => SqlQuery a -> SqlPersistT m [r]
- Database.Esqueleto.Internal.Sql: selectDistinctSource :: (SqlSelect a r, MonadLogger m, MonadResourceBase m) => SqlQuery a -> SqlPersist m (Source (ResourceT (SqlPersist m)) r)
+ Database.Esqueleto.Internal.Sql: selectDistinctSource :: (SqlSelect a r, MonadLogger m, MonadResourceBase m) => SqlQuery a -> SqlPersistT m (Source (ResourceT (SqlPersistT m)) r)
- Database.Esqueleto.Internal.Sql: selectSource :: (SqlSelect a r, MonadLogger m, MonadResourceBase m) => SqlQuery a -> SqlPersist m (Source (ResourceT (SqlPersist m)) r)
+ Database.Esqueleto.Internal.Sql: selectSource :: (SqlSelect a r, MonadLogger m, MonadResourceBase m) => SqlQuery a -> SqlPersistT m (Source (ResourceT (SqlPersistT m)) r)
- Database.Esqueleto.Internal.Sql: update :: (MonadLogger m, MonadResourceBase m, SqlEntity val) => (SqlExpr (Entity val) -> SqlQuery ()) -> SqlPersist m ()
+ Database.Esqueleto.Internal.Sql: update :: (MonadLogger m, MonadResourceBase m, SqlEntity val) => (SqlExpr (Entity val) -> SqlQuery ()) -> SqlPersistT m ()
- Database.Esqueleto.Internal.Sql: updateCount :: (MonadLogger m, MonadResourceBase m, SqlEntity val) => (SqlExpr (Entity val) -> SqlQuery ()) -> SqlPersist m Int64
+ Database.Esqueleto.Internal.Sql: updateCount :: (MonadLogger m, MonadResourceBase m, SqlEntity val) => (SqlExpr (Entity val) -> SqlQuery ()) -> SqlPersistT m Int64

Files

esqueleto.cabal view
@@ -1,5 +1,5 @@ name:                esqueleto-version:             1.0.8+version:             1.2 synopsis:            Bare bones, type-safe EDSL for SQL queries on persistent backends. homepage:            https://github.com/meteficha/esqueleto license:             BSD3@@ -52,12 +52,15 @@     Database.Esqueleto     Database.Esqueleto.Internal.Language     Database.Esqueleto.Internal.Sql+  other-modules:+    Database.Esqueleto.Internal.PersistentImport   build-depends:       base                 >= 4.5    && < 4.7     , text                 == 0.11.*-    , persistent           >= 1.1.5  && < 1.2+    , persistent           == 1.2.*     , transformers         >= 0.2     , unordered-containers >= 0.2+    , tagged               >= 0.2      , monad-logger     , conduit@@ -79,8 +82,8 @@     , HUnit     , QuickCheck     , hspec               >= 1.3 && < 1.6-    , persistent-sqlite   == 1.1.*-    , persistent-template == 1.1.*+    , persistent-sqlite   == 1.2.*+    , persistent-template == 1.2.*     , monad-control     , monad-logger        >= 0.3 
src/Database/Esqueleto.hs view
@@ -4,9 +4,29 @@ -- importing that module you should just import this one: -- -- @+-- -- For a module using just esqueleto. -- import Database.Esqueleto--- import qualified Database.Persist.Query as OldQuery -- @+--+-- If you need to use @persistent@'s default support for queries+-- as well, either import it qualified:+--+-- @+-- -- For a module that mostly uses esqueleto.+-- import Database.Esqueleto+-- import qualified Database.Persistent as P+-- @+--+-- or import @esqueleto@ itself qualified:+--+-- @+-- -- For a module uses esqueleto just on some queries.+-- import Database.Persistent+-- import qualified Database.Esqueleto as E+-- @+--+-- Other than identifier name clashes, @esqueleto@ does not+-- conflict with @persistent@ in any way. module Database.Esqueleto   ( -- * Setup     -- $setup@@ -58,17 +78,16 @@     -- * Re-exports     -- $reexports   , deleteKey-  , module Database.Persist.GenericSql-  , module Database.Persist.Store+  , module Database.Esqueleto.Internal.PersistentImport   ) where  import Data.Int (Int64) import Database.Esqueleto.Internal.Language import Database.Esqueleto.Internal.Sql-import Database.Persist.Store hiding (delete)-import Database.Persist.GenericSql-import qualified Database.Persist.Store+import Database.Esqueleto.Internal.PersistentImport+import qualified Database.Persist + -- $setup -- -- If you're already using @persistent@, then you're ready to use@@ -78,8 +97,10 @@ -- (<http://www.yesodweb.com/book/persistent>) to learn how to -- define your schema. + ---------------------------------------------------------------------- + -- $introduction -- -- The main goals of @esqueleto@ are to:@@ -109,8 +130,10 @@ -- losing too much convenience.  This also means that you may -- type-check a query that doesn't work on your DBMS. + ---------------------------------------------------------------------- + -- $gettingstarted -- -- We like clean, easy-to-read EDSLs.  However, in order to@@ -300,6 +323,27 @@ ----------------------------------------------------------------------  +-- $reexports+--+-- We re-export many symbols from @persistent@ for convenince,+-- since @esqueleto@ currently does not provide a way of doing+-- @INSERT@s:+--+--  * \"Store functions\" from "Database.Persist".+--+--  * Everything from "Database.Persist.Class" except for+--    @PersistQuery@ and @delete@ (use 'deleteKey' instead).+--+--  * Everything from "Database.Persist.Types" except for+--    @Update@, @SelectOpt@, @BackendSpecificFilter@ and @Filter@.+--+--  * Everything from "Database.Persist.Sql" except for+--    @deleteWhereCount@ and @updateWhereCount@.+++----------------------------------------------------------------------++ -- | @valkey i = val (Key (PersistInt64 i))@ -- (<https://github.com/meteficha/esqueleto/issues/9>). valkey :: Esqueleto query expr backend =>@@ -316,10 +360,4 @@              , PersistMonadBackend m ~ PersistEntityBackend val              , PersistEntity val )           => Key val -> m ()-deleteKey = Database.Persist.Store.delete---- $reexports------ We re-export @Database.Persist.Store@ for convenience, since--- @esqueleto@ currently does not provide a way of doing--- @INSERT@s.+deleteKey = Database.Persist.delete
src/Database/Esqueleto/Internal/Language.hs view
@@ -40,8 +40,7 @@ import Data.Int (Int64) import Data.String (IsString) import Data.Typeable (Typeable)-import Database.Persist.GenericSql-import Database.Persist.Store+import Database.Esqueleto.Internal.PersistentImport   -- | Finally tagless representation of @esqueleto@'s EDSL.
+ src/Database/Esqueleto/Internal/PersistentImport.hs view
@@ -0,0 +1,12 @@+-- | Re-export "Database.Persist.Sql" without any clashes with+-- @esqueleto@.+module Database.Esqueleto.Internal.PersistentImport+  ( module Database.Persist.Sql+  ) where++import Database.Persist.Sql hiding+  ( BackendSpecificFilter, Filter(..), PersistQuery(..), SelectOpt(..)+  , Update(..), delete, deleteWhereCount, updateWhereCount, selectList+  , selectKeysList, deleteCascadeWhere, (=.), (+=.), (-=.), (*=.), (/=.)+  , (==.), (!=.), (<.), (>.), (<=.), (>=.), (<-.), (/<-.), (||.)+  , listToJSON, mapToJSON, getPersistMap, limitOffsetOrder )
src/Database/Esqueleto/Internal/Sql.hs view
@@ -30,7 +30,7 @@   , UnsafeSqlFunctionArgument   , rawSelectSource   , runSource-  , rawExecute+  , rawEsqueleto   , toRawSql   , Mode(..)   , SqlSelect@@ -48,11 +48,8 @@ import Data.Int (Int64) import Data.List (intersperse) import Data.Monoid (Monoid(..), (<>))-import Database.Persist.EntityDef-import Database.Persist.GenericSql-import Database.Persist.GenericSql.Internal (Connection(escapeName, noLimit))-import Database.Persist.GenericSql.Raw (executeCount, SqlBackend, withStmt)-import Database.Persist.Store hiding (delete)+import Data.Proxy (Proxy(..))+import Database.Esqueleto.Internal.PersistentImport import qualified Control.Monad.Trans.Reader as R import qualified Control.Monad.Trans.State as S import qualified Control.Monad.Trans.Writer as W@@ -67,7 +64,7 @@ import Database.Esqueleto.Internal.Language  --- | SQL backend for @esqueleto@ using 'SqlPersist'.+-- | SQL backend for @esqueleto@ using 'SqlPersistT'. newtype SqlQuery a =   Q { unQ :: W.WriterT SideData (S.State IdentState) a } @@ -84,7 +81,7 @@   -- | Constraint synonym for @persistent@ entities whose backend--- is 'SqlPersist'.+-- is 'SqlPersistT'. type SqlEntity ent = (PersistEntity ent, PersistEntityBackend ent ~ SqlBackend)  @@ -108,7 +105,7 @@  -- | A part of a @FROM@ clause. data FromClause =-    FromStart Ident EntityDef+    FromStart Ident (EntityDef SqlType)   | FromJoin FromClause JoinKind FromClause (Maybe (SqlExpr (Value Bool)))   | OnClause (SqlExpr (Value Bool)) @@ -254,8 +251,8 @@         let ret   = EEntity ident             from_ = FromStart ident ed         return (EPreprocessedFrom ret from_)-      getVal :: SqlQuery (SqlExpr (PreprocessedFrom (SqlExpr (Entity a)))) -> a-      getVal = error "Esqueleto/Sql/fromStart/getVal: never here"+      getVal :: SqlQuery (SqlExpr (PreprocessedFrom (SqlExpr (Entity a)))) -> Proxy a+      getVal = const Proxy    fromStartMaybe = maybelize <$> fromStart     where@@ -372,7 +369,7 @@ sub mode query = ERaw Parens $ \conn -> toRawSql mode conn query  fromDBName :: Connection -> DBName -> TLB.Builder-fromDBName conn = TLB.fromText . escapeName conn+fromDBName conn = TLB.fromText . connEscapeName conn  existsHelper :: SqlQuery () -> SqlExpr (Value a) existsHelper =@@ -470,21 +467,21 @@   -- | (Internal) Execute an @esqueleto@ @SELECT@ 'SqlQuery' inside--- @persistent@'s 'SqlPersist' monad.+-- @persistent@'s 'SqlPersistT' monad. rawSelectSource :: ( SqlSelect a r                    , MonadLogger m                    , MonadResourceBase m )                  => Mode                  -> SqlQuery a-                 -> SqlPersist m (C.Source (C.ResourceT (SqlPersist m)) r)+                 -> SqlPersistT m (C.Source (C.ResourceT (SqlPersistT m)) r) rawSelectSource mode query = src     where       src = do-        conn <- SqlPersist R.ask+        conn <- SqlPersistT R.ask         return $ run conn C.$= massage        run conn =-        uncurry withStmt $+        uncurry rawQuery $         first builderToText $         toRawSql mode conn query @@ -499,17 +496,17 @@   -- | Execute an @esqueleto@ @SELECT@ query inside @persistent@'s--- 'SqlPersist' monad and return a 'C.Source' of rows.+-- 'SqlPersistT' monad and return a 'C.Source' of rows. selectSource :: ( SqlSelect a r                 , MonadLogger m                 , MonadResourceBase m )              => SqlQuery a-             -> SqlPersist m (C.Source (C.ResourceT (SqlPersist m)) r)+             -> SqlPersistT m (C.Source (C.ResourceT (SqlPersistT m)) r) selectSource = rawSelectSource SELECT   -- | Execute an @esqueleto@ @SELECT@ query inside @persistent@'s--- 'SqlPersist' monad and return a list of rows.+-- 'SqlPersistT' monad and return a list of rows. -- -- We've seen that 'from' has some magic about which kinds of -- things you may bring into scope.  This 'select' function also@@ -552,35 +549,35 @@ select :: ( SqlSelect a r           , MonadLogger m           , MonadResourceBase m )-       => SqlQuery a -> SqlPersist m [r]+       => SqlQuery a -> SqlPersistT m [r] select = selectSource >=> runSource   -- | Execute an @esqueleto@ @SELECT DISTINCT@ query inside--- @persistent@'s 'SqlPersist' monad and return a 'C.Source' of+-- @persistent@'s 'SqlPersistT' monad and return a 'C.Source' of -- rows. selectDistinctSource   :: ( SqlSelect a r      , MonadLogger m      , MonadResourceBase m )   => SqlQuery a-  -> SqlPersist m (C.Source (C.ResourceT (SqlPersist m)) r)+  -> SqlPersistT m (C.Source (C.ResourceT (SqlPersistT m)) r) selectDistinctSource = rawSelectSource SELECT_DISTINCT   -- | Execute an @esqueleto@ @SELECT DISTINCT@ query inside--- @persistent@'s 'SqlPersist' monad and return a list of rows.+-- @persistent@'s 'SqlPersistT' monad and return a list of rows. selectDistinct :: ( SqlSelect a r                   , MonadLogger m                   , MonadResourceBase m )-               => SqlQuery a -> SqlPersist m [r]+               => SqlQuery a -> SqlPersistT m [r] selectDistinct = selectDistinctSource >=> runSource   -- | (Internal) Run a 'C.Source' of rows. runSource :: MonadResourceBase m =>-             C.Source (C.ResourceT (SqlPersist m)) r-          -> SqlPersist m [r]+             C.Source (C.ResourceT (SqlPersistT m)) r+          -> SqlPersistT m [r] runSource src = C.runResourceT $ src C.$$ CL.consume  @@ -588,21 +585,21 @@   -- | (Internal) Execute an @esqueleto@ statement inside--- @persistent@'s 'SqlPersist' monad.-rawExecute :: ( MonadLogger m+-- @persistent@'s 'SqlPersistT' monad.+rawEsqueleto :: ( MonadLogger m               , MonadResourceBase m )            => Mode            -> SqlQuery ()-           -> SqlPersist m Int64-rawExecute mode query = do-  conn <- SqlPersist R.ask-  uncurry executeCount $+           -> SqlPersistT m Int64+rawEsqueleto mode query = do+  conn <- SqlPersistT R.ask+  uncurry rawExecuteCount $     first builderToText $     toRawSql mode conn query   -- | Execute an @esqueleto@ @DELETE@ query inside @persistent@'s--- 'SqlPersist' monad.  Note that currently there are no type+-- 'SqlPersistT' monad.  Note that currently there are no type -- checks for statements that should not appear on a @DELETE@ -- query. --@@ -626,7 +623,7 @@ delete :: ( MonadLogger m           , MonadResourceBase m )        => SqlQuery ()-       -> SqlPersist m ()+       -> SqlPersistT m () delete = void . deleteCount  @@ -634,12 +631,12 @@ deleteCount :: ( MonadLogger m                , MonadResourceBase m )             => SqlQuery ()-            -> SqlPersist m Int64-deleteCount = rawExecute DELETE+            -> SqlPersistT m Int64+deleteCount = rawEsqueleto DELETE   -- | Execute an @esqueleto@ @UPDATE@ query inside @persistent@'s--- 'SqlPersist' monad.  Note that currently there are no type+-- 'SqlPersistT' monad.  Note that currently there are no type -- checks for statements that should not appear on a @UPDATE@ -- query. --@@ -654,7 +651,7 @@           , MonadResourceBase m           , SqlEntity val )        => (SqlExpr (Entity val) -> SqlQuery ())-       -> SqlPersist m ()+       -> SqlPersistT m () update = void . updateCount  @@ -663,8 +660,8 @@                , MonadResourceBase m                , SqlEntity val )             => (SqlExpr (Entity val) -> SqlQuery ())-            -> SqlPersist m Int64-updateCount = rawExecute UPDATE . from+            -> SqlPersistT m Int64+updateCount = rawEsqueleto UPDATE . from   ----------------------------------------------------------------------@@ -798,7 +795,7 @@     limitTLB =       case ml of         Just l  -> "LIMIT " <> TLBI.decimal l-        Nothing -> TLB.fromText (noLimit conn)+        Nothing -> TLB.fromText (connNoLimit conn)      offsetTLB =       case mo of@@ -822,12 +819,11 @@ class SqlSelect a r | a -> r, r -> a where   -- | Creates the variable part of the @SELECT@ query and   -- returns the list of 'PersistValue's that will be given to-  -- 'withStmt'.+  -- 'rawQuery'.   sqlSelectCols :: Connection -> a -> (TLB.Builder, [PersistValue]) -  -- | Number of columns that will be consumed.  Must be-  -- non-strict on the argument.-  sqlSelectColCount :: a -> Int+  -- | Number of columns that will be consumed.+  sqlSelectColCount :: Proxy a -> Int    -- | Transform a row of the result into the data type.   sqlSelectProcessRow :: [PersistValue] -> Either T.Text r@@ -856,7 +852,7 @@         -- name of the table (which doesn't allow self-joins, for         -- example).         name = useIdent conn ident <> "."-        ret = let ed = entityDef $ getEntityVal expr+        ret = let ed = entityDef $ getEntityVal $ return expr               in (process ed, mempty)   sqlSelectColCount = (+1) . length . entityFields . entityDef . getEntityVal   sqlSelectProcessRow (idCol:ent) =@@ -864,8 +860,8 @@            <*> fromPersistValues ent   sqlSelectProcessRow _ = Left "SqlSelect (Entity a): wrong number of columns." -getEntityVal :: SqlExpr (Entity a) -> a-getEntityVal = error "Esqueleto/Sql/getEntityVal"+getEntityVal :: Proxy (SqlExpr (Entity a)) -> Proxy a+getEntityVal = const Proxy   -- | You may return a possibly-@NULL@ 'Entity' from a 'select' query.@@ -873,8 +869,8 @@   sqlSelectCols conn (EMaybe ent) = sqlSelectCols conn ent   sqlSelectColCount = sqlSelectColCount . fromEMaybe     where-      fromEMaybe :: SqlExpr (Maybe e) -> SqlExpr e-      fromEMaybe = error "Esqueleto/Sql/sqlSelectColCount[Maybe Entity]/fromEMaybe"+      fromEMaybe :: Proxy (SqlExpr (Maybe e)) -> Proxy (SqlExpr e)+      fromEMaybe = const Proxy   sqlSelectProcessRow cols     | all (== PersistNull) cols = return Nothing     | otherwise                 = Just <$> sqlSelectProcessRow cols@@ -900,11 +896,14 @@       [ sqlSelectCols esc a       , sqlSelectCols esc b       ]-  sqlSelectColCount ~(a,b) = sqlSelectColCount a + sqlSelectColCount b+  sqlSelectColCount = uncurry (+) . (sqlSelectColCount *** sqlSelectColCount) . fromTuple+    where+      fromTuple :: Proxy (a,b) -> (Proxy a, Proxy b)+      fromTuple = const (Proxy, Proxy)   sqlSelectProcessRow =     let x = getType processRow-        getType :: SqlSelect a r => (z -> Either y (r,x)) -> a-        getType = error "Esqueleto/SqlSelect[(a,b)]/sqlSelectProcessRow/getType"+        getType :: SqlSelect a r => (z -> Either y (r,x)) -> Proxy a+        getType = const Proxy          colCountFst = sqlSelectColCount x @@ -927,9 +926,12 @@       , sqlSelectCols esc b       , sqlSelectCols esc c       ]-  sqlSelectColCount   = sqlSelectColCount . from3+  sqlSelectColCount   = sqlSelectColCount . from3P   sqlSelectProcessRow = fmap to3 . sqlSelectProcessRow +from3P :: Proxy (a,b,c) -> Proxy ((a,b),c)+from3P = const Proxy+ from3 :: (a,b,c) -> ((a,b),c) from3 (a,b,c) = ((a,b),c) @@ -949,9 +951,12 @@       , sqlSelectCols esc c       , sqlSelectCols esc d       ]-  sqlSelectColCount   = sqlSelectColCount . from4+  sqlSelectColCount   = sqlSelectColCount . from4P   sqlSelectProcessRow = fmap to4 . sqlSelectProcessRow +from4P :: Proxy (a,b,c,d) -> Proxy ((a,b),(c,d))+from4P = const Proxy+ from4 :: (a,b,c,d) -> ((a,b),(c,d)) from4 (a,b,c,d) = ((a,b),(c,d)) @@ -973,11 +978,11 @@       , sqlSelectCols esc d       , sqlSelectCols esc e       ]-  sqlSelectColCount   = sqlSelectColCount . from5+  sqlSelectColCount   = sqlSelectColCount . from5P   sqlSelectProcessRow = fmap to5 . sqlSelectProcessRow -from5 :: (a,b,c,d,e) -> ((a,b),(c,d),e)-from5 (a,b,c,d,e) = ((a,b),(c,d),e)+from5P :: Proxy (a,b,c,d,e) -> Proxy ((a,b),(c,d),e)+from5P = const Proxy  to5 :: ((a,b),(c,d),e) -> (a,b,c,d,e) to5 ((a,b),(c,d),e) = (a,b,c,d,e)@@ -999,11 +1004,11 @@       , sqlSelectCols esc e       , sqlSelectCols esc f       ]-  sqlSelectColCount   = sqlSelectColCount . from6+  sqlSelectColCount   = sqlSelectColCount . from6P   sqlSelectProcessRow = fmap to6 . sqlSelectProcessRow -from6 :: (a,b,c,d,e,f) -> ((a,b),(c,d),(e,f))-from6 (a,b,c,d,e,f) = ((a,b),(c,d),(e,f))+from6P :: Proxy (a,b,c,d,e,f) -> Proxy ((a,b),(c,d),(e,f))+from6P = const Proxy  to6 :: ((a,b),(c,d),(e,f)) -> (a,b,c,d,e,f) to6 ((a,b),(c,d),(e,f)) = (a,b,c,d,e,f)@@ -1027,11 +1032,11 @@       , sqlSelectCols esc f       , sqlSelectCols esc g       ]-  sqlSelectColCount   = sqlSelectColCount . from7+  sqlSelectColCount   = sqlSelectColCount . from7P   sqlSelectProcessRow = fmap to7 . sqlSelectProcessRow -from7 :: (a,b,c,d,e,f,g) -> ((a,b),(c,d),(e,f),g)-from7 (a,b,c,d,e,f,g) = ((a,b),(c,d),(e,f),g)+from7P :: Proxy (a,b,c,d,e,f,g) -> Proxy ((a,b),(c,d),(e,f),g)+from7P = const Proxy  to7 :: ((a,b),(c,d),(e,f),g) -> (a,b,c,d,e,f,g) to7 ((a,b),(c,d),(e,f),g) = (a,b,c,d,e,f,g)@@ -1057,11 +1062,11 @@       , sqlSelectCols esc g       , sqlSelectCols esc h       ]-  sqlSelectColCount   = sqlSelectColCount . from8+  sqlSelectColCount   = sqlSelectColCount . from8P   sqlSelectProcessRow = fmap to8 . sqlSelectProcessRow -from8 :: (a,b,c,d,e,f,g,h) -> ((a,b),(c,d),(e,f),(g,h))-from8 (a,b,c,d,e,f,g,h) = ((a,b),(c,d),(e,f),(g,h))+from8P :: Proxy (a,b,c,d,e,f,g,h) -> Proxy ((a,b),(c,d),(e,f),(g,h))+from8P = const Proxy  to8 :: ((a,b),(c,d),(e,f),(g,h)) -> (a,b,c,d,e,f,g,h) to8 ((a,b),(c,d),(e,f),(g,h)) = (a,b,c,d,e,f,g,h)@@ -1088,11 +1093,11 @@       , sqlSelectCols esc h       , sqlSelectCols esc i       ]-  sqlSelectColCount   = sqlSelectColCount . from9+  sqlSelectColCount   = sqlSelectColCount . from9P   sqlSelectProcessRow = fmap to9 . sqlSelectProcessRow -from9 :: (a,b,c,d,e,f,g,h,i) -> ((a,b),(c,d),(e,f),(g,h),i)-from9 (a,b,c,d,e,f,g,h,i) = ((a,b),(c,d),(e,f),(g,h),i)+from9P :: Proxy (a,b,c,d,e,f,g,h,i) -> Proxy ((a,b),(c,d),(e,f),(g,h),i)+from9P = const Proxy  to9 :: ((a,b),(c,d),(e,f),(g,h),i) -> (a,b,c,d,e,f,g,h,i) to9 ((a,b),(c,d),(e,f),(g,h),i) = (a,b,c,d,e,f,g,h,i)@@ -1121,11 +1126,11 @@       , sqlSelectCols esc i       , sqlSelectCols esc j       ]-  sqlSelectColCount   = sqlSelectColCount . from10+  sqlSelectColCount   = sqlSelectColCount . from10P   sqlSelectProcessRow = fmap to10 . sqlSelectProcessRow -from10 :: (a,b,c,d,e,f,g,h,i,j) -> ((a,b),(c,d),(e,f),(g,h),(i,j))-from10 (a,b,c,d,e,f,g,h,i,j) = ((a,b),(c,d),(e,f),(g,h),(i,j))+from10P :: Proxy (a,b,c,d,e,f,g,h,i,j) -> Proxy ((a,b),(c,d),(e,f),(g,h),(i,j))+from10P = const Proxy  to10 :: ((a,b),(c,d),(e,f),(g,h),(i,j)) -> (a,b,c,d,e,f,g,h,i,j) to10 ((a,b),(c,d),(e,f),(g,h),(i,j)) = (a,b,c,d,e,f,g,h,i,j)@@ -1157,11 +1162,11 @@       , sqlSelectCols esc j       , sqlSelectCols esc k       ]-  sqlSelectColCount   = sqlSelectColCount . from11+  sqlSelectColCount   = sqlSelectColCount . from11P   sqlSelectProcessRow = fmap to11 . sqlSelectProcessRow -from11 :: (a,b,c,d,e,f,g,h,i,j,k) -> ((a,b),(c,d),(e,f),(g,h),(i,j),k)-from11 (a,b,c,d,e,f,g,h,i,j,k) = ((a,b),(c,d),(e,f),(g,h),(i,j),k)+from11P :: Proxy (a,b,c,d,e,f,g,h,i,j,k) -> Proxy ((a,b),(c,d),(e,f),(g,h),(i,j),k)+from11P = const Proxy  to11 :: ((a,b),(c,d),(e,f),(g,h),(i,j),k) -> (a,b,c,d,e,f,g,h,i,j,k) to11 ((a,b),(c,d),(e,f),(g,h),(i,j),k) = (a,b,c,d,e,f,g,h,i,j,k)@@ -1194,11 +1199,11 @@       , sqlSelectCols esc k       , sqlSelectCols esc l       ]-  sqlSelectColCount   = sqlSelectColCount . from12+  sqlSelectColCount   = sqlSelectColCount . from12P   sqlSelectProcessRow = fmap to12 . sqlSelectProcessRow -from12 :: (a,b,c,d,e,f,g,h,i,j,k,l) -> ((a,b),(c,d),(e,f),(g,h),(i,j),(k,l))-from12 (a,b,c,d,e,f,g,h,i,j,k,l) = ((a,b),(c,d),(e,f),(g,h),(i,j),(k,l))+from12P :: Proxy (a,b,c,d,e,f,g,h,i,j,k,l) -> Proxy ((a,b),(c,d),(e,f),(g,h),(i,j),(k,l))+from12P = const Proxy  to12 :: ((a,b),(c,d),(e,f),(g,h),(i,j),(k,l)) -> (a,b,c,d,e,f,g,h,i,j,k,l) to12 ((a,b),(c,d),(e,f),(g,h),(i,j),(k,l)) = (a,b,c,d,e,f,g,h,i,j,k,l)@@ -1233,11 +1238,11 @@       , sqlSelectCols esc l       , sqlSelectCols esc m       ]-  sqlSelectColCount   = sqlSelectColCount . from13+  sqlSelectColCount   = sqlSelectColCount . from13P   sqlSelectProcessRow = fmap to13 . sqlSelectProcessRow -from13 :: (a,b,c,d,e,f,g,h,i,j,k,l,m) -> ((a,b),(c,d),(e,f),(g,h),(i,j),(k,l),m)-from13 (a,b,c,d,e,f,g,h,i,j,k,l,m) = ((a,b),(c,d),(e,f),(g,h),(i,j),(k,l),m)+from13P :: Proxy (a,b,c,d,e,f,g,h,i,j,k,l,m) -> Proxy ((a,b),(c,d),(e,f),(g,h),(i,j),(k,l),m)+from13P = const Proxy  to13 :: ((a,b),(c,d),(e,f),(g,h),(i,j),(k,l),m) -> (a,b,c,d,e,f,g,h,i,j,k,l,m) to13 ((a,b),(c,d),(e,f),(g,h),(i,j),(k,l),m) = (a,b,c,d,e,f,g,h,i,j,k,l,m)@@ -1274,11 +1279,11 @@       , sqlSelectCols esc m       , sqlSelectCols esc n       ]-  sqlSelectColCount   = sqlSelectColCount . from14+  sqlSelectColCount   = sqlSelectColCount . from14P   sqlSelectProcessRow = fmap to14 . sqlSelectProcessRow -from14 :: (a,b,c,d,e,f,g,h,i,j,k,l,m,n) -> ((a,b),(c,d),(e,f),(g,h),(i,j),(k,l),(m,n))-from14 (a,b,c,d,e,f,g,h,i,j,k,l,m,n) = ((a,b),(c,d),(e,f),(g,h),(i,j),(k,l),(m,n))+from14P :: Proxy (a,b,c,d,e,f,g,h,i,j,k,l,m,n) -> Proxy ((a,b),(c,d),(e,f),(g,h),(i,j),(k,l),(m,n))+from14P = const Proxy  to14 :: ((a,b),(c,d),(e,f),(g,h),(i,j),(k,l),(m,n)) -> (a,b,c,d,e,f,g,h,i,j,k,l,m,n) to14 ((a,b),(c,d),(e,f),(g,h),(i,j),(k,l),(m,n)) = (a,b,c,d,e,f,g,h,i,j,k,l,m,n)@@ -1317,11 +1322,11 @@       , sqlSelectCols esc n       , sqlSelectCols esc o       ]-  sqlSelectColCount   = sqlSelectColCount . from15+  sqlSelectColCount   = sqlSelectColCount . from15P   sqlSelectProcessRow = fmap to15 . sqlSelectProcessRow -from15 :: (a,b,c,d,e,f,g,h,i,j,k,l,m,n, o) -> ((a,b),(c,d),(e,f),(g,h),(i,j),(k,l),(m,n),o)-from15 (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) = ((a,b),(c,d),(e,f),(g,h),(i,j),(k,l),(m,n),o)+from15P :: Proxy (a,b,c,d,e,f,g,h,i,j,k,l,m,n, o) -> Proxy ((a,b),(c,d),(e,f),(g,h),(i,j),(k,l),(m,n),o)+from15P = const Proxy  to15 :: ((a,b),(c,d),(e,f),(g,h),(i,j),(k,l),(m,n),o) -> (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) to15 ((a,b),(c,d),(e,f),(g,h),(i,j),(k,l),(m,n),o) = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o)@@ -1362,11 +1367,11 @@       , sqlSelectCols esc o       , sqlSelectCols esc p       ]-  sqlSelectColCount   = sqlSelectColCount . from16+  sqlSelectColCount   = sqlSelectColCount . from16P   sqlSelectProcessRow = fmap to16 . sqlSelectProcessRow -from16 :: (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) -> ((a,b),(c,d),(e,f),(g,h),(i,j),(k,l),(m,n),(o,p))-from16 (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) = ((a,b),(c,d),(e,f),(g,h),(i,j),(k,l),(m,n),(o,p))+from16P :: Proxy (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) -> Proxy ((a,b),(c,d),(e,f),(g,h),(i,j),(k,l),(m,n),(o,p))+from16P = const Proxy  to16 :: ((a,b),(c,d),(e,f),(g,h),(i,j),(k,l),(m,n),(o,p)) -> (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) to16 ((a,b),(c,d),(e,f),(g,h),(i,j),(k,l),(m,n),(o,p)) = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p)
test/Test.hs view
@@ -26,7 +26,7 @@   -- Test schema-share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persist|+share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persistUpperCase|   Person     name String     age Int Maybe@@ -611,7 +611,7 @@                     , C.MonadUnsafeIO m, C.MonadThrow m )  -run, runSilent, runVerbose :: (forall m. RunDbMonad m => SqlPersist (C.ResourceT m) a) -> IO a+run, runSilent, runVerbose :: (forall m. RunDbMonad m => SqlPersistT (C.ResourceT m) a) -> IO a runSilent  act = runNoLoggingT     $ run_worker act runVerbose act = runStderrLoggingT $ run_worker act run =@@ -624,7 +624,7 @@ verbose = True  -run_worker :: RunDbMonad m => SqlPersist (C.ResourceT m) a -> m a+run_worker :: RunDbMonad m => SqlPersistT (C.ResourceT m) a -> m a run_worker =   C.runResourceT .   withSqliteConn ":memory:" .