Persistent object store and querying library for Haskell
Haskell C++
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Gruze is a persistent object store and querying library written in Haskell.
It is intended for use with applications that require flexible and
over-rideable data models (for example a web application with a plugin
architecture that allows adding new features and data to existing

This is currently beta quality code tested with Sqlite3, MySQL (both native and
ODBC drivers) and PostgreSQL

An example model (blogging with multiple user roles) can be found in gruzeTest.

An overview document (PDF format) can be found here:

This overview is intended for developers with only basic Haskell experience
but parts of it (especially the section on the querying functions) may be of
interest to more experienced Haskell developers as well.

To try this out:

a. cd to gruzeStore and type

cabal install

b. select and compile the appropriate database driver from the four supplied.

c. create a database and run the appropriate schema in gruzeStore/schema to add
the required tables

d. copy the data directory somewhere and make it writable by Haskell

e. cd to gruzeTest and edit the config values near the top of Main.hs
to match your own configuration. There are four sample config settings, with
the simplest (Sqlite3) set as the default.

If you are using something other than Sqlite3, you will also need to:

i. Edit the getHandle function call to pass the appropriate config settings.

ii. Change the Main.hs import to the appropriate driver.

iii. Change the reference in gruzeTest.cabal to the appropriate driver.

f. type

cabal install

in gruzeTest

g. find the gruzeTest executable in gruzeTest/dist/build/gruzeTest and run
it from a shell

h. read gruzeTest/Main.hs for more information