groundhog-0.3.0.1: Type-safe datatype-database mapping library.

Safe HaskellNone

Database.Groundhog.Expression

Description

This module provides mechanism for flexible and typesafe usage of plain data values and fields. The expressions can used in conditions and right part of Update statement. Example:

 StringField ==. "abc" &&. NumberField >. (0 :: Int) ||. MaybeField ==. (Nothing :: Maybe String) ||. MaybeField ==. Just "def"

Note that polymorphic values like numbers or Nothing must have a type annotation

Synopsis

Documentation

class Expression db r a whereSource

Instances of this type can be converted to Expr. It is useful for uniform manipulation over fields and plain values

Methods

toExpr :: a -> UntypedExpr db rSource

Instances

PurePersistField a => Expression db r a 
(PersistEntity v, FieldLike (u (UniqueMarker v)) db r' a', ~ * r' (RestrictionHolder v (UniqueConstr (Key v (Unique u)))), IsUniqueKey (Key v (Unique u))) => Expression db r' (u (UniqueMarker v)) 
(PersistEntity v, Constructor c, PersistField (Key v BackendSpecific), FieldLike (AutoKeyField v c) db r' a') => Expression db r' (AutoKeyField v c) 
(PersistEntity v, Constructor c, PersistField a, ~ * (RestrictionHolder v c) r') => Expression db r' (SubField v c a) 
(PersistEntity v, Constructor c, PersistField a, ~ * (RestrictionHolder v c) r') => Expression db r' (Field v c a) 
(PersistField a, ~ * db' db, ~ * r' r) => Expression db' r' (Expr db r a) 

class Unifiable a b Source

Instances

(Normalize bk a (ak, r), Normalize ak b (bk, r)) => Unifiable a b 
Unifiable a a 

class (Expression db r a, Unifiable a a') => ExpressionOf db r a a' Source

Instances

(Expression db r a, Unifiable a a') => ExpressionOf db r a a' 

(=.) :: (FieldLike f db r a', Expression db r b, Unifiable f b) => f -> b -> Update db rSource

Update field

(&&.) :: Cond db r -> Cond db r -> Cond db rSource

Boolean "and" operator.

(||.) :: Cond db r -> Cond db r -> Cond db rSource

Boolean "or" operator.

(==.) :: (Expression db r a, Expression db r b, Unifiable a b) => a -> b -> Cond db rSource

(/=.) :: (Expression db r a, Expression db r b, Unifiable a b) => a -> b -> Cond db rSource

(<.) :: (Expression db r a, Expression db r b, Unifiable a b) => a -> b -> Cond db rSource

(<=.) :: (Expression db r a, Expression db r b, Unifiable a b) => a -> b -> Cond db rSource

(>.) :: (Expression db r a, Expression db r b, Unifiable a b) => a -> b -> Cond db rSource

(>=.) :: (Expression db r a, Expression db r b, Unifiable a b) => a -> b -> Cond db rSource