packages feed

persistent-postgresql 1.1.2 → 1.1.2.1

raw patch · 2 files changed

+17/−10 lines, 2 files

Files

Database/Persist/Postgresql.hs view
@@ -19,6 +19,7 @@ import Database.Persist.GenericSql hiding (Key) import Database.Persist.GenericSql.Internal import Database.Persist.EntityDef+import Data.Maybe (mapMaybe)  import qualified Database.PostgreSQL.Simple as PG import qualified Database.PostgreSQL.Simple.BuiltinTypes as PG@@ -280,7 +281,7 @@          -> (Text -> IO Statement)          -> val          -> IO (Either [Text] [(Bool, Text)])-migrate' allDefs getter val = do+migrate' allDefs getter val = fmap (fmap $ map showAlterDb) $ do     let name = entityDB $ entityDef val     old <- getColumns getter $ entityDef val     case partitionEithers old of@@ -290,7 +291,8 @@             if null old                 then do                     let addTable = AddTable $ concat-                            [ "CREATE TABLE "+                            -- Lower case e: see Database.Persistent.GenericSql.Migration+                            [ "CREATe TABLE "                             , T.unpack $ escape name                             , "("                             , T.unpack $ escape $ entityID $ entityDef val@@ -298,14 +300,15 @@                             , concatMap (\x -> ',' : showColumn x) $ fst new                             , ")"                             ]-                    let rest = flip concatMap (snd new) $ \(uname, ucols) ->+                    let uniques = flip concatMap (snd new) $ \(uname, ucols) ->                             [AlterTable name $ AddUniqueConstraint uname ucols]-                    return $ Right $ map showAlterDb $ addTable : rest+                        references = mapMaybe (getAddReference name) $ fst new+                    return $ Right $ addTable : uniques ++ references                 else do                     let (acs, ats) = getAlters new old'                     let acs' = map (AlterColumn name) acs                     let ats' = map (AlterTable name) ats-                    return $ Right $ map showAlterDb $ acs' ++ ats'+                    return $ Right $ acs' ++ ats'         (errs, _) -> return $ Left errs  data AlterColumn = Type SqlType | IsNull | NotNull | Add Column | Drop@@ -468,6 +471,13 @@              in (modRef ++ modDef ++ modNull ++ modType,                  filter (\c -> cName c /= name) cols) +-- | Get the references to be added to a table for the given column.+getAddReference :: DBName -> Column -> Maybe AlterDB+getAddReference table (Column n _nu _t _def _maxLen ref) =+    case ref of+        Nothing -> Nothing+        Just (s, _) -> Just $ AlterColumn table (n, AddReference s)+ showColumn :: Column -> String showColumn (Column n nu t def _maxLen ref) = concat     [ T.unpack $ escape n@@ -478,9 +488,6 @@     , case def of         Nothing -> ""         Just s -> " DEFAULT " ++ T.unpack s-    , case ref of-        Nothing -> ""-        Just (s, _) -> " REFERENCES " ++ T.unpack (escape s)     ]  showSqlType :: SqlType -> String@@ -632,7 +639,7 @@     loadConfig (Object o) = do         database <- o .: "database"         host     <- o .: "host"-        port     <- o .: "port"+        port     <- o .:? "port" .!= 5432         user     <- o .: "user"         password <- o .: "password"         pool     <- o .: "poolsize"
persistent-postgresql.cabal view
@@ -1,5 +1,5 @@ name:            persistent-postgresql-version:         1.1.2+version:         1.1.2.1 license:         MIT license-file:    LICENSE author:          Felipe Lessa, Michael Snoyman <michael@snoyman.com>