Suppose that I have the following (PostgreSQL) table definition:
CREATE TABLE books (
id serial NOT NULL,
title character varying NOT NULL,
PRIMARY KEY (id)
);
And the following record definition:
data Book =
{ id :: Int
, title :: String
}
What is a basic example of an "unmap" function to query all books in the database, allBooks :: Database -> IO [Book]
?
It turns out that I was going about this the wrong way.
After stumbling upon Mats Rauhala's exceedingly helpful blog post titled Example on using HaskellDB, I was able to write a test project to read the records of the
books
table.I first needed to define the "layout", which, using haskelldb-th, is not too bad:
From there, the
allBooks
function is:where
B
is the qualified name of imported moduleTables.Books
.allBooks
has the type:To print out each title, I used:
EDIT: I created a git repository containing the complete sources of this example: dtrebbien/haskelldb-example