packages feed

hasqlator-mysql 0.0.5 → 0.0.6

raw patch · 2 files changed

+44/−40 lines, 2 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Database.MySQL.Hasqlator.Typed.Schema: Properties :: (String -> String) -> (String -> String) -> (String -> String) -> Bool -> Bool -> (String -> String) -> (String -> String) -> (String -> String) -> Properties
+ Database.MySQL.Hasqlator.Typed.Schema: Properties :: (ColumnInfo -> String) -> (TableInfo -> String) -> (String -> String) -> Bool -> Bool -> (TableInfo -> String) -> (TableInfo -> String) -> (ColumnInfo -> String) -> Properties
- Database.MySQL.Hasqlator.Typed.Schema: [fieldNameModifier] :: Properties -> String -> String
+ Database.MySQL.Hasqlator.Typed.Schema: [fieldNameModifier] :: Properties -> ColumnInfo -> String
- Database.MySQL.Hasqlator.Typed.Schema: [insertorFieldModifier] :: Properties -> String -> String
+ Database.MySQL.Hasqlator.Typed.Schema: [insertorFieldModifier] :: Properties -> ColumnInfo -> String
- Database.MySQL.Hasqlator.Typed.Schema: [insertorNameModifier] :: Properties -> String -> String
+ Database.MySQL.Hasqlator.Typed.Schema: [insertorNameModifier] :: Properties -> TableInfo -> String
- Database.MySQL.Hasqlator.Typed.Schema: [insertorTypeModifier] :: Properties -> String -> String
+ Database.MySQL.Hasqlator.Typed.Schema: [insertorTypeModifier] :: Properties -> TableInfo -> String
- Database.MySQL.Hasqlator.Typed.Schema: [tableNameModifier] :: Properties -> String -> String
+ Database.MySQL.Hasqlator.Typed.Schema: [tableNameModifier] :: Properties -> TableInfo -> String

Files

hasqlator-mysql.cabal view
@@ -1,5 +1,5 @@ Name:		hasqlator-mysql-Version: 	0.0.5+Version: 	0.0.6 Synopsis:	composable SQL generation Category: 	Database Copyright: 	Kristof Bastiaensen (2020)
src/Database/MySQL/Hasqlator/Typed/Schema.hs view
@@ -239,14 +239,14 @@           JsonColumn -> [t| Value |]  data Properties = Properties-  { fieldNameModifier :: String -> String-  , tableNameModifier :: String -> String+  { fieldNameModifier :: ColumnInfo -> String+  , tableNameModifier :: TableInfo -> String   , classNameModifier :: String -> String   , includeInsertor :: Bool   , includeSchema :: Bool-  , insertorTypeModifier :: String -> String-  , insertorNameModifier :: String -> String-  , insertorFieldModifier :: String -> String+  , insertorTypeModifier :: TableInfo -> String+  , insertorNameModifier :: TableInfo -> String+  , insertorFieldModifier :: ColumnInfo -> String   }  @@ -271,17 +271,25 @@  defaultProperties :: Properties defaultProperties = Properties-  { fieldNameModifier = \n ->-      downcase n <> (if downcase n `elem` reserved then "_" else mempty)-  , tableNameModifier = \n ->-      downcase n <> (if downcase n `elem` reserved then "_" else mempty) <> "_tbl"-  , classNameModifier = \n -> "Has_" <> n <> "_Field"+  { fieldNameModifier = \ColumnInfo{columnName} ->+      let n = Text.unpack columnName+      in downcase n <> (if downcase n `elem` reserved then "_" else mempty)+  , tableNameModifier = \TableInfo{tableName} ->+      let n = Text.unpack tableName+      in downcase n <>+         (if downcase n `elem` reserved then "_" else mempty) <> "_tbl"+  , classNameModifier = \n -> "Has_" <> n <> "_field"   , includeInsertor = True   , includeSchema = True-  , insertorTypeModifier = \n -> removeUnderscore (upcase n) <> "Fields"-  , insertorNameModifier = \n ->-      downcase (removeUnderscore n) <> "Insertor"-  , insertorFieldModifier = \n -> downcase n <> "_field"+  , insertorTypeModifier = \TableInfo{tableName} ->+      let n = Text.unpack tableName+      in removeUnderscore (upcase n) <> "Fields"+  , insertorNameModifier = \TableInfo{tableName} ->+      let n = Text.unpack tableName+      in downcase (removeUnderscore n) <> "Insertor"+  , insertorFieldModifier = \ColumnInfo{columnName} ->+      let n = Text.unpack columnName+      in downcase n <> "_field"   }     where reserved :: [String]           reserved = ["id", "class", "data", "type", "foreign", "import",@@ -305,7 +313,7 @@ makeField props dbName ci@ColumnInfo{columnName                                     ,columnNullable} =   sequence [ sigD-             (mkName $ fieldNameModifier props fieldName)+             (mkName $ fieldNameModifier props ci)              [t| T.Field                  $(litT $ strTyLit tableName)                  $(conT dbName)@@ -314,37 +322,37 @@                     else promotedT 'T.NotNull)                  $(columnTHType True ci)                |]-           , valD (varP $ mkName $ fieldNameModifier props fieldName)+           , valD (varP $ mkName $ fieldNameModifier props ci)              (normalB [e| T.Field                           $(litE $ stringL tableName)                           $(litE $ stringL fieldName)                         |])              []            ]-  where fieldName = Text.unpack columnName-        tableName = getColumnTableName props ci+  where tableName = getColumnTableName props ci+        fieldName = Text.unpack columnName          makeTable :: Properties -> Name -> TableInfo -> Q [Dec] makeTable Properties{tableNameModifier, includeSchema}           dbname-          TableInfo{tableSchema, tableName} =+          ti@TableInfo{tableName, tableSchema} =   sequence [ sigD-             (mkName $ tableNameModifier tableString)+             (mkName $ tableNameModifier ti)              [t| T.Table                  $(litT $ strTyLit tableString)                  $(conT dbname)                |]-           , valD (varP $ mkName $ tableNameModifier tableString)+           , valD (varP $ mkName $ tableNameModifier ti)              (normalB [e| T.Table-                          $(conE 'Nothing)+                          $(if includeSchema+                            then (appE (conE 'Just)+                                   (litE $ stringL $ Text.unpack tableSchema))+                            else conE 'Nothing)                           $(litE $ stringL tableString)                         |])              []            ]-  where tableString-          | includeSchema = Text.unpack tableSchema <> "." <>-                            Text.unpack tableName-          | otherwise = Text.unpack tableName+  where tableString = Text.unpack tableName             fieldClass :: Properties -> Name -> String -> Q Dec fieldClass props dbName columnName =@@ -366,13 +374,12 @@ fieldInstance props ci@ColumnInfo{columnName,                                   columnNullable} =   instanceD (pure [])-  [t| $(conT $ mkName $ classNameModifier props $ fieldNameModifier props $-        Text.unpack columnName)+  [t| $(conT $ mkName $ classNameModifier props $ fieldNameModifier props ci)       $(litT $ strTyLit tableName)       $(promotedT $ if columnNullable then 'T.Nullable else 'T.NotNull)       $(columnTHType True ci)       |]-  [valD (varP $ mkName $ fieldNameModifier props fieldName)+  [valD (varP $ mkName $ fieldNameModifier props ci)              (normalB [e| T.Field                           $(litE $ stringL tableName)                           $(litE $ stringL fieldName)@@ -390,9 +397,9 @@   Nothing   [recC (mkName typeName) $ map columnTypes $ tableColumns ti ]   []-  where typeName = insertorTypeModifier props $ getTableName props ti+  where typeName = insertorTypeModifier props ti         columnTypes ci =-          ( mkName $ insertorFieldModifier props $ Text.unpack $ columnName ci+          ( mkName $ insertorFieldModifier props ci           , Bang NoSourceUnpackedness NoSourceStrictness           ,           ) <$> columnTHType False ci@@ -412,18 +419,15 @@              []            ]   where -    insertorName = mkName $ insertorNameModifier props $ getTableName props ti-    insertorTypeName = mkName $ insertorTypeModifier props $-                       getTableName props ti +    insertorName = mkName $ insertorNameModifier props ti+    insertorTypeName = mkName $ insertorTypeModifier props ti      insertorField :: ColumnInfo -> Q Exp     insertorField ci = [e| $(sigE-                             (varE $ mkName $ insertorFieldModifier props $-                              Text.unpack $ columnName ci)+                             (varE $ mkName $ insertorFieldModifier props ci)                              [t| $(conT insertorTypeName) ->                                  $(columnTHType False ci)  |])                            `T.into`-                           $(varE $ mkName $ fieldNameModifier props $-                             Text.unpack $ columnName ci) |]+                           $(varE $ mkName $ fieldNameModifier props ci) |]   makeDBTypes :: Properties -> Name -> [TableInfo] -> Q [Dec]@@ -446,7 +450,7 @@       ]      getFieldName :: ColumnInfo -> String-    getFieldName ti = fieldNameModifier props $ Text.unpack $ columnName ti+    getFieldName ti = fieldNameModifier props ti      duplicateCols :: Set.Set String     duplicateCols = Set.fromList $ map fst $ filter ((> 1) . snd) $ Map.toList $