[Haskell-cafe] Groundhog - Given entity, how to retrieve autokey value?

lykahb at gmail.com lykahb at gmail.com
Tue Apr 1 03:07:20 UTC 2014

Hi Ross,

The primary key if it is generated by a database is not part of the entity. 
However, you can store it in your entity if you supply it yourself. It is a 
good approach if your entity has a natural primary key (like username). 
Only default key can be auto-incremented. Here is more detailed description 
of how keys work in Groundhog 

Also you may want to use project instead of select. For example, "project 
(AutoKeyField, MyConstructor) $ MyField ==. myValue" would return id and 
the entity. 

Thank you,
Boris Lykah

On Sunday, March 30, 2014 12:41:40 AM UTC-4, Ross Pokorny wrote:
> Hello,
> I am trying to build a RESTful web application using Groundhog for 
> persistence.  In order to generate URLs for my entities (e.g. for the 
> Location HTTP header), I need a way, given that I have an entity, to obtain 
> its id (its AutoKey).  From what I've gathered so far, in normal Groundhog 
> usage, the primary key is not part of the actual entity datatype.  The only 
> place where I've seen it returned is from the 'insert' functions in 
> Database.Groundhog.  I need the id in cases where I have retrieved an 
> already-existing entity using 'select', but I cannot find a way to obtain 
> it.
> I gather that this might not be possible with the current API, and that 
> instead, I may need to explicitly define a field on the entity type to 
> store the id instead of using the auto-generated field that Groundhog 
> normally provides.  In that case, my question is how do I set up that field 
> to be an auto-incrementing key, and not simply a value with a unique 
> constraint.  Also, would Groundhog recognize that field as the AutoKey, and 
> would it return it from 'insert' calls?
> Thanks,
> Ross Pokorny
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20140331/ad54ad4e/attachment.html>

More information about the Haskell-Cafe mailing list