module Opaleye.Internal.HaskellDB.Sql (
SqlTable,
SqlColumn(..),
SqlName,
SqlOrder(..),
SqlUpdate(..),
SqlDelete(..),
SqlInsert(..),
SqlExpr(..),
) where
type SqlTable = String
newtype SqlColumn = SqlColumn String deriving Show
type SqlName = String
data SqlOrder = SqlAsc | SqlDesc
deriving Show
data SqlExpr = ColumnSqlExpr SqlColumn
| BinSqlExpr String SqlExpr SqlExpr
| PrefixSqlExpr String SqlExpr
| PostfixSqlExpr String SqlExpr
| FunSqlExpr String [SqlExpr]
| AggrFunSqlExpr String [SqlExpr]
| ConstSqlExpr String
| CaseSqlExpr [(SqlExpr,SqlExpr)] SqlExpr
| ListSqlExpr [SqlExpr]
| ParamSqlExpr (Maybe SqlName) SqlExpr
| PlaceHolderSqlExpr
| ParensSqlExpr SqlExpr
| CastSqlExpr String SqlExpr
deriving Show
data SqlUpdate = SqlUpdate SqlTable [(SqlColumn,SqlExpr)] [SqlExpr]
data SqlDelete = SqlDelete SqlTable [SqlExpr]
data SqlInsert = SqlInsert SqlTable [SqlColumn] [SqlExpr]