packages feed

persistent-sqlite 1.2.0 → 1.2.1

raw patch · 2 files changed

+16/−6 lines, 2 files

Files

Database/Persist/Sqlite.hs view
@@ -162,7 +162,7 @@          -> IO (Either [Text] [(Bool, Text)]) migrate' allDefs getter val = do     let (cols, uniqs) = mkColumns allDefs val-    let newSql = mkCreateTable False def (cols, uniqs)+    let newSql = mkCreateTable False def (filter (not . safeToRemove val . cName) cols, uniqs)     stmt <- getter "SELECT sql FROM sqlite_master WHERE type='table' AND name=?"     oldSql' <- runResourceT              $ stmtQuery stmt [PersistText $ unDBName table] $$ go@@ -184,6 +184,14 @@             Just [PersistText y] -> return $ Just y             Just y -> error $ "Unexpected result from sqlite_master: " ++ show y +-- | Check if a column name is listed as the "safe to remove" in the entity+-- list.+safeToRemove :: EntityDef a -> DBName -> Bool+safeToRemove def (DBName colName)+    = any (elem "SafeToRemove" . fieldAttrs)+    $ filter ((== (DBName colName)) . fieldDB)+    $ entityFields def+ getCopyTable :: [EntityDef a]              -> (Text -> IO Statement)              -> EntityDef SqlType@@ -192,17 +200,18 @@     stmt <- getter $ pack $ "PRAGMA table_info(" ++ escape' table ++ ")"     oldCols' <- runResourceT $ stmtQuery stmt [] $$ getCols     let oldCols = map DBName $ filter (/= "id") oldCols' -- need to update for table id attribute ?-    let newCols = map cName cols+    let newCols = filter (not . safeToRemove def) $ map cName cols     let common = filter (`elem` oldCols) newCols     let id_ = entityID val     return [ (False, tmpSql)            , (False, copyToTemp $ id_ : common)-           , (common /= oldCols, pack dropOld)+           , (common /= filter (not . safeToRemove def) oldCols, pack dropOld)            , (False, newSql)            , (False, copyToFinal $ id_ : newCols)            , (False, pack dropTmp)            ]   where+     def = val     getCols = do         x <- CL.head@@ -215,8 +224,9 @@     table = entityDB def     tableTmp = DBName $ unDBName table `T.append` "_backup"     (cols, uniqs) = mkColumns allDefs val-    newSql = mkCreateTable False def (cols, uniqs)-    tmpSql = mkCreateTable True def { entityDB = tableTmp } (cols, uniqs)+    cols' = filter (not . safeToRemove def . cName) cols+    newSql = mkCreateTable False def (cols', uniqs)+    tmpSql = mkCreateTable True def { entityDB = tableTmp } (cols', uniqs)     dropTmp = "DROP TABLE " ++ escape' tableTmp     dropOld = "DROP TABLE " ++ escape' table     copyToTemp common = pack $ concat
persistent-sqlite.cabal view
@@ -1,5 +1,5 @@ name:            persistent-sqlite-version:         1.2.0+version:         1.2.1 license:         MIT license-file:    LICENSE author:          Michael Snoyman <michael@snoyman.com>