postgresql-query-3.5.0: Sql interpolating quasiquote plus some kind of primitive ORM using it

Safe HaskellNone
LanguageHaskell2010

Database.PostgreSQL.Query.Types

Contents

Synopsis

Query execution

class MonadBase IO m => HasPostgres m where Source #

Instances of this typeclass can acquire connection and pass it to computation. It can be reader of pool of connections or just reader of connection

Minimal complete definition

withPGConnection

Methods

withPGConnection :: (Connection -> m a) -> m a Source #

Instances
HasPostgres m => HasPostgres (MaybeT m) Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Methods

withPGConnection :: (Connection -> MaybeT m a) -> MaybeT m a Source #

MonadBase IO m => HasPostgres (PgMonadT m) Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

(HasPostgres m, Monoid w) => HasPostgres (WriterT w m) Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Methods

withPGConnection :: (Connection -> WriterT w m a) -> WriterT w m a Source #

(HasPostgres m, Monoid w) => HasPostgres (WriterT w m) Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Methods

withPGConnection :: (Connection -> WriterT w m a) -> WriterT w m a Source #

HasPostgres m => HasPostgres (StateT s m) Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Methods

withPGConnection :: (Connection -> StateT s m a) -> StateT s m a Source #

HasPostgres m => HasPostgres (StateT s m) Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Methods

withPGConnection :: (Connection -> StateT s m a) -> StateT s m a Source #

HasPostgres m => HasPostgres (ExceptT e m) Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Methods

withPGConnection :: (Connection -> ExceptT e m a) -> ExceptT e m a Source #

(MonadBase IO m, MonadBaseControl IO m, HGettable els (Pool Connection)) => HasPostgres (HReaderT els m) Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Methods

withPGConnection :: (Connection -> HReaderT els m a) -> HReaderT els m a Source #

HasPostgres m => HasPostgres (IdentityT m) Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

HasPostgres m => HasPostgres (ReaderT r m) Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Methods

withPGConnection :: (Connection -> ReaderT r m a) -> ReaderT r m a Source #

HasPostgres m => HasPostgres (ContT r m) Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Methods

withPGConnection :: (Connection -> ContT r m a) -> ContT r m a Source #

class TransactionSafe (m :: * -> *) Source #

Empty typeclass signing monad in which transaction is safe. i.e. PgMonadT have this instance, but some other monad giving connection from e.g. connection pool is not.

newtype PgMonadT m a Source #

Reader of connection. Has instance of HasPostgres. So if you have a connection you can run queries in this monad using runPgMonadT. Or you can use this transformer to run sequence of queries using same connection with launchPG.

Constructors

PgMonadT 
Instances
MonadTrans PgMonadT Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Methods

lift :: Monad m => m a -> PgMonadT m a #

MonadTransControl PgMonadT Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Associated Types

type StT PgMonadT a :: * #

Methods

liftWith :: Monad m => (Run PgMonadT -> m a) -> PgMonadT m a #

restoreT :: Monad m => m (StT PgMonadT a) -> PgMonadT m a #

MonadBase b m => MonadBase b (PgMonadT m) Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Methods

liftBase :: b α -> PgMonadT m α #

MonadBaseControl b m => MonadBaseControl b (PgMonadT m) Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Associated Types

type StM (PgMonadT m) a :: * #

Methods

liftBaseWith :: (RunInBase (PgMonadT m) b -> b a) -> PgMonadT m a #

restoreM :: StM (PgMonadT m) a -> PgMonadT m a #

MonadWriter w m => MonadWriter w (PgMonadT m) Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Methods

writer :: (a, w) -> PgMonadT m a #

tell :: w -> PgMonadT m () #

listen :: PgMonadT m a -> PgMonadT m (a, w) #

pass :: PgMonadT m (a, w -> w) -> PgMonadT m a #

MonadState s m => MonadState s (PgMonadT m) Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Methods

get :: PgMonadT m s #

put :: s -> PgMonadT m () #

state :: (s -> (a, s)) -> PgMonadT m a #

MonadReader r m => MonadReader r (PgMonadT m) Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Methods

ask :: PgMonadT m r #

local :: (r -> r) -> PgMonadT m a -> PgMonadT m a #

reader :: (r -> a) -> PgMonadT m a #

MonadError e m => MonadError e (PgMonadT m) Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Methods

throwError :: e -> PgMonadT m a #

catchError :: PgMonadT m a -> (e -> PgMonadT m a) -> PgMonadT m a #

Monad m => Monad (PgMonadT m) Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Methods

(>>=) :: PgMonadT m a -> (a -> PgMonadT m b) -> PgMonadT m b #

(>>) :: PgMonadT m a -> PgMonadT m b -> PgMonadT m b #

return :: a -> PgMonadT m a #

fail :: String -> PgMonadT m a #

Functor m => Functor (PgMonadT m) Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Methods

fmap :: (a -> b) -> PgMonadT m a -> PgMonadT m b #

(<$) :: a -> PgMonadT m b -> PgMonadT m a #

MonadFix m => MonadFix (PgMonadT m) Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Methods

mfix :: (a -> PgMonadT m a) -> PgMonadT m a #

Applicative m => Applicative (PgMonadT m) Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Methods

pure :: a -> PgMonadT m a #

(<*>) :: PgMonadT m (a -> b) -> PgMonadT m a -> PgMonadT m b #

liftA2 :: (a -> b -> c) -> PgMonadT m a -> PgMonadT m b -> PgMonadT m c #

(*>) :: PgMonadT m a -> PgMonadT m b -> PgMonadT m b #

(<*) :: PgMonadT m a -> PgMonadT m b -> PgMonadT m a #

Alternative m => Alternative (PgMonadT m) Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Methods

empty :: PgMonadT m a #

(<|>) :: PgMonadT m a -> PgMonadT m a -> PgMonadT m a #

some :: PgMonadT m a -> PgMonadT m [a] #

many :: PgMonadT m a -> PgMonadT m [a] #

MonadPlus m => MonadPlus (PgMonadT m) Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Methods

mzero :: PgMonadT m a #

mplus :: PgMonadT m a -> PgMonadT m a -> PgMonadT m a #

MonadIO m => MonadIO (PgMonadT m) Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Methods

liftIO :: IO a -> PgMonadT m a #

MonadThrow m => MonadThrow (PgMonadT m) Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Methods

throwM :: Exception e => e -> PgMonadT m a #

MonadCatch m => MonadCatch (PgMonadT m) Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Methods

catch :: Exception e => PgMonadT m a -> (e -> PgMonadT m a) -> PgMonadT m a #

MonadMask m => MonadMask (PgMonadT m) Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Methods

mask :: ((forall a. PgMonadT m a -> PgMonadT m a) -> PgMonadT m b) -> PgMonadT m b #

uninterruptibleMask :: ((forall a. PgMonadT m a -> PgMonadT m a) -> PgMonadT m b) -> PgMonadT m b #

generalBracket :: PgMonadT m a -> (a -> ExitCase b -> PgMonadT m c) -> (a -> PgMonadT m b) -> PgMonadT m (b, c) #

MonadHReader m => MonadHReader (PgMonadT m) Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Associated Types

type MHRElements (PgMonadT m) :: [*] #

MonadLogger m => MonadLogger (PgMonadT m) Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Methods

monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> PgMonadT m () #

MonadCont m => MonadCont (PgMonadT m) Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Methods

callCC :: ((a -> PgMonadT m b) -> PgMonadT m a) -> PgMonadT m a #

TransactionSafe (PgMonadT m) Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

MonadBase IO m => HasPostgres (PgMonadT m) Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

type StT PgMonadT a Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

type StT PgMonadT a = StT (ReaderT Connection :: (* -> *) -> * -> *) a
type MHRElements (PgMonadT m) Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

type StM (PgMonadT m) a Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

type StM (PgMonadT m) a = StM (ReaderT Connection m) a

launchPG :: HasPostgres m => PgMonadT m a -> m a Source #

If your monad have instance of HasPostgres you maybe dont need this function, unless your instance use withPGPool which acquires connection from pool for each query. If you want to run sequence of queries using same connection you need this function

Auxiliary types

data Qp Source #

Special constructor to perform old-style query interpolation

Constructors

ToRow row => Qp Query row 
Instances
ToSqlBuilder Qp Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

newtype InetText Source #

type to put and get from db inet and cidr typed postgresql fields. This should be in postgresql-simple in fact.

Constructors

InetText 

Fields

Instances
Eq InetText Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Ord InetText Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Read InetText Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Show InetText Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

IsString InetText Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Semigroup InetText Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Monoid InetText Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

FromField InetText Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

ToField InetText Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Methods

toField :: InetText -> Action #

newtype FN Source #

Dot-separated field name. Each element in nested list will be properly quoted and separated by dot. It also have instance of ToSqlBuilder and IsString so you can:

>>> let a = "hello" :: FN
>>> a
FN ["hello"]
>>> let b = "user.name" :: FN
>>> b
FN ["user","name"]
>>> let n = "u.name" :: FN
>>> runSqlBuilder c $ toSqlBuilder n
"\"u\".\"name\""
>>> ("user" <> "name") :: FN
FN ["user","name"]
>>> let a = "name" :: FN
>>> let b = "email" :: FN
>>> runSqlBuilder c [sqlExp|^{"u" <> a} = 'name', ^{"e" <> b} = 'email'|]
"\"u\".\"name\" = 'name', \"e\".\"email\" = 'email'"

Constructors

FN [Text] 
Instances
Eq FN Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Methods

(==) :: FN -> FN -> Bool #

(/=) :: FN -> FN -> Bool #

Ord FN Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Methods

compare :: FN -> FN -> Ordering #

(<) :: FN -> FN -> Bool #

(<=) :: FN -> FN -> Bool #

(>) :: FN -> FN -> Bool #

(>=) :: FN -> FN -> Bool #

max :: FN -> FN -> FN #

min :: FN -> FN -> FN #

Show FN Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Methods

showsPrec :: Int -> FN -> ShowS #

show :: FN -> String #

showList :: [FN] -> ShowS #

IsString FN Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Methods

fromString :: String -> FN #

Generic FN Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Associated Types

type Rep FN :: * -> * #

Methods

from :: FN -> Rep FN x #

to :: Rep FN x -> FN #

Semigroup FN Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Methods

(<>) :: FN -> FN -> FN #

sconcat :: NonEmpty FN -> FN #

stimes :: Integral b => b -> FN -> FN #

Monoid FN Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Methods

mempty :: FN #

mappend :: FN -> FN -> FN #

mconcat :: [FN] -> FN #

Lift FN Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Methods

lift :: FN -> Q Exp #

ToSqlBuilder FN Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

type Rep FN Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

type Rep FN = D1 (MetaData "FN" "Database.PostgreSQL.Query.Types" "postgresql-query-3.5.0-1AbagAFOSyg4vQytTFD1c" True) (C1 (MetaCons "FN" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [Text])))

textFN :: Text -> FN Source #

Single field to FN

>>> textFN "hello"
FN ["hello"]
>>> textFN "user.name"
FN ["user.name"]

Note that it does not split string to parts by point like instance of IsString does

newtype MarkedRow Source #

Marked row is list of pairs of field name and some sql expression. Used to generate queries like:

name = name AND size = 10 AND length = 20

or

UPDATE tbl SET name = name, size = 10, lenght = 20

Constructors

MR 

Fields

Instances
Generic MarkedRow Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Associated Types

type Rep MarkedRow :: * -> * #

Semigroup MarkedRow Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

Monoid MarkedRow Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

ToMarkedRow MarkedRow Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

type Rep MarkedRow Source # 
Instance details

Defined in Database.PostgreSQL.Query.Types

type Rep MarkedRow = D1 (MetaData "MarkedRow" "Database.PostgreSQL.Query.Types" "postgresql-query-3.5.0-1AbagAFOSyg4vQytTFD1c" True) (C1 (MetaCons "MR" PrefixI True) (S1 (MetaSel (Just "unMR") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [(FN, SqlBuilder)])))

mrToBuilder Source #

Arguments

:: SqlBuilder

Builder to intercalate with

-> MarkedRow 
-> SqlBuilder 

Turns marked row to query intercalating it with other builder

>>> runSqlBuilder c $ mrToBuilder "AND" $ MR [("name", mkValue "petr"), ("email", mkValue "foo@bar.com")]
" \"name\" = 'petr' AND \"email\" = 'foo@bar.com' "

class ToMarkedRow a where Source #

Minimal complete definition

toMarkedRow

Methods

toMarkedRow :: a -> MarkedRow Source #

generate list of pairs (field name, field value)