persistent 1.0.1.3 → 1.0.2
raw patch · 3 files changed
+20/−10 lines, 3 filesdep ~lifted-basePVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: lifted-base
API changes (from Hackage documentation)
+ Database.Persist.GenericSql.Internal: ISRInsertGet :: Text -> Text -> InsertSqlResult
+ Database.Persist.GenericSql.Internal: ISRSingle :: Text -> InsertSqlResult
+ Database.Persist.GenericSql.Internal: data InsertSqlResult
- Database.Persist.GenericSql.Internal: Connection :: (Text -> IO Statement) -> (DBName -> [DBName] -> Either Text (Text, Text)) -> IORef (Map Text Statement) -> IO () -> (forall v. PersistEntity v => [EntityDef] -> (Text -> IO Statement) -> v -> IO (Either [Text] [(Bool, Text)])) -> ((Text -> IO Statement) -> IO ()) -> ((Text -> IO Statement) -> IO ()) -> ((Text -> IO Statement) -> IO ()) -> (DBName -> Text) -> Text -> Connection
+ Database.Persist.GenericSql.Internal: Connection :: (Text -> IO Statement) -> (DBName -> [DBName] -> DBName -> InsertSqlResult) -> IORef (Map Text Statement) -> IO () -> (forall v. PersistEntity v => [EntityDef] -> (Text -> IO Statement) -> v -> IO (Either [Text] [(Bool, Text)])) -> ((Text -> IO Statement) -> IO ()) -> ((Text -> IO Statement) -> IO ()) -> ((Text -> IO Statement) -> IO ()) -> (DBName -> Text) -> Text -> Connection
- Database.Persist.GenericSql.Internal: insertSql :: Connection -> DBName -> [DBName] -> Either Text (Text, Text)
+ Database.Persist.GenericSql.Internal: insertSql :: Connection -> DBName -> [DBName] -> DBName -> InsertSqlResult
Files
- Database/Persist/GenericSql.hs +12/−6
- Database/Persist/GenericSql/Internal.hs +6/−2
- persistent.cabal +2/−2
Database/Persist/GenericSql.hs view
@@ -97,16 +97,16 @@ instance (MonadBaseControl IO m, MonadIO m, C.MonadThrow m, C.MonadUnsafeIO m, MonadLogger m) => PersistStore SqlPersist m where insert val = do conn <- SqlPersist ask- let esql = insertSql conn (entityDB t) (map fieldDB $ entityFields t)+ let esql = insertSql conn (entityDB t) (map fieldDB $ entityFields t) (entityID t) i <- case esql of- Left sql -> C.runResourceT $ R.withStmt sql vals C.$$ do+ ISRSingle sql -> C.runResourceT $ R.withStmt sql vals C.$$ do x <- CL.head case x of Just [PersistInt64 i] -> return i Nothing -> error $ "SQL insert did not return a result giving the generated ID" Just vals' -> error $ "Invalid result from a SQL insert, got: " P.++ P.show vals'- Right (sql1, sql2) -> do+ ISRInsertGet sql1 sql2 -> do execute' sql1 vals C.runResourceT $ R.withStmt sql2 [] C.$$ do Just [PersistInt64 i] <- CL.head@@ -124,7 +124,9 @@ , escapeName conn (entityDB t) , " SET " , T.intercalate "," (map (go conn . fieldDB) $ entityFields t)- , " WHERE id=?"+ , " WHERE "+ , escapeName conn $ entityID t+ , "=?" ] vals = map toPersistValue (toPersistFields val) `mappend` [unKey k] execute' sql vals@@ -148,7 +150,9 @@ , cols , " FROM " , escapeName conn $ entityDB t- , " WHERE id=?"+ , " WHERE "+ , escapeName conn $ entityID t+ , "=?" ] vals' = [unKey k] C.runResourceT $ R.withStmt sql vals' C.$$ do@@ -168,7 +172,9 @@ sql conn = concat [ "DELETE FROM " , escapeName conn $ entityDB t- , " WHERE id=?"+ , " WHERE "+ , escapeName conn $ entityID t+ , "=?" ] insrepHelper :: (MonadIO m, PersistEntity val, MonadLogger m)
Database/Persist/GenericSql/Internal.hs view
@@ -15,6 +15,7 @@ , mkColumns , Column (..) , logSQL+ , InsertSqlResult (..) ) where import qualified Data.Map as Map@@ -35,10 +36,13 @@ import Control.Monad.Logger (logDebugS) import Data.Maybe (mapMaybe, listToMaybe) +data InsertSqlResult = ISRSingle Text+ | ISRInsertGet Text Text+ data Connection = Connection { prepare :: Text -> IO Statement- -- ^ table name, column names, either 1 or 2 statements to run- , insertSql :: DBName -> [DBName] -> Either Text (Text, Text)+ -- ^ table name, column names, id name, either 1 or 2 statements to run+ , insertSql :: DBName -> [DBName] -> DBName -> InsertSqlResult , stmtMap :: IORef (Map.Map Text Statement) , close :: IO () , migrateSql :: forall v. PersistEntity v
persistent.cabal view
@@ -1,5 +1,5 @@ name: persistent-version: 1.0.1.3+version: 1.0.2 license: MIT license-file: LICENSE author: Michael Snoyman <michael@snoyman.com>@@ -35,7 +35,7 @@ , conduit >= 0.5 && < 0.6 , resourcet >= 0.3 && < 0.5 , monad-control >= 0.3 && < 0.4- , lifted-base >= 0.1+ , lifted-base >= 0.1 && < 0.2 , pool-conduit >= 0.1 && < 0.2 , path-pieces >= 0.1 && < 0.2 , aeson >= 0.5 && < 0.7