Rename keyE to valJ and fix implementation.

As Felipe points out in the PR comments, the implementation can be
simplified to "val . unValue" but the type signature on the function
still prevents anything non-sensical happening.

See: https://github.com/prowdsponsor/esqueleto/pull/69
This commit is contained in:
Erik de Castro Lopo 2014-07-08 08:44:02 +10:00
parent 0b830771ea
commit 41698518c9

View File

@ -81,7 +81,7 @@ module Database.Esqueleto
-- * Helpers -- * Helpers
, valkey , valkey
, keyE , valJ
-- * Re-exports -- * Re-exports
-- $reexports -- $reexports
@ -377,14 +377,16 @@ valkey :: Esqueleto query expr backend =>
valkey = val . Key . PersistInt64 valkey = val . Key . PersistInt64
-- | Given a value, lift the Key for that value into the query expression. -- | @valJ@ is like @val@ but for something that is already a @Value@. The use
keyE :: Esqueleto query expr backend => -- case it was written for was, given a @Value@ lift the @Key@ for that @Value@
-- into the query expression in a type safe way. However, the implementation is
-- more generic than that so we call it @valJ@.
-- Its important to note that the input entity and the output entity are
-- constrained to be the same by the type signature on the function.
-- (<https://github.com/prowdsponsor/esqueleto/pull/69>)
valJ :: Esqueleto query expr backend =>
Value (Key entity) -> expr (Value (Key entity)) Value (Key entity) -> expr (Value (Key entity))
keyE v = valJ = val . unValue
valkey $
case (unKey . unValue) v of
PersistInt64 x -> x
_ -> error "Esqueleto.keyE: Impossible!"
---------------------------------------------------------------------- ----------------------------------------------------------------------