Haskell Blog Rewrite - Session 2 - 2007-07-06
- Create data types for models using record syntax for the fields.
- Create an automated method for generating SQL data
definition i.e. CREATE TABLE etc
- Do things properly -- write tests for this from the very beginning
- Learn how to use QuickTest, or other testing strategies, as soon
as I am in some position to know what to test.
- Tried to start with defining my 'Post' data type, and then use a
type class 'DBField' with instances for 'Int', 'String' etc that
would generate corresponding SQL definition. Of course this won't
work because 'Post' is a data type, and type class methods work only
on instances of data type (i.e. data types are not first class
values, unlike in Python, so I can't do something like the way
Django does it). An alternative is to have a script that parses the
models.hs file and generates SQL based on its content.
- Changed tack. I'm going to start with the database libraries, and
work from the kind of input they want, as that is likely to be a
constraint. I'm starting with HaskellDB and HSQL
- Needed to install libmysqlclient-dev to build HSQL-MySQL
- End of session -- got HaskellDB, HSQL-MySQL installed etc, but
didn't manage to get the HaskellDB tests working -- won't load my
drivers for some reason.
- Basically I scrapped my initial plan, and changed tack completely.
- Had another go at getting HSQL working, and succeeded this time,
with help from comments on my rant about lack of
success so far.
- Session over, about 1 hour.
Comments §
Actually both may be usefull at the same time, although with some effort I believe QuickCheck can do everything that a unit testing framework does and still be practical.