packages feed

hasqlator-mysql 0.0.9 → 0.1.0

raw patch · 2 files changed

+42/−7 lines, 2 filesdep ~optics-corePVP ok

version bump matches the API change (PVP)

Dependency ranges changed: optics-core

API changes (from Hackage documentation)

+ Database.MySQL.Hasqlator.Typed.Schema: [updatorNameModifier] :: Properties -> TableInfo -> String
+ Database.MySQL.Hasqlator.Typed.Schema: makeUpdators :: Properties -> Name -> [TableInfo] -> Q [Dec]
- Database.MySQL.Hasqlator.Typed.Schema: Properties :: (ColumnInfo -> String) -> (TableInfo -> String) -> (String -> String) -> Bool -> (TableInfo -> String) -> (TableInfo -> String) -> (TableInfo -> String) -> String -> (ColumnInfo -> String) -> Properties
+ Database.MySQL.Hasqlator.Typed.Schema: Properties :: (ColumnInfo -> String) -> (TableInfo -> String) -> (String -> String) -> Bool -> (TableInfo -> String) -> (TableInfo -> String) -> (TableInfo -> String) -> (TableInfo -> String) -> String -> (ColumnInfo -> String) -> Properties

Files

hasqlator-mysql.cabal view
@@ -1,5 +1,5 @@ Name:		hasqlator-mysql-Version: 	0.0.9+Version: 	0.1.0 Synopsis:	composable SQL generation Category: 	Database Copyright: 	Kristof Bastiaensen (2020)@@ -44,7 +44,7 @@                  template-haskell,                  aeson,                  pretty-simple,-                 optics-core >= 0.4 && < 0.5+                 optics-core >= 0.3 && < 0.5   hs-source-dirs:     src                    Exposed-Modules:
src/Database/MySQL/Hasqlator/Typed/Schema.hs view
@@ -9,7 +9,7 @@   (TableInfo(..), ColumnInfo(..), fetchTableInfo, Sign(..), ColumnType(..),    pprTableInfo, Properties(..), defaultProperties, makeFields,    smartUpcase, smartDowncase,-   makeRecords, makeSelectors, makeInsertors) where+   makeRecords, makeSelectors, makeInsertors, makeUpdators) where import Database.MySQL.Hasqlator import qualified Database.MySQL.Hasqlator.Typed as T import Database.MySQL.Base(MySQLConn)@@ -247,6 +247,7 @@   , includeSchema :: Bool   , insertorTypeModifier :: TableInfo -> String   , insertorNameModifier :: TableInfo -> String+  , updatorNameModifier :: TableInfo -> String   , selectorNameModifier :: TableInfo -> String   , fieldsQualifier :: String   , insertorFieldModifier :: ColumnInfo -> String@@ -283,12 +284,15 @@          (if smartDowncase n `elem` reserved then "_" else mempty) <> "_tbl"   , classNameModifier = \n -> "Has_" <> n <> "_field"   , includeSchema = True+  , insertorNameModifier = \TableInfo{tableName} ->+      let n = Text.unpack tableName+      in smartDowncase (removeUnderscore n) <> "Insertor"   , insertorTypeModifier = \TableInfo{tableName} ->       let n = Text.unpack tableName       in removeUnderscore (smartUpcase n) <> "Fields"-  , insertorNameModifier = \TableInfo{tableName} ->+  , updatorNameModifier = \TableInfo{tableName} ->       let n = Text.unpack tableName-      in smartDowncase (removeUnderscore n) <> "Insertor"+      in smartDowncase (removeUnderscore n) <> "Updator"   , selectorNameModifier = \TableInfo{tableName} ->       let n = Text.unpack tableName       in n <> "_sel"@@ -298,7 +302,7 @@       in smartDowncase n <> "_field"   }     where reserved :: [String]-          reserved = ["id", "class", "data", "type", "foreign", "import",+          reserved = ["class", "data", "type", "foreign", "import",                       "default", "case"]  getColumnTableName :: Properties -> ColumnInfo -> String@@ -421,7 +425,7 @@                  |]            , valD (varP insertorName)              (normalB $ foldr1 (\x y -> [| $(x) <> $(y) |]) $-              map insertorField $ tableColumns ti)+              map insertorField $ filter (not . autoIncrement) $ tableColumns ti)              []            ]   where @@ -441,6 +445,33 @@                              fieldsQualifier props <>                              fieldNameModifier props ci) |] +updator :: Properties -> Name -> TableInfo -> Q [Dec]+updator props dbName ti =+  sequence [ sigD+             updatorName+             [t| T.Alias $(table) $(database) 'T.InnerJoined+                -> T.Alias $(table) $(database) 'T.InnerJoined+                -> [T.Updator $(table) $(database)]+             |]+           , funD updatorName+             [ do old <- newName "old"+                  new <- newName "new"+                  clause [ conP 'T.Alias [varP old]+                         , conP 'T.Alias [varP new]]+                    (normalB $ listE $ map (updatorField new) $+                     filter (not . autoIncrement) $ tableColumns ti)+                    []+             ]+           ]+  where+    table = litT $ strTyLit $ getTableName props ti+    database = conT dbName+    updatorName = mkName $ updatorNameModifier props ti+    updatorField :: Name -> ColumnInfo -> Q Exp+    updatorField new ci = [e| $(fieldName) T.:= $(varE new) $(fieldName) |]+      where fieldName = varE $ mkName $+                        fieldsQualifier props <> fieldNameModifier props ci+ makeSelector :: Properties -> Name -> TableInfo -> Q [Dec] makeSelector props dbName ti =   sequence [ sigD@@ -510,6 +541,10 @@ makeInsertors :: Properties -> Name -> [TableInfo] -> Q [Dec] makeInsertors props dbName tis =   concat <$> traverse (insertor props dbName) tis++makeUpdators :: Properties -> Name -> [TableInfo] -> Q [Dec]+makeUpdators props dbName tis =+  concat <$> traverse (updator props dbName) tis  makeSelectors :: Properties -> Name -> [TableInfo] -> Q [Dec] makeSelectors props dbName tis =