Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- data Table (table :: Symbol) database = Table (Maybe Text) Text
- data Field (table :: Symbol) database (nullable :: Nullable) a = Field Text Text
- newtype Alias table database (joinType :: JoinType) = Alias {
- getTableAlias :: forall fieldNull a. Field table database fieldNull a -> Expression (JoinNullable joinType fieldNull) a
- (@@) :: Alias table database (joinType :: JoinType) -> Field table database fieldNull a -> Expression (JoinNullable joinType fieldNull) a
- data Nullable
- data JoinType
- data Query database a
- untypeQuery :: Query database (Selector a) -> Query a
- executeQuery :: MySQLConn -> Query database (Selector a) -> IO [a]
- data Selector a
- sel :: FromSql a => Expression 'NotNull a -> Selector a
- selMaybe :: FromSql (Maybe a) => Expression 'Nullable a -> Selector (Maybe a)
- data Expression (nullable :: Nullable) a
- data SomeExpression
- someExpr :: Expression nullable a -> SomeExpression
- type Operator a b c = forall nullable. Expression nullable a -> Expression nullable b -> Expression nullable c
- arg :: ToSql a => a -> Expression nullable a
- argMaybe :: ToSql a => Maybe a -> Expression 'Nullable a
- isNull :: Expression nullable a -> Expression 'NotNull Bool
- isNotNull :: Expression 'Nullable a -> Expression 'NotNull Bool
- nullable :: Expression nullable a -> Expression 'Nullable a
- notNull :: Expression 'NotNull a -> Expression 'NotNull a
- orNull :: Expression nullable a -> (Expression 'NotNull a -> Expression 'NotNull Bool) -> Expression 'NotNull Bool
- unlessNull :: Expression nullable a -> (Expression 'NotNull a -> Expression 'NotNull Bool) -> Expression 'NotNull Bool
- cast :: Castable a => Expression nullable b -> Expression nullable a
- unsafeCast :: Expression nullable a -> Expression nullable b
- op :: (QueryBuilder -> QueryBuilder -> QueryBuilder) -> Operator a b c
- fun1 :: (QueryBuilder -> QueryBuilder) -> Expression nullable a -> Expression nullable b
- fun2 :: (QueryBuilder -> QueryBuilder -> QueryBuilder) -> Expression nullable a -> Expression nullable b -> Expression nullable c
- fun3 :: (QueryBuilder -> QueryBuilder -> QueryBuilder -> QueryBuilder) -> Expression nullable a -> Expression nullable b -> Expression nullable c -> Expression nullable d
- (=.) :: ToSql a => Operator a a Bool
- (/=.) :: ToSql a => Operator a a Bool
- (>.) :: ToSql a => Operator a a Bool
- (<.) :: ToSql a => Operator a a Bool
- (>=.) :: ToSql a => Operator a a Bool
- (<=.) :: ToSql a => Operator a a Bool
- (&&.) :: Operator Bool Bool Bool
- (||.) :: Operator Bool Bool Bool
- substr :: Expression nullable Text -> Expression nullable Int -> Expression nullable Int -> Expression nullable Text
- true_ :: Expression nullable Bool
- false_ :: Expression nullable Bool
- in_ :: Expression nullable a -> [Expression nullable a] -> Expression nullable Bool
- notIn_ :: Expression nullable a -> [Expression nullable a] -> Expression nullable Bool
- from :: Table table database -> Query database (Alias table database 'InnerJoined)
- fromSubQuery :: (Generic inExprs, Generic outExprs, SubQueryExpr 'LeftJoined (Rep inExprs ()) (Rep outExprs ())) => Query database inExprs -> Query database outExprs
- innerJoin :: Table table database -> (Alias table database 'InnerJoined -> Expression nullable Bool) -> Query database (Alias table database 'InnerJoined)
- leftJoin :: Table table database -> (Alias table database 'LeftJoined -> Expression nullable Bool) -> Query database (Alias table database 'LeftJoined)
- joinSubQuery :: (Generic inExprs, Generic outExprs, SubQueryExpr 'InnerJoined (Rep inExprs ()) (Rep outExprs ())) => Query database inExprs -> (outExprs -> Expression nullable Bool) -> Query database outExprs
- leftJoinSubQuery :: (Generic inExprs, Generic outExprs, SubQueryExpr 'LeftJoined (Rep inExprs ()) (Rep outExprs ())) => Query database inExprs -> (outExprs -> Expression nullable Bool) -> Query database outExprs
- where_ :: Expression 'NotNull Bool -> Query database ()
- groupBy_ :: [SomeExpression] -> Query database ()
- having :: Expression nullable Bool -> Query database ()
- orderBy :: [QueryOrdering] -> Query database ()
- limit :: Int -> Query database ()
- limitOffset :: Int -> Int -> Query database ()
- data Insertor (table :: Symbol) database a
- insertValues :: Table table database -> Insertor table database a -> [a] -> Command
- insertUpdateValues :: Table table database -> Insertor table database a -> (Alias table database 'InnerJoined -> Alias table database 'InnerJoined -> [Updator table database]) -> [a] -> Command
- insertSelect :: Table table database -> Query database [Into database table] -> Command
- insertData :: (Generic a, Generic b, InsertGeneric tbl db (Rep a ()) (Rep b ())) => a -> Insertor tbl db b
- skipInsert :: Insertor tbl db a
- into :: (a -> Expression nullable b) -> Field table database nullable fieldType -> Insertor table database a
- lensInto :: ToSql b => Getter a b -> Field table database 'NotNull fieldType -> Insertor table database a
- maybeLensInto :: ToSql b => Getter a (Maybe b) -> Field table database 'Nullable fieldType -> Insertor table database a
- opticInto :: (ToSql b, Is k A_Getter) => Optic' k is a b -> Field table database 'NotNull fieldType -> Insertor table database a
- maybeOpticInto :: (ToSql b, Is k A_Getter) => Optic' k is a (Maybe b) -> Field table database 'Nullable fieldType -> Insertor table database a
- insertOne :: ToSql a => Field table database 'NotNull fieldType -> Insertor table database a
- exprInto :: Expression nullable a -> Field table database nullable a -> Into database table
- data Into database (table :: Symbol)
- data Updator table database = forall nullable a. (Field table database nullable a) := (Expression nullable a)
- update :: Table table database -> (Alias table database 'InnerJoined -> Query database [Updator table database]) -> Command
- type Getter s a = (a -> Const a a) -> s -> Const a s
- class ToSql a
- class FromSql a
- subQueryExpr :: Query database (Expression nullable a) -> Expression nullable a
- executeCommand :: MySQLConn -> Command -> IO OK
- data Command
Database Types
newtype Alias table database (joinType :: JoinType) Source #
An table alias that can be used inside the Query. The function inside the newtype can also be applied directly to create an expression from a field.
Alias | |
|
(@@) :: Alias table database (joinType :: JoinType) -> Field table database fieldNull a -> Expression (JoinNullable joinType fieldNull) a infixl 9 Source #
Create an expression from an aliased table and a field.
Querying
data Query database a Source #
Instances
Monad (Query database) Source # | |
Functor (Query database) Source # | |
Applicative (Query database) Source # | |
Defined in Database.MySQL.Hasqlator.Typed pure :: a -> Query database a # (<*>) :: Query database (a -> b) -> Query database a -> Query database b # liftA2 :: (a -> b -> c) -> Query database a -> Query database b -> Query database c # (*>) :: Query database a -> Query database b -> Query database b # (<*) :: Query database a -> Query database b -> Query database a # |
Selectors
selMaybe :: FromSql (Maybe a) => Expression 'Nullable a -> Selector (Maybe a) Source #
make a selector from a column that can be null
Expressions
data Expression (nullable :: Nullable) a Source #
Instances
data SomeExpression Source #
An expression of any type
someExpr :: Expression nullable a -> SomeExpression Source #
Remove types of an expression
type Operator a b c = forall nullable. Expression nullable a -> Expression nullable b -> Expression nullable c Source #
arg :: ToSql a => a -> Expression nullable a Source #
pass an argument
isNull :: Expression nullable a -> Expression 'NotNull Bool Source #
isNotNull :: Expression 'Nullable a -> Expression 'NotNull Bool Source #
nullable :: Expression nullable a -> Expression 'Nullable a Source #
make expression nullable
notNull :: Expression 'NotNull a -> Expression 'NotNull a Source #
ensure expression is not null
orNull :: Expression nullable a -> (Expression 'NotNull a -> Expression 'NotNull Bool) -> Expression 'NotNull Bool Source #
Return a true expression if the given expression is NULL (using the IS NULL sql test), or pass the expression (coerced to 'NotNull) to the given test.
unlessNull :: Expression nullable a -> (Expression 'NotNull a -> Expression 'NotNull Bool) -> Expression 'NotNull Bool Source #
Perform test if given expression is not NULL
cast :: Castable a => Expression nullable b -> Expression nullable a Source #
Safe cast. This uses the SQL CAST function to convert safely from one type to another.
unsafeCast :: Expression nullable a -> Expression nullable b Source #
Cast the return type of an expression to any other type, without changing the query. Since this library adds static typing on top of SQL, you may sometimes want to use this to get back the lenient behaviour of SQL. This opens up more possibilies for runtime errors, so it's up to the programmer to ensure type correctness.
op :: (QueryBuilder -> QueryBuilder -> QueryBuilder) -> Operator a b c Source #
create an operator
fun1 :: (QueryBuilder -> QueryBuilder) -> Expression nullable a -> Expression nullable b Source #
fun2 :: (QueryBuilder -> QueryBuilder -> QueryBuilder) -> Expression nullable a -> Expression nullable b -> Expression nullable c Source #
fun3 :: (QueryBuilder -> QueryBuilder -> QueryBuilder -> QueryBuilder) -> Expression nullable a -> Expression nullable b -> Expression nullable c -> Expression nullable d Source #
substr :: Expression nullable Text -> Expression nullable Int -> Expression nullable Int -> Expression nullable Text Source #
true_ :: Expression nullable Bool Source #
false_ :: Expression nullable Bool Source #
in_ :: Expression nullable a -> [Expression nullable a] -> Expression nullable Bool Source #
notIn_ :: Expression nullable a -> [Expression nullable a] -> Expression nullable Bool Source #
Clauses
fromSubQuery :: (Generic inExprs, Generic outExprs, SubQueryExpr 'LeftJoined (Rep inExprs ()) (Rep outExprs ())) => Query database inExprs -> Query database outExprs Source #
innerJoin :: Table table database -> (Alias table database 'InnerJoined -> Expression nullable Bool) -> Query database (Alias table database 'InnerJoined) Source #
leftJoin :: Table table database -> (Alias table database 'LeftJoined -> Expression nullable Bool) -> Query database (Alias table database 'LeftJoined) Source #
joinSubQuery :: (Generic inExprs, Generic outExprs, SubQueryExpr 'InnerJoined (Rep inExprs ()) (Rep outExprs ())) => Query database inExprs -> (outExprs -> Expression nullable Bool) -> Query database outExprs Source #
leftJoinSubQuery :: (Generic inExprs, Generic outExprs, SubQueryExpr 'LeftJoined (Rep inExprs ()) (Rep outExprs ())) => Query database inExprs -> (outExprs -> Expression nullable Bool) -> Query database outExprs Source #
groupBy_ :: [SomeExpression] -> Query database () Source #
Insertion
insertUpdateValues :: Table table database -> Insertor table database a -> (Alias table database 'InnerJoined -> Alias table database 'InnerJoined -> [Updator table database]) -> [a] -> Command Source #
insertData :: (Generic a, Generic b, InsertGeneric tbl db (Rep a ()) (Rep b ())) => a -> Insertor tbl db b Source #
skipInsert :: Insertor tbl db a Source #
into :: (a -> Expression nullable b) -> Field table database nullable fieldType -> Insertor table database a Source #
lensInto :: ToSql b => Getter a b -> Field table database 'NotNull fieldType -> Insertor table database a Source #
maybeLensInto :: ToSql b => Getter a (Maybe b) -> Field table database 'Nullable fieldType -> Insertor table database a Source #
opticInto :: (ToSql b, Is k A_Getter) => Optic' k is a b -> Field table database 'NotNull fieldType -> Insertor table database a Source #
maybeOpticInto :: (ToSql b, Is k A_Getter) => Optic' k is a (Maybe b) -> Field table database 'Nullable fieldType -> Insertor table database a Source #
insertOne :: ToSql a => Field table database 'NotNull fieldType -> Insertor table database a Source #
exprInto :: Expression nullable a -> Field table database nullable a -> Into database table Source #
Update
data Updator table database Source #
forall nullable a. (Field table database nullable a) := (Expression nullable a) infix 0 |
update :: Table table database -> (Alias table database 'InnerJoined -> Query database [Updator table database]) -> Command Source #
imported from Database.MySQL.Hasqlator
type Getter s a = (a -> Const a a) -> s -> Const a s Source #
A Getter type compatible with the lens library
toSqlValue
Instances
fromSql
Instances
subQueryExpr :: Query database (Expression nullable a) -> Expression nullable a Source #
executeCommand :: MySQLConn -> Command -> IO OK Source #
Execute a Command which doesn't return a result-set. May throw a
SQLError
exception. See the mysql-haskell package for other
exceptions it may throw.
Instances
ToQueryBuilder Command Source # | |
Defined in Database.MySQL.Hasqlator toQueryBuilder :: Command -> QueryBuilder Source # |