[Haskell-cafe] ORM for haskell?
Chris Eidhof
chris at eidhof.nl
Wed Jul 1 11:30:44 EDT 2009
Hey Marc,
On 30 jun 2009, at 19:52, Marc Weber wrote:
> Is there anyone interested in helping building a library which
> a) let's you define kind of model of you data
> b) let's you store you model in any backend (maybe a relational
> database)
> c) does static checking of your queries at compilation time?
>
> [...]
> Maybe this does already exist and I've missed it?
I've something working that sort of does this. You define your model
in the following way:
data User = User {name :: String, password :: String, age :: Int,
post :: BelongsTo Post}
data Post = Post {title :: String, body :: String}
Then there's some boilerplate code (that ultimately will be generated
by TH), and from that moment on you can do things like this:
test = do
conn <- connectSqlite3 "example.sqlite3"
runDB conn $ do
user <- fromJust <$> find typeUser 1
user' <- fillBelongsTo user relPost
return (post user')
By default, no relations will be fetched, but by doing the
fillBelongsTo the user will be updated. I currently have support for
new, update and find. All of this code is very alpha, and only works
using HDBC and Sqlite3, but still.
You can find and fork my code on http://github.com/chriseidhof/
generics. I'll be happy to answer any questions about the code or the
ideas behind it.
-chris
More information about the Haskell-Cafe
mailing list