{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
module Opaleye.Table (
table,
tableWithSchema,
T.Table,
T.tableField,
T.optionalTableField,
T.requiredTableField,
T.InferrableTableField,
selectTable,
TableFields,
selectTableExplicit,
T.readOnlyTableField,
) where
import qualified Opaleye.Internal.QueryArr as Q
import qualified Opaleye.Internal.Table as T
import Opaleye.Internal.Table (Table, TableFields)
import qualified Opaleye.Internal.Tag as Tag
import qualified Opaleye.Internal.Unpackspec as U
import qualified Opaleye.Select as S
import qualified Data.Profunctor.Product.Default as D
selectTable :: D.Default U.Unpackspec fields fields
=> Table a fields
-> S.Select fields
selectTable :: Table a fields -> Select fields
selectTable = Unpackspec fields fields -> Table a fields -> Select fields
forall tablefields fields a.
Unpackspec tablefields fields
-> Table a tablefields -> Select fields
selectTableExplicit Unpackspec fields fields
forall (p :: * -> * -> *) a b. Default p a b => p a b
D.def
table :: String
-> TableFields writeFields viewFields
-> Table writeFields viewFields
table :: String
-> TableFields writeFields viewFields
-> Table writeFields viewFields
table = String
-> TableFields writeFields viewFields
-> Table writeFields viewFields
forall writeFields viewFields.
String
-> TableFields writeFields viewFields
-> Table writeFields viewFields
T.Table
tableWithSchema :: String
-> String
-> TableFields writeFields viewFields
-> Table writeFields viewFields
tableWithSchema :: String
-> String
-> TableFields writeFields viewFields
-> Table writeFields viewFields
tableWithSchema = String
-> String
-> TableFields writeFields viewFields
-> Table writeFields viewFields
forall writeFields viewFields.
String
-> String
-> TableFields writeFields viewFields
-> Table writeFields viewFields
T.TableWithSchema
selectTableExplicit :: U.Unpackspec tablefields fields
-> Table a tablefields
-> S.Select fields
selectTableExplicit :: Unpackspec tablefields fields
-> Table a tablefields -> Select fields
selectTableExplicit Unpackspec tablefields fields
cm Table a tablefields
table' = State Tag (fields, PrimQuery) -> Select fields
forall a. State Tag (a, PrimQuery) -> Query a
Q.productQueryArr (State Tag (fields, PrimQuery) -> Select fields)
-> State Tag (fields, PrimQuery) -> Select fields
forall a b. (a -> b) -> a -> b
$ do
Tag
t0 <- State Tag Tag
Tag.fresh
let (fields
retwires, PrimQuery
primQ) = Unpackspec tablefields fields
-> Table a tablefields -> Tag -> (fields, PrimQuery)
forall viewColumns columns writeColumns.
Unpackspec viewColumns columns
-> Table writeColumns viewColumns -> Tag -> (columns, PrimQuery)
T.queryTable Unpackspec tablefields fields
cm Table a tablefields
table' Tag
t0
(fields, PrimQuery) -> State Tag (fields, PrimQuery)
forall (f :: * -> *) a. Applicative f => a -> f a
pure (fields
retwires, PrimQuery
primQ)