| Copyright | 2013-2019 Kei Hibino | 
|---|---|
| License | BSD3 | 
| Maintainer | ex8k.hibino@gmail.com | 
| Stability | experimental | 
| Portability | unknown | 
| Safe Haskell | None | 
| Language | Haskell2010 | 
Database.Relational.Type
Contents
Description
This module defines typed SQL.
Synopsis
- newtype Query p a = Query {}
- unsafeTypedQuery :: String -> Query p a
- relationalQuery_ :: Config -> Relation p r -> QuerySuffix -> Query p r
- relationalQuery' :: Relation p r -> QuerySuffix -> Query p r
- relationalQuery :: Relation p r -> Query p r
- relationalQuerySQL :: Config -> Relation p r -> QuerySuffix -> String
- data KeyUpdate p a = KeyUpdate {- updateKey :: Pi a p
- untypeKeyUpdate :: String
 
- unsafeTypedKeyUpdate :: Pi a p -> String -> KeyUpdate p a
- typedKeyUpdate :: Table a -> Pi a p -> KeyUpdate p a
- typedKeyUpdateTable :: TableDerivable r => Relation () r -> Pi r p -> KeyUpdate p r
- keyUpdate :: TableDerivable r => Pi r p -> KeyUpdate p r
- newtype Update p = Update {}
- unsafeTypedUpdate :: String -> Update p
- typedUpdate' :: Config -> Table r -> (Record Flat r -> Assign r (PlaceHolders p)) -> Update p
- update' :: TableDerivable r => Config -> (Record Flat r -> Assign r (PlaceHolders p)) -> Update p
- update :: TableDerivable r => (Record Flat r -> Assign r (PlaceHolders p)) -> Update p
- updateNoPH :: TableDerivable r => (Record Flat r -> Assign r ()) -> Update ()
- typedUpdateAllColumn :: PersistableWidth r => Table r -> (Record Flat r -> Restrict (PlaceHolders p)) -> Update (r, p)
- updateAllColumn' :: (PersistableWidth r, TableDerivable r) => Config -> (Record Flat r -> Restrict (PlaceHolders p)) -> Update (r, p)
- updateAllColumn :: (PersistableWidth r, TableDerivable r) => (Record Flat r -> Restrict (PlaceHolders p)) -> Update (r, p)
- updateAllColumnNoPH :: (PersistableWidth r, TableDerivable r) => (Record Flat r -> Restrict ()) -> Update r
- updateSQL :: Config -> Table r -> (Record Flat r -> Assign r (PlaceHolders p)) -> String
- data Insert a = Insert {- untypeInsert :: String
- chunkedInsert :: Maybe (String, Int)
 
- untypeChunkInsert :: Insert a -> String
- chunkSizeOfInsert :: Insert a -> Int
- unsafeTypedInsert' :: String -> String -> Int -> Insert a
- unsafeTypedInsert :: String -> Insert a
- typedInsert' :: PersistableWidth r => Config -> Table r -> Pi r r' -> Insert r'
- insert :: (PersistableWidth r, TableDerivable r) => Pi r r' -> Insert r'
- typedInsertValue' :: Config -> Table r -> InsertTarget p r -> Insert p
- insertValue' :: TableDerivable r => Config -> Register r (PlaceHolders p) -> Insert p
- insertValue :: TableDerivable r => Register r (PlaceHolders p) -> Insert p
- insertValueNoPH :: TableDerivable r => Register r () -> Insert ()
- insertValueList' :: (TableDerivable r, LiteralSQL r') => Config -> Pi r r' -> [r'] -> [Insert ()]
- insertValueList :: (TableDerivable r, LiteralSQL r') => Pi r r' -> [r'] -> [Insert ()]
- newtype InsertQuery p = InsertQuery {}
- unsafeTypedInsertQuery :: String -> InsertQuery p
- typedInsertQuery' :: Config -> Table r -> Pi r r' -> Relation p r' -> InsertQuery p
- insertQuery' :: TableDerivable r => Config -> Pi r r' -> Relation p r' -> InsertQuery p
- insertQuery :: TableDerivable r => Pi r r' -> Relation p r' -> InsertQuery p
- insertQuerySQL :: Config -> Table r -> Pi r r' -> Relation p r' -> String
- newtype Delete p = Delete {}
- unsafeTypedDelete :: String -> Delete p
- typedDelete' :: Config -> Table r -> (Record Flat r -> Restrict (PlaceHolders p)) -> Delete p
- delete' :: TableDerivable r => Config -> (Record Flat r -> Restrict (PlaceHolders p)) -> Delete p
- delete :: TableDerivable r => (Record Flat r -> Restrict (PlaceHolders p)) -> Delete p
- deleteNoPH :: TableDerivable r => (Record Flat r -> Restrict ()) -> Delete ()
- deleteSQL :: Config -> Table r -> (Record Flat r -> Restrict (PlaceHolders p)) -> String
- class UntypeableNoFetch s where- untypeNoFetch :: s p -> String
 
- typedUpdate :: Table r -> (Record Flat r -> Assign r (PlaceHolders p)) -> Update p
- typedInsert :: PersistableWidth r => Table r -> Pi r r' -> Insert r'
- typedInsertValue :: Table r -> InsertTarget p r -> Insert p
- typedInsertQuery :: Table r -> Pi r r' -> Relation p r' -> InsertQuery p
- typedDelete :: Table r -> (Record Flat r -> Restrict (PlaceHolders p)) -> Delete p
- derivedKeyUpdate :: TableDerivable r => Pi r p -> KeyUpdate p r
- derivedUpdate' :: TableDerivable r => Config -> (Record Flat r -> Assign r (PlaceHolders p)) -> Update p
- derivedUpdate :: TableDerivable r => (Record Flat r -> Assign r (PlaceHolders p)) -> Update p
- derivedUpdateAllColumn' :: (PersistableWidth r, TableDerivable r) => Config -> (Record Flat r -> Restrict (PlaceHolders p)) -> Update (r, p)
- derivedUpdateAllColumn :: (PersistableWidth r, TableDerivable r) => (Record Flat r -> Restrict (PlaceHolders p)) -> Update (r, p)
- derivedInsert :: (PersistableWidth r, TableDerivable r) => Pi r r' -> Insert r'
- derivedInsertValue' :: TableDerivable r => Config -> Register r (PlaceHolders p) -> Insert p
- derivedInsertValue :: TableDerivable r => Register r (PlaceHolders p) -> Insert p
- derivedInsertQuery :: TableDerivable r => Pi r r' -> Relation p r' -> InsertQuery p
- derivedDelete' :: TableDerivable r => Config -> (Record Flat r -> Restrict (PlaceHolders p)) -> Delete p
- derivedDelete :: TableDerivable r => (Record Flat r -> Restrict (PlaceHolders p)) -> Delete p
Typed query statement
Query type with place-holder parameter p and query result type a.
Constructors
| Query | |
| Fields | |
Unsafely make typed Query from SQL string.
relationalQuery_ :: Config -> Relation p r -> QuerySuffix -> Query p r Source #
relationalQuery' :: Relation p r -> QuerySuffix -> Query p r Source #
relationalQuerySQL :: Config -> Relation p r -> QuerySuffix -> String Source #
From Relation into untyped SQL query string.
Typed update statement
Update type with key type p and update record type a.
   Columns to update are record columns other than key columns,
   So place-holder parameter type is the same as record type a.
Constructors
| KeyUpdate | |
| Fields 
 | |
unsafeTypedKeyUpdate :: Pi a p -> String -> KeyUpdate p a Source #
Unsafely make typed KeyUpdate from SQL string.
typedKeyUpdateTable :: TableDerivable r => Relation () r -> Pi r p -> KeyUpdate p r Source #
Update type with place-holder parameter p.
Constructors
| Update | |
| Fields | |
Instances
| UntypeableNoFetch Update Source # | |
| Defined in Database.Relational.Type Methods untypeNoFetch :: Update p -> String Source # | |
| Show (Update p) Source # | Show update SQL string | 
typedUpdate' :: Config -> Table r -> (Record Flat r -> Assign r (PlaceHolders p)) -> Update p Source #
update' :: TableDerivable r => Config -> (Record Flat r -> Assign r (PlaceHolders p)) -> Update p Source #
update :: TableDerivable r => (Record Flat r -> Assign r (PlaceHolders p)) -> Update p Source #
Make typed Update from defaultConfig, derived table and Assign computation.
updateNoPH :: TableDerivable r => (Record Flat r -> Assign r ()) -> Update () Source #
Make typed Update from defaultConfig, derived table and Assign computation with no(unit) placeholder.
typedUpdateAllColumn :: PersistableWidth r => Table r -> (Record Flat r -> Restrict (PlaceHolders p)) -> Update (r, p) Source #
updateAllColumn' :: (PersistableWidth r, TableDerivable r) => Config -> (Record Flat r -> Restrict (PlaceHolders p)) -> Update (r, p) Source #
updateAllColumn :: (PersistableWidth r, TableDerivable r) => (Record Flat r -> Restrict (PlaceHolders p)) -> Update (r, p) Source #
Make typed Update from defaultConfig, derived table and Restrict computation.
   Update target is all column.
updateAllColumnNoPH :: (PersistableWidth r, TableDerivable r) => (Record Flat r -> Restrict ()) -> Update r Source #
Make typed Update from defaultConfig, derived table and Restrict computation
   without placeholder other than target table columns.
   Update target is all column.
Typed insert statement
Insert type to insert record type a.
Constructors
| Insert | |
| Fields 
 | |
Instances
| UntypeableNoFetch Insert Source # | |
| Defined in Database.Relational.Type Methods untypeNoFetch :: Insert p -> String Source # | |
| Show (Insert a) Source # | Show insert SQL string. | 
untypeChunkInsert :: Insert a -> String Source #
Statement to use chunked insert
chunkSizeOfInsert :: Insert a -> Int Source #
Size to use chunked insert
unsafeTypedInsert' :: String -> String -> Int -> Insert a Source #
Unsafely make typed Insert from single insert and chunked insert SQL.
typedInsert' :: PersistableWidth r => Config -> Table r -> Pi r r' -> Insert r' Source #
insert :: (PersistableWidth r, TableDerivable r) => Pi r r' -> Insert r' Source #
Table type inferred Insert.
typedInsertValue' :: Config -> Table r -> InsertTarget p r -> Insert p Source #
Make typed Insert from Config, Table and monadic builded InsertTarget object.
insertValue' :: TableDerivable r => Config -> Register r (PlaceHolders p) -> Insert p Source #
insertValue :: TableDerivable r => Register r (PlaceHolders p) -> Insert p Source #
Make typed Insert from defaultConfig, derived table and monadic builded Register object.
insertValueNoPH :: TableDerivable r => Register r () -> Insert () Source #
Make typed Insert from defaultConfig, derived table and monadic builded Register object with no(unit) placeholder.
insertValueList' :: (TableDerivable r, LiteralSQL r') => Config -> Pi r r' -> [r'] -> [Insert ()] Source #
insertValueList :: (TableDerivable r, LiteralSQL r') => Pi r r' -> [r'] -> [Insert ()] Source #
Make typed Insert list from records list.
newtype InsertQuery p Source #
InsertQuery type.
Constructors
| InsertQuery | |
| Fields | |
Instances
| UntypeableNoFetch InsertQuery Source # | |
| Defined in Database.Relational.Type Methods untypeNoFetch :: InsertQuery p -> String Source # | |
| Show (InsertQuery p) Source # | Show insert SQL string. | 
| Defined in Database.Relational.Type Methods showsPrec :: Int -> InsertQuery p -> ShowS # show :: InsertQuery p -> String # showList :: [InsertQuery p] -> ShowS # | |
unsafeTypedInsertQuery :: String -> InsertQuery p Source #
Unsafely make typed InsertQuery from SQL string.
typedInsertQuery' :: Config -> Table r -> Pi r r' -> Relation p r' -> InsertQuery p Source #
Make typed InsertQuery from columns selector Table, Pi and Relation with configuration parameter.
insertQuery' :: TableDerivable r => Config -> Pi r r' -> Relation p r' -> InsertQuery p Source #
Table type inferred InsertQuery.
insertQuery :: TableDerivable r => Pi r r' -> Relation p r' -> InsertQuery p Source #
Table type inferred InsertQuery with defaultConfig.
Typed delete statement
Delete type with place-holder parameter p.
Constructors
| Delete | |
| Fields | |
Instances
| UntypeableNoFetch Delete Source # | |
| Defined in Database.Relational.Type Methods untypeNoFetch :: Delete p -> String Source # | |
| Show (Delete p) Source # | Show delete SQL string | 
typedDelete' :: Config -> Table r -> (Record Flat r -> Restrict (PlaceHolders p)) -> Delete p Source #
delete' :: TableDerivable r => Config -> (Record Flat r -> Restrict (PlaceHolders p)) -> Delete p Source #
delete :: TableDerivable r => (Record Flat r -> Restrict (PlaceHolders p)) -> Delete p Source #
Make typed Delete from defaultConfig, derived table and Restrict computation.
deleteNoPH :: TableDerivable r => (Record Flat r -> Restrict ()) -> Delete () Source #
Make typed Delete from defaultConfig, derived table and Restrict computation with no(unit) placeholder.
Generalized interfaces
class UntypeableNoFetch s where Source #
Untype interface for typed no-result type statments
   with single type parameter which represents place-holder parameter p.
Methods
untypeNoFetch :: s p -> String Source #
Instances
| UntypeableNoFetch Delete Source # | |
| Defined in Database.Relational.Type Methods untypeNoFetch :: Delete p -> String Source # | |
| UntypeableNoFetch InsertQuery Source # | |
| Defined in Database.Relational.Type Methods untypeNoFetch :: InsertQuery p -> String Source # | |
| UntypeableNoFetch Insert Source # | |
| Defined in Database.Relational.Type Methods untypeNoFetch :: Insert p -> String Source # | |
| UntypeableNoFetch Update Source # | |
| Defined in Database.Relational.Type Methods untypeNoFetch :: Update p -> String Source # | |
Deprecated
typedUpdate :: Table r -> (Record Flat r -> Assign r (PlaceHolders p)) -> Update p Source #
Deprecated: use typedUpdate defaultConfig` instead of this.
Make typed Update using defaultConfig, Table and Assign computation.
typedInsert :: PersistableWidth r => Table r -> Pi r r' -> Insert r' Source #
Deprecated: use typedInsert defaultConfig` instead of this.
typedInsertValue :: Table r -> InsertTarget p r -> Insert p Source #
Deprecated: use typedInsertValue defaultConfig` instead of this.
Make typed Insert from Table and monadic builded InsertTarget object.
typedInsertQuery :: Table r -> Pi r r' -> Relation p r' -> InsertQuery p Source #
Deprecated: use typedInsertQuery defaultConfig` instead of this.
Make typed InsertQuery from columns selector Table, Pi and Relation.
typedDelete :: Table r -> (Record Flat r -> Restrict (PlaceHolders p)) -> Delete p Source #
Deprecated: use typedDelete defaultConfig` instead of this.
derivedKeyUpdate :: TableDerivable r => Pi r p -> KeyUpdate p r Source #
derivedUpdate' :: TableDerivable r => Config -> (Record Flat r -> Assign r (PlaceHolders p)) -> Update p Source #
derivedUpdate :: TableDerivable r => (Record Flat r -> Assign r (PlaceHolders p)) -> Update p Source #
Deprecated: use update instead of this.
Make typed Update from defaultConfig, derived table and Assign computation.
derivedUpdateAllColumn' :: (PersistableWidth r, TableDerivable r) => Config -> (Record Flat r -> Restrict (PlaceHolders p)) -> Update (r, p) Source #
Deprecated: use updateAllColumn' instead of this.
Deprecated. use updateAllColumn'.
derivedUpdateAllColumn :: (PersistableWidth r, TableDerivable r) => (Record Flat r -> Restrict (PlaceHolders p)) -> Update (r, p) Source #
Deprecated: use updateAllColumn instead of this.
Deprecated. use updateAllColumn.
derivedInsert :: (PersistableWidth r, TableDerivable r) => Pi r r' -> Insert r' Source #
derivedInsertValue' :: TableDerivable r => Config -> Register r (PlaceHolders p) -> Insert p Source #
Deprecated: use insertValue' instead of this.
Make typed Insert from Config, derived table and monadic builded Register object.
derivedInsertValue :: TableDerivable r => Register r (PlaceHolders p) -> Insert p Source #
Deprecated: use insertValue instead of this.
Make typed Insert from defaultConfig, derived table and monadic builded Register object.
derivedInsertQuery :: TableDerivable r => Pi r r' -> Relation p r' -> InsertQuery p Source #
Deprecated: use insertQuery instead of this.
Table type inferred InsertQuery.
derivedDelete' :: TableDerivable r => Config -> (Record Flat r -> Restrict (PlaceHolders p)) -> Delete p Source #
derivedDelete :: TableDerivable r => (Record Flat r -> Restrict (PlaceHolders p)) -> Delete p Source #
Deprecated: use delete instead of this.
Make typed Delete from defaultConfig, derived table and Restrict computation.