2015-01-21 28 views
8

Używam Persistent orm ze szkocką frameworkiem internetowym.Haskell Persistent: jak uzyskać encji z db przez klucz, jeśli mam klucz w zmiennej liczbowej?

Chcę uzyskać wartość z db przez id. Te id przychodzą do mnie z żądania GET

Istnieje funkcja "get", która pobiera zmienną "Key Entity" i zwraca "Maybe Entity".

używam następujący kod, aby uzyskać wartości z 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-} 

Są kod jest wyjątkowo brzydkie. Ale nie wiem jak to zrobić lepiej

Moje pytanie brzmi: jak uzyskać zmienną typu "Key Entity" bez wywoływania keyFromValues.

PS Przepraszam za mój słaby angielski

Odpowiedz

11

Można użyć toSqlKey do tego.

+0

Dziękuję za odpowiedź! –

+0

@ michael-snoyman: Co się stanie, jeśli klucz ma inny typ niż "Int64"? –

+0

Nie jestem właściwie zaznajomiony z bardziej elastycznym mechanizmem klucza głównego w trwałym, więc nie mogę doradzić, jak sobie z tym poradzić. –