module Database.Persist.Relational.Config
( NameConfig(..)
, defaultNameConfig
) where
import Data.Char
data NameConfig = NameConfig
{ tableVarNameFromTableTypeName :: String -> String
, insertVarNameFromTableTypeName :: String -> String
, insertQueryVarNameFromTableTypeName :: String -> String
, columnNameToLabelName :: String -> String
}
defaultNameConfig :: NameConfig
defaultNameConfig = NameConfig
{ tableVarNameFromTableTypeName = toLowerCamel . (++ "_table")
, insertVarNameFromTableTypeName = toLowerCamel . ("insert_" ++)
, insertQueryVarNameFromTableTypeName = toLowerCamel . ("insertQuery_" ++)
, columnNameToLabelName = toLowerCamel
}
toLowerCamel :: String -> String
toLowerCamel [] = []
toLowerCamel (x:xs) = toLower x : go xs
where
go [] = []
go ('_':c:cs) = toUpper c : go cs
go (c:cs) = c : go cs