2015-01-21 11 views
8

Ich benutze Persistent Orm mit scotty Web-Framework.Haskell Persistent: wie bekomme ich die Entity von db nach key wenn ich key in integer variable habe?

Ich möchte Wert von db von ID erhalten. Diese ID kommt von GET Anfrage

Es gibt "Get" -Funktion, die "Key Entity" Variable und gibt "Maybe Entity" zurück.

Ich verwende folgenden Code Wert von bekommen db

k <- keyFromValues $ [(PersistInt64 myOwnIntVarFromRequest)] 
case k of 
    Left _ -> {-some processing-} 
    Right x -> do 
    t <- liftIO . runDb $ get (x::Key Post) --Post is one of my models 
    case t of 
     Nothing -> {-processing-} 
     Just x -> {-processing-} 

Dieser Code extrem hässlich. Aber ich weiß nicht, wie man es besser macht

Also meine Frage ist, wie erhalten Variable des Typs "Key Entity" ohne KeyFromValues ​​aufrufen. Leider

PS für mein schlechtes Englisch

Antwort

11

können Sie toSqlKey dafür.

+0

Vielen Dank für die Antwort! –

+0

@ michael-snoyman: Was ist, wenn der Schlüssel einen anderen Typ als 'Int64' hat? –

+0

Ich bin eigentlich nicht vertraut mit dem flexibleren Primärschlüssel-Mechanismus in persistent, so kann ich nicht beraten, wie mit diesem Fall umzugehen. –