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