| Safe Haskell | Safe-Inferred | 
|---|---|
| Language | Haskell2010 | 
Opaleye.Internal.Table
Synopsis
- data Table writeFields viewFields
- = Table String (TableFields writeFields viewFields)
 - | TableWithSchema String String (TableFields writeFields viewFields)
 
 - tableIdentifier :: Table writeColumns viewColumns -> TableIdentifier
 - tableColumns :: Table writeColumns viewColumns -> TableFields writeColumns viewColumns
 - tableProperties :: Table writeColumns viewColumns -> TableFields writeColumns viewColumns
 - data TableFields writeColumns viewColumns = TableFields {
- tablePropertiesWriter :: Writer writeColumns viewColumns
 - tablePropertiesView :: View viewColumns
 
 - tableColumnsWriter :: TableFields writeColumns viewColumns -> Writer writeColumns viewColumns
 - tableColumnsView :: TableFields writeColumns viewColumns -> View viewColumns
 - newtype View columns = View columns
 - newtype Writer columns dummy = Writer (forall f. Functor f => PackMap (f PrimExpr, String) () (f columns) ())
 - requiredTableField :: String -> TableFields (Field_ n a) (Field_ n a)
 - optionalTableField :: String -> TableFields (Maybe (Field_ n a)) (Field_ n a)
 - readOnlyTableField :: String -> TableFields () (Field_ n a)
 - class InferrableTableField w n r | w -> n, w -> r where
- tableField :: String -> TableFields w (Field_ n r)
 
 - queryTable :: Unpackspec viewColumns columns -> Table writeColumns viewColumns -> Tag -> (columns, PrimQuery)
 - runColumnMaker :: Unpackspec tablecolumns columns -> Tag -> tablecolumns -> (columns, [(Symbol, PrimExpr)])
 - runWriter :: Writer columns columns' -> columns -> [(PrimExpr, String)]
 - runWriter' :: Writer columns columns' -> NonEmpty columns -> (NonEmpty [PrimExpr], [String])
 - newtype Zip a = Zip {}
 - requiredW :: String -> Writer (Field_ n a) (Field_ n a)
 - optionalW :: String -> Writer (Maybe (Field_ n a)) (Field_ n a)
 
Documentation
data Table writeFields viewFields Source #
Define a table as follows, where "id", "color", "location",
 "quantity" and "radius" are the table's fields in Postgres and
 the types are given in the type signature.  The id field is an
 autoincrementing field (i.e. optional for writes).
data Widget a b c d e = Widget { wid      :: a
                               , color    :: b
                               , location :: c
                               , quantity :: d
                               , radius   :: e }
$(makeAdaptorAndInstance "pWidget" ''Widget)
widgetTable :: Table (Widget (Maybe (Field SqlInt4)) (Field SqlText) (Field SqlText)
                             (Field SqlInt4) (Field SqlFloat8))
                     (Widget (Field SqlInt4) (Field SqlText) (Field SqlText)
                             (Field SqlInt4) (Field SqlFloat8))
widgetTable = table "widgetTable"
                     (pWidget Widget { wid      = tableField "id"
                                     , color    = tableField "color"
                                     , location = tableField "location"
                                     , quantity = tableField "quantity"
                                     , radius   = tableField "radius" })
Constructors
| Table String (TableFields writeFields viewFields) | |
| TableWithSchema String String (TableFields writeFields viewFields) | 
Instances
| Profunctor Table Source # | |
Defined in Opaleye.Internal.Table Methods dimap :: (a -> b) -> (c -> d) -> Table b c -> Table a d # lmap :: (a -> b) -> Table b c -> Table a c # rmap :: (b -> c) -> Table a b -> Table a c # (#.) :: forall a b c q. Coercible c b => q b c -> Table a b -> Table a c # (.#) :: forall a b c q. Coercible b a => Table b c -> q a b -> Table a c #  | |
| Functor (Table a) Source # | |
tableIdentifier :: Table writeColumns viewColumns -> TableIdentifier Source #
tableColumns :: Table writeColumns viewColumns -> TableFields writeColumns viewColumns Source #
tableProperties :: Table writeColumns viewColumns -> TableFields writeColumns viewColumns Source #
Use tableColumns instead.  Will be deprecated soon.
data TableFields writeColumns viewColumns Source #
Constructors
| TableFields | |
Fields 
  | |
Instances
tableColumnsWriter :: TableFields writeColumns viewColumns -> Writer writeColumns viewColumns Source #
tableColumnsView :: TableFields writeColumns viewColumns -> View viewColumns Source #
newtype Writer columns dummy Source #
Instances
| ProductProfunctor Writer Source # | |
| Profunctor Writer Source # | |
Defined in Opaleye.Internal.Table Methods dimap :: (a -> b) -> (c -> d) -> Writer b c -> Writer a d # lmap :: (a -> b) -> Writer b c -> Writer a c # rmap :: (b -> c) -> Writer a b -> Writer a c # (#.) :: forall a b c q. Coercible c b => q b c -> Writer a b -> Writer a c # (.#) :: forall a b c q. Coercible b a => Writer b c -> q a b -> Writer a c #  | |
| Applicative (Writer a) Source # | |
| Functor (Writer a) Source # | |
requiredTableField :: String -> TableFields (Field_ n a) (Field_ n a) Source #
requiredTableField is for fields which are not optional.  You
 must provide them on writes.
optionalTableField :: String -> TableFields (Maybe (Field_ n a)) (Field_ n a) Source #
optionalTableField is for fields that you can omit on writes, such as
  fields which have defaults or which are SERIAL.
readOnlyTableField :: String -> TableFields () (Field_ n a) Source #
Don't use readOnlyTableField.  It will be formally deprecated
 in a future version.  It is broken for updates because it always
 updates its field with DEFAULT which is very unlikely to be what
 you want!  For more details see
 https://github.com/tomjaguarpaw/haskell-opaleye/issues/447#issuecomment-685617841.
class InferrableTableField w n r | w -> n, w -> r where Source #
You should not define your own instances of
 InferrableTableField.
Methods
tableField :: String -> TableFields w (Field_ n r) Source #
Infer either a required (requiredTableField) or optional
 (optionalTableField) field depending on
 the write type.  It's generally more convenient to use this
 than required or optional but you do have to provide a type
 signature instead.
Instances
| InferrableTableField (Maybe (Field_ n r)) n r Source # | Equivalent to defining the column with   | 
Defined in Opaleye.Internal.Table Methods tableField :: String -> TableFields (Maybe (Field_ n r)) (Field_ n r) Source #  | |
| InferrableTableField (Field_ n r) n r Source # | Equivalent to defining the column with   | 
Defined in Opaleye.Internal.Table Methods tableField :: String -> TableFields (Field_ n r) (Field_ n r) Source #  | |
queryTable :: Unpackspec viewColumns columns -> Table writeColumns viewColumns -> Tag -> (columns, PrimQuery) Source #
runColumnMaker :: Unpackspec tablecolumns columns -> Tag -> tablecolumns -> (columns, [(Symbol, PrimExpr)]) Source #
runWriter' :: Writer columns columns' -> NonEmpty columns -> (NonEmpty [PrimExpr], [String]) Source #