module Avers.Storage.Expressions where
import Prelude hiding (lookup)
import Data.Text (Text)
import Database.RethinkDB as R
primaryKeyField :: Text
primaryKeyField = "id"
primaryKeyFieldE :: Exp Text
primaryKeyFieldE = lift primaryKeyField
objectFieldE :: (IsDatum a) => Text -> Exp Object -> Exp a
objectFieldE field obj = GetField (lift field) obj
objectFieldEqE :: (ToDatum a) => Text -> a -> Exp Object -> Exp Bool
objectFieldEqE field value obj = Eq
(objectFieldE field obj :: Exp Datum)
(lift $ toDatum value)
primaryKeyEqE :: Text -> Exp Object -> Exp Bool
primaryKeyEqE = objectFieldEqE primaryKeyField
headE :: (IsSequence a, IsDatum r) => Exp a -> Exp r
headE = Nth 0