esqueleto-0.1: Bare bones, type-safe EDSL for SQL queries on persistent backends.

Safe HaskellSafe-Infered

Database.Esqueleto.Internal.Sql

Synopsis

Documentation

data SqlExpr a Source

An expression on the SQL backend.

Instances

Esqueleto SqlQuery SqlExpr SqlPersist 
PersistEntity a => SqlSelect (SqlExpr (Maybe (Entity a))) (Maybe (Entity a)) 
PersistField a => SqlSelect (SqlExpr (Single a)) (Single a) 
PersistEntity a => SqlSelect (SqlExpr (Entity a)) (Entity a) 

select :: (SqlSelect a r, MonadLogger m, MonadResourceBase m) => SqlQuery a -> SqlPersist m [r]Source

Execute an esqueleto SELECT query inside persistent's SqlPersist monad and return a list of rows.

selectSource :: (SqlSelect a r, MonadLogger m, MonadResourceBase m) => SqlQuery a -> SqlPersist m (Source (ResourceT (SqlPersist m)) r)Source

Execute an esqueleto SELECT query inside persistent's SqlPersist monad and return a Source of rows.

selectDistinct :: (SqlSelect a r, MonadLogger m, MonadResourceBase m) => SqlQuery a -> SqlPersist m [r]Source

Execute an esqueleto SELECT DISTINCT query inside persistent's SqlPersist monad and return a list of rows.

selectDistinctSource :: (SqlSelect a r, MonadLogger m, MonadResourceBase m) => SqlQuery a -> SqlPersist m (Source (ResourceT (SqlPersist m)) r)Source

Execute an esqueleto SELECT DISTINCT query inside persistent's SqlPersist monad and return a Source of rows.

rawSelectSource :: (SqlSelect a r, MonadLogger m, MonadResourceBase m) => Mode -> SqlQuery a -> SqlPersist m (Source (ResourceT (SqlPersist m)) r)Source

(Internal) Execute an esqueleto SELECT SqlQuery inside persistent's SqlPersist monad.

rawExecute :: (MonadLogger m, MonadResourceBase m) => Mode -> SqlQuery () -> SqlPersist m ()Source

(Internal) Execute an esqueleto statement inside persistent's SqlPersist monad.

delete :: (MonadLogger m, MonadResourceBase m) => SqlQuery () -> SqlPersist m ()Source

Execute an esqueleto DELETE query inside persistent's SqlPersist monad. Note that currently there are no type checks for statements that should not appear on a DELETE query.

Example of usage:

 delete $
 from $ appointment ->
 where_ (appointment ^. AppointmentDate <. val now)

update :: (MonadLogger m, MonadResourceBase m, PersistEntity val, PersistEntityBackend val ~ SqlPersist) => (SqlExpr (Entity val) -> SqlQuery ()) -> SqlPersist m ()Source

Execute an esqueleto UPDATE query inside persistent's SqlPersist monad. Note that currently there are no type checks for statements that should not appear on a UPDATE query.

Example of usage:

 update $ p -> do
 set p [ PersonAge =. just (val thisYear) -. p ^. PersonBorn ]
 where_ $ isNull (p ^. PersonAge)

toRawSql :: SqlSelect a r => Mode -> Escape -> SqlQuery a -> (Builder, [PersistValue])Source

Pretty prints a SqlQuery into a SQL query.