persistent 1.2.0.2 → 1.2.1
raw patch · 4 files changed
+17/−8 lines, 4 files
Files
- Database/Persist/Class/PersistField.hs +1/−0
- Database/Persist/Class/PersistStore.hs +11/−4
- Database/Persist/Sql/Orphan/PersistStore.hs +4/−3
- persistent.cabal +1/−1
Database/Persist/Class/PersistField.hs view
@@ -162,6 +162,7 @@ fromPersistValue (PersistText t) = case reads $ T.unpack t of -- NOTE: Sqlite can store rationals just as string [(a, "")] -> Right $ toRational (a :: Pico) _ -> Left $ "Can not read " <> t <> " as Rational (Pico in fact)"+ fromPersistValue (PersistInt64 i) = Right $ fromIntegral i fromPersistValue x = Left $ "Expected Rational, received: " <> T.pack (show x) instance PersistField Bool where
Database/Persist/Class/PersistStore.hs view
@@ -34,6 +34,10 @@ class MonadIO m => PersistStore m where type PersistMonadBackend m + -- | Get a record by identifier, if available.+ get :: (PersistMonadBackend m ~ PersistEntityBackend val, PersistEntity val)+ => Key val -> m (Maybe val)+ -- | Create a new record in the database, returning an automatically created -- key (in SQL an auto-increment id). insert :: (PersistMonadBackend m ~ PersistEntityBackend val, PersistEntity val)@@ -44,6 +48,13 @@ => val -> m () insert_ val = insert val >> return () + -- | Create multiple records in the database.+ -- SQL backends currently use the slow default implementation of+ -- @mapM insert@+ insertMany :: (PersistMonadBackend m ~ PersistEntityBackend val, PersistEntity val)+ => [val] -> m [Key val]+ insertMany = mapM insert+ -- | Create a new record in the database using the given key. insertKey :: (PersistMonadBackend m ~ PersistEntityBackend val, PersistEntity val) => Key val -> val -> m ()@@ -65,10 +76,6 @@ -- not exist. delete :: (PersistMonadBackend m ~ PersistEntityBackend val, PersistEntity val) => Key val -> m ()-- -- | Get a record by identifier, if available.- get :: (PersistMonadBackend m ~ PersistEntityBackend val, PersistEntity val)- => Key val -> m (Maybe val) #define DEF(T) { type PersistMonadBackend (T m) = PersistMonadBackend m; insert = lift . insert; insertKey k = lift . insertKey k; repsert k = lift . repsert k; replace k = lift . replace k; delete = lift . delete; get = lift . get } #define GO(T) instance (PersistStore m) => PersistStore (T m) where DEF(T)
Database/Persist/Sql/Orphan/PersistStore.hs view
@@ -58,9 +58,10 @@ insertKey = insrepHelper "INSERT" repsert key value = do- -- FIXME use this for sqlite insrepHelper "REPLACE"- delete key- insertKey key value+ mExisting <- get key+ case mExisting of+ Nothing -> insertKey key value+ Just _ -> replace key value get k = do conn <- askSqlConn
persistent.cabal view
@@ -1,5 +1,5 @@ name: persistent-version: 1.2.0.2+version: 1.2.1 license: MIT license-file: LICENSE author: Michael Snoyman <michael@snoyman.com>