]> gitweb.michael.orlitzky.com - dead/htsn-import.git/blob - src/TSN/Codegen.hs
Add a test for the correct field names in TSN.Xml.News.
[dead/htsn-import.git] / src / TSN / Codegen.hs
1 module TSN.Codegen (
2 tsn_codegen_config,
3 tsn_db_field_namer -- Used in a TSN.XML.News test.
4 )
5 where
6
7 import Data.List.Utils ( join, split )
8 import Database.Groundhog.TH (
9 CodegenConfig ( namingStyle ),
10 NamingStyle ( mkDbFieldName ),
11 defaultCodegenConfig )
12
13 default_ns :: NamingStyle
14 default_ns = namingStyle defaultCodegenConfig
15
16 -- | A database field name creator. It takes the field name (from a
17 -- record type) and drops the first component determined by
18 -- underscores. So, foo_bar_baz would get mapped to bar_baz in the
19 -- database.
20 tsn_db_field_namer :: String -> String -> Int -> String -> Int -> String
21 tsn_db_field_namer _ _ _ fieldname _ =
22 (join "_") . tail . (split "_") $ fieldname
23
24 tsn_naming_style :: NamingStyle
25 tsn_naming_style = default_ns { mkDbFieldName = tsn_db_field_namer }
26
27 tsn_codegen_config :: CodegenConfig
28 tsn_codegen_config =
29 defaultCodegenConfig { namingStyle = tsn_naming_style }