module Opaleye.Table (module Opaleye.Table,
View,
Writer,
Table(Table, TableWithSchema),
TableProperties) where
import Opaleye.Internal.Column (Column(Column))
import qualified Opaleye.Internal.QueryArr as Q
import qualified Opaleye.Internal.Table as T
import Opaleye.Internal.Table (View(View), Table, Writer,
TableProperties)
import qualified Opaleye.Internal.TableMaker as TM
import qualified Opaleye.Internal.Tag as Tag
import qualified Data.Profunctor.Product.Default as D
import qualified Opaleye.Internal.HaskellDB.PrimQuery as HPQ
queryTable :: D.Default TM.ColumnMaker columns columns =>
Table a columns -> Q.Query columns
queryTable = queryTableExplicit D.def
queryTableExplicit :: TM.ColumnMaker tablecolumns columns ->
Table a tablecolumns -> Q.Query columns
queryTableExplicit cm table = Q.simpleQueryArr f where
f ((), t0) = (retwires, primQ, Tag.next t0) where
(retwires, primQ) = T.queryTable cm table t0
required :: String -> TableProperties (Column a) (Column a)
required columnName = T.TableProperties
(T.required columnName)
(View (Column (HPQ.BaseTableAttrExpr columnName)))
optional :: String -> TableProperties (Maybe (Column a)) (Column a)
optional columnName = T.TableProperties
(T.optional columnName)
(View (Column (HPQ.BaseTableAttrExpr columnName)))