module Database.Relational.Type (
Query (..), unsafeTypedQuery,
relationalQuery_,
relationalQuery', relationalQuery,
relationalQuerySQL,
KeyUpdate (..), unsafeTypedKeyUpdate, typedKeyUpdate, typedKeyUpdateTable, keyUpdate,
Update (..), unsafeTypedUpdate, typedUpdate', update', update, updateNoPH,
typedUpdateAllColumn, updateAllColumn', updateAllColumn, updateAllColumnNoPH,
updateSQL,
Insert (..), untypeChunkInsert, chunkSizeOfInsert,
unsafeTypedInsert', unsafeTypedInsert, typedInsert', insert,
typedInsertValue', insertValue', insertValue, insertValueNoPH,
insertValueList', insertValueList,
InsertQuery (..), unsafeTypedInsertQuery,
typedInsertQuery', insertQuery', insertQuery,
insertQuerySQL,
Delete (..), unsafeTypedDelete, typedDelete', delete', delete, deleteNoPH,
deleteSQL,
UntypeableNoFetch (..),
typedUpdate,
typedInsert, typedInsertValue, typedInsertQuery,
typedDelete,
derivedKeyUpdate,
derivedUpdate', derivedUpdate,
derivedUpdateAllColumn', derivedUpdateAllColumn,
derivedInsert,
derivedInsertValue', derivedInsertValue,
derivedInsertQuery,
derivedDelete', derivedDelete,
) where
import Data.Monoid ((<>))
import Data.Functor.ProductIsomorphic (peRight)
import Database.Record (PersistableWidth)
import Database.Relational.Internal.Config (Config, defaultConfig)
import Database.Relational.Internal.ContextType (Flat)
import Database.Relational.Internal.String (showStringSQL)
import Database.Relational.SqlSyntax (Record)
import Database.Relational.Monad.BaseType (Relation, sqlFromRelationWith)
import Database.Relational.Monad.Restrict (Restrict)
import Database.Relational.Monad.Assign (Assign)
import Database.Relational.Monad.Register (Register)
import Database.Relational.Relation (tableOf)
import Database.Relational.Effect
(liftTargetAllColumn', InsertTarget, insertTarget',
deleteFromRestriction, updateFromUpdateTarget, piRegister,
sqlChunkFromInsertTarget, sqlFromInsertTarget, sqlChunksFromRecordList)
import Database.Relational.Pi (Pi)
import Database.Relational.Table (Table, TableDerivable, derivedTable)
import Database.Relational.ProjectableClass (LiteralSQL)
import Database.Relational.Projectable (PlaceHolders, unitPH)
import Database.Relational.SimpleSql
(QuerySuffix, showsQuerySuffix, insertPrefixSQL, updateOtherThanKeySQL, )
newtype Query p a = Query { forall p a. Query p a -> String
untypeQuery :: String }
unsafeTypedQuery :: String
-> Query p a
unsafeTypedQuery :: forall p a. String -> Query p a
unsafeTypedQuery = forall p a. String -> Query p a
Query
instance Show (Query p a) where
show :: Query p a -> String
show = forall p a. Query p a -> String
untypeQuery
relationalQuerySQL :: Config -> Relation p r -> QuerySuffix -> String
relationalQuerySQL :: forall p r. Config -> Relation p r -> QuerySuffix -> String
relationalQuerySQL Config
config Relation p r
rel QuerySuffix
qsuf =
StringSQL -> String
showStringSQL forall a b. (a -> b) -> a -> b
$ forall p r. Relation p r -> Config -> StringSQL
sqlFromRelationWith Relation p r
rel Config
config forall a. Semigroup a => a -> a -> a
<> QuerySuffix -> StringSQL
showsQuerySuffix QuerySuffix
qsuf
relationalQuery_ :: Config -> Relation p r -> QuerySuffix -> Query p r
relationalQuery_ :: forall p r. Config -> Relation p r -> QuerySuffix -> Query p r
relationalQuery_ Config
config Relation p r
rel QuerySuffix
qsuf =
forall p a. String -> Query p a
unsafeTypedQuery forall a b. (a -> b) -> a -> b
$ forall p r. Config -> Relation p r -> QuerySuffix -> String
relationalQuerySQL Config
config Relation p r
rel QuerySuffix
qsuf
relationalQuery' :: Relation p r -> QuerySuffix -> Query p r
relationalQuery' :: forall p r. Relation p r -> QuerySuffix -> Query p r
relationalQuery' = forall p r. Config -> Relation p r -> QuerySuffix -> Query p r
relationalQuery_ Config
defaultConfig
relationalQuery :: Relation p r -> Query p r
relationalQuery :: forall p r. Relation p r -> Query p r
relationalQuery = (forall p r. Relation p r -> QuerySuffix -> Query p r
`relationalQuery'` [])
data KeyUpdate p a = KeyUpdate { forall p a. KeyUpdate p a -> Pi a p
updateKey :: Pi a p
, forall p a. KeyUpdate p a -> String
untypeKeyUpdate :: String
}
unsafeTypedKeyUpdate :: Pi a p -> String -> KeyUpdate p a
unsafeTypedKeyUpdate :: forall a p. Pi a p -> String -> KeyUpdate p a
unsafeTypedKeyUpdate = forall p a. Pi a p -> String -> KeyUpdate p a
KeyUpdate
typedKeyUpdate :: Table a -> Pi a p -> KeyUpdate p a
typedKeyUpdate :: forall a p. Table a -> Pi a p -> KeyUpdate p a
typedKeyUpdate Table a
tbl Pi a p
key = forall a p. Pi a p -> String -> KeyUpdate p a
unsafeTypedKeyUpdate Pi a p
key forall a b. (a -> b) -> a -> b
$ forall r p. Table r -> Pi r p -> String
updateOtherThanKeySQL Table a
tbl Pi a p
key
typedKeyUpdateTable :: TableDerivable r => Relation () r -> Pi r p -> KeyUpdate p r
typedKeyUpdateTable :: forall r p.
TableDerivable r =>
Relation () r -> Pi r p -> KeyUpdate p r
typedKeyUpdateTable = forall a p. Table a -> Pi a p -> KeyUpdate p a
typedKeyUpdate forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall r. TableDerivable r => Relation () r -> Table r
tableOf
keyUpdate :: TableDerivable r => Pi r p -> KeyUpdate p r
keyUpdate :: forall r p. TableDerivable r => Pi r p -> KeyUpdate p r
keyUpdate = forall a p. Table a -> Pi a p -> KeyUpdate p a
typedKeyUpdate forall r. TableDerivable r => Table r
derivedTable
{-# DEPRECATED derivedKeyUpdate "use keyUpdate instead of this." #-}
derivedKeyUpdate :: TableDerivable r => Pi r p -> KeyUpdate p r
derivedKeyUpdate :: forall r p. TableDerivable r => Pi r p -> KeyUpdate p r
derivedKeyUpdate = forall r p. TableDerivable r => Pi r p -> KeyUpdate p r
keyUpdate
instance Show (KeyUpdate p a) where
show :: KeyUpdate p a -> String
show = forall p a. KeyUpdate p a -> String
untypeKeyUpdate
newtype Update p = Update { forall p. Update p -> String
untypeUpdate :: String }
unsafeTypedUpdate :: String -> Update p
unsafeTypedUpdate :: forall p. String -> Update p
unsafeTypedUpdate = forall p. String -> Update p
Update
updateSQL :: Config -> Table r -> (Record Flat r -> Assign r (PlaceHolders p)) -> String
updateSQL :: forall r p.
Config
-> Table r
-> (Record Flat r -> Assign r (PlaceHolders p))
-> String
updateSQL Config
config Table r
tbl Record Flat r -> Assign r (PlaceHolders p)
ut = StringSQL -> String
showStringSQL forall a b. (a -> b) -> a -> b
$ forall r p.
Config
-> Table r
-> (Record Flat r -> Assign r (PlaceHolders p))
-> StringSQL
updateFromUpdateTarget Config
config Table r
tbl Record Flat r -> Assign r (PlaceHolders p)
ut
typedUpdate' :: Config -> Table r -> (Record Flat r -> Assign r (PlaceHolders p)) -> Update p
typedUpdate' :: forall r p.
Config
-> Table r
-> (Record Flat r -> Assign r (PlaceHolders p))
-> Update p
typedUpdate' Config
config Table r
tbl Record Flat r -> Assign r (PlaceHolders p)
ut = forall p. String -> Update p
unsafeTypedUpdate forall a b. (a -> b) -> a -> b
$ forall r p.
Config
-> Table r
-> (Record Flat r -> Assign r (PlaceHolders p))
-> String
updateSQL Config
config Table r
tbl Record Flat r -> Assign r (PlaceHolders p)
ut
{-# DEPRECATED typedUpdate "use `typedUpdate' defaultConfig` instead of this." #-}
typedUpdate :: Table r -> (Record Flat r -> Assign r (PlaceHolders p)) -> Update p
typedUpdate :: forall r p.
Table r -> (Record Flat r -> Assign r (PlaceHolders p)) -> Update p
typedUpdate = forall r p.
Config
-> Table r
-> (Record Flat r -> Assign r (PlaceHolders p))
-> Update p
typedUpdate' Config
defaultConfig
targetTable :: TableDerivable r => (Record Flat r -> Assign r (PlaceHolders p)) -> Table r
targetTable :: forall r p.
TableDerivable r =>
(Record Flat r -> Assign r (PlaceHolders p)) -> Table r
targetTable = forall a b. a -> b -> a
const forall r. TableDerivable r => Table r
derivedTable
update' :: TableDerivable r => Config -> (Record Flat r -> Assign r (PlaceHolders p)) -> Update p
update' :: forall r p.
TableDerivable r =>
Config -> (Record Flat r -> Assign r (PlaceHolders p)) -> Update p
update' Config
config Record Flat r -> Assign r (PlaceHolders p)
ac = forall r p.
Config
-> Table r
-> (Record Flat r -> Assign r (PlaceHolders p))
-> Update p
typedUpdate' Config
config (forall r p.
TableDerivable r =>
(Record Flat r -> Assign r (PlaceHolders p)) -> Table r
targetTable Record Flat r -> Assign r (PlaceHolders p)
ac) Record Flat r -> Assign r (PlaceHolders p)
ac
{-# DEPRECATED derivedUpdate' "use `update'` instead of this." #-}
derivedUpdate' :: TableDerivable r => Config -> (Record Flat r -> Assign r (PlaceHolders p)) -> Update p
derivedUpdate' :: forall r p.
TableDerivable r =>
Config -> (Record Flat r -> Assign r (PlaceHolders p)) -> Update p
derivedUpdate' = forall r p.
TableDerivable r =>
Config -> (Record Flat r -> Assign r (PlaceHolders p)) -> Update p
update'
update :: TableDerivable r => (Record Flat r -> Assign r (PlaceHolders p)) -> Update p
update :: forall r p.
TableDerivable r =>
(Record Flat r -> Assign r (PlaceHolders p)) -> Update p
update = forall r p.
TableDerivable r =>
Config -> (Record Flat r -> Assign r (PlaceHolders p)) -> Update p
update' Config
defaultConfig
updateNoPH :: TableDerivable r => (Record Flat r -> Assign r ()) -> Update ()
updateNoPH :: forall r.
TableDerivable r =>
(Record Flat r -> Assign r ()) -> Update ()
updateNoPH Record Flat r -> Assign r ()
af = forall r p.
TableDerivable r =>
(Record Flat r -> Assign r (PlaceHolders p)) -> Update p
update forall a b. (a -> b) -> a -> b
$ (forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> forall (m :: * -> *) a. Monad m => a -> m a
return PlaceHolders ()
unitPH) forall b c a. (b -> c) -> (a -> b) -> a -> c
. Record Flat r -> Assign r ()
af
{-# DEPRECATED derivedUpdate "use `update` instead of this." #-}
derivedUpdate :: TableDerivable r => (Record Flat r -> Assign r (PlaceHolders p)) -> Update p
derivedUpdate :: forall r p.
TableDerivable r =>
(Record Flat r -> Assign r (PlaceHolders p)) -> Update p
derivedUpdate = forall r p.
TableDerivable r =>
(Record Flat r -> Assign r (PlaceHolders p)) -> Update p
update
typedUpdateAllColumn' :: PersistableWidth r
=> Config
-> Table r
-> (Record Flat r -> Restrict (PlaceHolders p))
-> Update (r, p)
typedUpdateAllColumn' :: forall r p.
PersistableWidth r =>
Config
-> Table r
-> (Record Flat r -> Restrict (PlaceHolders p))
-> Update (r, p)
typedUpdateAllColumn' Config
config Table r
tbl Record Flat r -> Restrict (PlaceHolders p)
r = forall r p.
Config
-> Table r
-> (Record Flat r -> Assign r (PlaceHolders p))
-> Update p
typedUpdate' Config
config Table r
tbl forall a b. (a -> b) -> a -> b
$ forall r p.
PersistableWidth r =>
(Record Flat r -> Restrict (PlaceHolders p))
-> Record Flat r -> Assign r (PlaceHolders (r, p))
liftTargetAllColumn' Record Flat r -> Restrict (PlaceHolders p)
r
typedUpdateAllColumn :: PersistableWidth r
=> Table r
-> (Record Flat r -> Restrict (PlaceHolders p))
-> Update (r, p)
typedUpdateAllColumn :: forall r p.
PersistableWidth r =>
Table r
-> (Record Flat r -> Restrict (PlaceHolders p)) -> Update (r, p)
typedUpdateAllColumn = forall r p.
PersistableWidth r =>
Config
-> Table r
-> (Record Flat r -> Restrict (PlaceHolders p))
-> Update (r, p)
typedUpdateAllColumn' Config
defaultConfig
updateAllColumn' :: (PersistableWidth r, TableDerivable r)
=> Config
-> (Record Flat r -> Restrict (PlaceHolders p))
-> Update (r, p)
updateAllColumn' :: forall r p.
(PersistableWidth r, TableDerivable r) =>
Config
-> (Record Flat r -> Restrict (PlaceHolders p)) -> Update (r, p)
updateAllColumn' Config
config = forall r p.
PersistableWidth r =>
Config
-> Table r
-> (Record Flat r -> Restrict (PlaceHolders p))
-> Update (r, p)
typedUpdateAllColumn' Config
config forall r. TableDerivable r => Table r
derivedTable
{-# DEPRECATED derivedUpdateAllColumn' "use `updateAllColumn'` instead of this." #-}
derivedUpdateAllColumn' :: (PersistableWidth r, TableDerivable r)
=> Config
-> (Record Flat r -> Restrict (PlaceHolders p))
-> Update (r, p)
derivedUpdateAllColumn' :: forall r p.
(PersistableWidth r, TableDerivable r) =>
Config
-> (Record Flat r -> Restrict (PlaceHolders p)) -> Update (r, p)
derivedUpdateAllColumn' = forall r p.
(PersistableWidth r, TableDerivable r) =>
Config
-> (Record Flat r -> Restrict (PlaceHolders p)) -> Update (r, p)
updateAllColumn'
updateAllColumn :: (PersistableWidth r, TableDerivable r)
=> (Record Flat r -> Restrict (PlaceHolders p))
-> Update (r, p)
updateAllColumn :: forall r p.
(PersistableWidth r, TableDerivable r) =>
(Record Flat r -> Restrict (PlaceHolders p)) -> Update (r, p)
updateAllColumn = forall r p.
(PersistableWidth r, TableDerivable r) =>
Config
-> (Record Flat r -> Restrict (PlaceHolders p)) -> Update (r, p)
updateAllColumn' Config
defaultConfig
updateAllColumnNoPH :: (PersistableWidth r, TableDerivable r)
=> (Record Flat r -> Restrict ())
-> Update r
updateAllColumnNoPH :: forall r.
(PersistableWidth r, TableDerivable r) =>
(Record Flat r -> Restrict ()) -> Update r
updateAllColumnNoPH =
forall r p.
Config
-> Table r
-> (Record Flat r -> Assign r (PlaceHolders p))
-> Update p
typedUpdate' Config
defaultConfig forall r. TableDerivable r => Table r
derivedTable forall b c a. (b -> c) -> (a -> b) -> a -> c
. (forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall (f :: * -> *) e a. ProductIsoEmpty f e => f (a, e) -> f a
peRight forall b c a. (b -> c) -> (a -> b) -> a -> c
.) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall r p.
PersistableWidth r =>
(Record Flat r -> Restrict (PlaceHolders p))
-> Record Flat r -> Assign r (PlaceHolders (r, p))
liftTargetAllColumn' forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> forall (m :: * -> *) a. Monad m => a -> m a
return PlaceHolders ()
unitPH) forall b c a. (b -> c) -> (a -> b) -> a -> c
.)
{-# DEPRECATED derivedUpdateAllColumn "use `updateAllColumn` instead of this." #-}
derivedUpdateAllColumn :: (PersistableWidth r, TableDerivable r)
=> (Record Flat r -> Restrict (PlaceHolders p))
-> Update (r, p)
derivedUpdateAllColumn :: forall r p.
(PersistableWidth r, TableDerivable r) =>
(Record Flat r -> Restrict (PlaceHolders p)) -> Update (r, p)
derivedUpdateAllColumn = forall r p.
(PersistableWidth r, TableDerivable r) =>
(Record Flat r -> Restrict (PlaceHolders p)) -> Update (r, p)
updateAllColumn
instance Show (Update p) where
show :: Update p -> String
show = forall p. Update p -> String
untypeUpdate
data Insert a =
Insert
{ forall a. Insert a -> String
untypeInsert :: String
, forall a. Insert a -> Maybe (String, Int)
chunkedInsert :: Maybe (String, Int)
}
untypeChunkInsert :: Insert a -> String
untypeChunkInsert :: forall a. Insert a -> String
untypeChunkInsert Insert a
ins = forall b a. b -> (a -> b) -> Maybe a -> b
maybe (forall a. Insert a -> String
untypeInsert Insert a
ins) forall a b. (a, b) -> a
fst forall a b. (a -> b) -> a -> b
$ forall a. Insert a -> Maybe (String, Int)
chunkedInsert Insert a
ins
chunkSizeOfInsert :: Insert a -> Int
chunkSizeOfInsert :: forall a. Insert a -> Int
chunkSizeOfInsert = forall b a. b -> (a -> b) -> Maybe a -> b
maybe Int
1 forall a b. (a, b) -> b
snd forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Insert a -> Maybe (String, Int)
chunkedInsert
unsafeTypedInsert' :: String -> String -> Int -> Insert a
unsafeTypedInsert' :: forall a. String -> String -> Int -> Insert a
unsafeTypedInsert' String
s = forall a b c. ((a, b) -> c) -> a -> b -> c
curry (forall a. String -> Maybe (String, Int) -> Insert a
Insert String
s forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. a -> Maybe a
Just)
unsafeTypedInsert :: String -> Insert a
unsafeTypedInsert :: forall a. String -> Insert a
unsafeTypedInsert String
s = forall a. String -> Maybe (String, Int) -> Insert a
Insert String
s forall a. Maybe a
Nothing
typedInsert' :: PersistableWidth r => Config -> Table r -> Pi r r' -> Insert r'
typedInsert' :: forall r r'.
PersistableWidth r =>
Config -> Table r -> Pi r r' -> Insert r'
typedInsert' Config
config Table r
tbl =
forall r p. Config -> Table r -> InsertTarget p r -> Insert p
typedInsertValue' Config
config Table r
tbl forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall r p. Register r (PlaceHolders p) -> InsertTarget p r
insertTarget' forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall r r'.
PersistableWidth r =>
Pi r r' -> Register r (PlaceHolders r')
piRegister
{-# DEPRECATED typedInsert "use `typedInsert' defaultConfig` instead of this." #-}
typedInsert :: PersistableWidth r => Table r -> Pi r r' -> Insert r'
typedInsert :: forall r r'. PersistableWidth r => Table r -> Pi r r' -> Insert r'
typedInsert = forall r r'.
PersistableWidth r =>
Config -> Table r -> Pi r r' -> Insert r'
typedInsert' Config
defaultConfig
insert :: (PersistableWidth r, TableDerivable r) => Pi r r' -> Insert r'
insert :: forall r r'.
(PersistableWidth r, TableDerivable r) =>
Pi r r' -> Insert r'
insert = forall r r'.
PersistableWidth r =>
Config -> Table r -> Pi r r' -> Insert r'
typedInsert' Config
defaultConfig forall r. TableDerivable r => Table r
derivedTable
{-# DEPRECATED derivedInsert "use `insert` instead of this." #-}
derivedInsert :: (PersistableWidth r, TableDerivable r) => Pi r r' -> Insert r'
derivedInsert :: forall r r'.
(PersistableWidth r, TableDerivable r) =>
Pi r r' -> Insert r'
derivedInsert = forall r r'.
(PersistableWidth r, TableDerivable r) =>
Pi r r' -> Insert r'
insert
typedInsertValue' :: Config -> Table r -> InsertTarget p r -> Insert p
typedInsertValue' :: forall r p. Config -> Table r -> InsertTarget p r -> Insert p
typedInsertValue' Config
config Table r
tbl InsertTarget p r
it =
forall a. String -> String -> Int -> Insert a
unsafeTypedInsert'
(StringSQL -> String
showStringSQL forall a b. (a -> b) -> a -> b
$ forall r p. Config -> Table r -> InsertTarget p r -> StringSQL
sqlFromInsertTarget Config
config Table r
tbl InsertTarget p r
it)
(StringSQL -> String
showStringSQL StringSQL
ci) Int
n
where
(StringSQL
ci, Int
n) = forall r p.
Config -> Table r -> InsertTarget p r -> (StringSQL, Int)
sqlChunkFromInsertTarget Config
config Table r
tbl InsertTarget p r
it
{-# DEPRECATED typedInsertValue "use `typedInsertValue' defaultConfig` instead of this." #-}
typedInsertValue :: Table r -> InsertTarget p r -> Insert p
typedInsertValue :: forall r p. Table r -> InsertTarget p r -> Insert p
typedInsertValue = forall r p. Config -> Table r -> InsertTarget p r -> Insert p
typedInsertValue' Config
defaultConfig
insertValue' :: TableDerivable r => Config -> Register r (PlaceHolders p) -> Insert p
insertValue' :: forall r p.
TableDerivable r =>
Config -> Register r (PlaceHolders p) -> Insert p
insertValue' Config
config Register r (PlaceHolders p)
rs = forall r p. Config -> Table r -> InsertTarget p r -> Insert p
typedInsertValue' Config
config (forall r p.
TableDerivable r =>
Register r (PlaceHolders p) -> Table r
rt Register r (PlaceHolders p)
rs) forall a b. (a -> b) -> a -> b
$ forall r p. Register r (PlaceHolders p) -> InsertTarget p r
insertTarget' Register r (PlaceHolders p)
rs
where
rt :: TableDerivable r => Register r (PlaceHolders p) -> Table r
rt :: forall r p.
TableDerivable r =>
Register r (PlaceHolders p) -> Table r
rt = forall a b. a -> b -> a
const forall r. TableDerivable r => Table r
derivedTable
{-# DEPRECATED derivedInsertValue' "use `insertValue'` instead of this." #-}
derivedInsertValue' :: TableDerivable r => Config -> Register r (PlaceHolders p) -> Insert p
derivedInsertValue' :: forall r p.
TableDerivable r =>
Config -> Register r (PlaceHolders p) -> Insert p
derivedInsertValue' = forall r p.
TableDerivable r =>
Config -> Register r (PlaceHolders p) -> Insert p
insertValue'
insertValue :: TableDerivable r => Register r (PlaceHolders p) -> Insert p
insertValue :: forall r p.
TableDerivable r =>
Register r (PlaceHolders p) -> Insert p
insertValue = forall r p.
TableDerivable r =>
Config -> Register r (PlaceHolders p) -> Insert p
insertValue' Config
defaultConfig
insertValueNoPH :: TableDerivable r => Register r () -> Insert ()
insertValueNoPH :: forall r. TableDerivable r => Register r () -> Insert ()
insertValueNoPH = forall r p.
TableDerivable r =>
Register r (PlaceHolders p) -> Insert p
insertValue forall b c a. (b -> c) -> (a -> b) -> a -> c
. (forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> forall (m :: * -> *) a. Monad m => a -> m a
return PlaceHolders ()
unitPH)
{-# DEPRECATED derivedInsertValue "use `insertValue` instead of this." #-}
derivedInsertValue :: TableDerivable r => Register r (PlaceHolders p) -> Insert p
derivedInsertValue :: forall r p.
TableDerivable r =>
Register r (PlaceHolders p) -> Insert p
derivedInsertValue = forall r p.
TableDerivable r =>
Register r (PlaceHolders p) -> Insert p
insertValue
insertValueList' :: (TableDerivable r, LiteralSQL r')
=> Config
-> Pi r r'
-> [r']
-> [Insert ()]
insertValueList' :: forall r r'.
(TableDerivable r, LiteralSQL r') =>
Config -> Pi r r' -> [r'] -> [Insert ()]
insertValueList' Config
config Pi r r'
pi' =
forall a b. (a -> b) -> [a] -> [b]
map (forall a. String -> Insert a
unsafeTypedInsert forall b c a. (b -> c) -> (a -> b) -> a -> c
. StringSQL -> String
showStringSQL)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall r' r.
LiteralSQL r' =>
Config -> Table r -> Pi r r' -> [r'] -> QuerySuffix
sqlChunksFromRecordList Config
config forall r. TableDerivable r => Table r
derivedTable Pi r r'
pi'
insertValueList :: (TableDerivable r, LiteralSQL r')
=> Pi r r'
-> [r']
-> [Insert ()]
insertValueList :: forall r r'.
(TableDerivable r, LiteralSQL r') =>
Pi r r' -> [r'] -> [Insert ()]
insertValueList = forall r r'.
(TableDerivable r, LiteralSQL r') =>
Config -> Pi r r' -> [r'] -> [Insert ()]
insertValueList' Config
defaultConfig
instance Show (Insert a) where
show :: Insert a -> String
show = forall a. Insert a -> String
untypeInsert
newtype InsertQuery p = InsertQuery { forall p. InsertQuery p -> String
untypeInsertQuery :: String }
unsafeTypedInsertQuery :: String -> InsertQuery p
unsafeTypedInsertQuery :: forall p. String -> InsertQuery p
unsafeTypedInsertQuery = forall p. String -> InsertQuery p
InsertQuery
insertQuerySQL :: Config -> Table r -> Pi r r' -> Relation p r' -> String
insertQuerySQL :: forall r r' p.
Config -> Table r -> Pi r r' -> Relation p r' -> String
insertQuerySQL Config
config Table r
tbl Pi r r'
pi' Relation p r'
rel = StringSQL -> String
showStringSQL forall a b. (a -> b) -> a -> b
$ forall r r'. Pi r r' -> Table r -> StringSQL
insertPrefixSQL Pi r r'
pi' Table r
tbl forall a. Semigroup a => a -> a -> a
<> forall p r. Relation p r -> Config -> StringSQL
sqlFromRelationWith Relation p r'
rel Config
config
typedInsertQuery' :: Config -> Table r -> Pi r r' -> Relation p r' -> InsertQuery p
typedInsertQuery' :: forall r r' p.
Config -> Table r -> Pi r r' -> Relation p r' -> InsertQuery p
typedInsertQuery' Config
config Table r
tbl Pi r r'
pi' Relation p r'
rel = forall p. String -> InsertQuery p
unsafeTypedInsertQuery forall a b. (a -> b) -> a -> b
$ forall r r' p.
Config -> Table r -> Pi r r' -> Relation p r' -> String
insertQuerySQL Config
config Table r
tbl Pi r r'
pi' Relation p r'
rel
{-# DEPRECATED typedInsertQuery "use `typedInsertQuery' defaultConfig` instead of this." #-}
typedInsertQuery :: Table r -> Pi r r' -> Relation p r' -> InsertQuery p
typedInsertQuery :: forall r r' p. Table r -> Pi r r' -> Relation p r' -> InsertQuery p
typedInsertQuery = forall r r' p.
Config -> Table r -> Pi r r' -> Relation p r' -> InsertQuery p
typedInsertQuery' Config
defaultConfig
insertQuery' :: TableDerivable r => Config -> Pi r r' -> Relation p r' -> InsertQuery p
insertQuery' :: forall r r' p.
TableDerivable r =>
Config -> Pi r r' -> Relation p r' -> InsertQuery p
insertQuery' Config
config = forall r r' p.
Config -> Table r -> Pi r r' -> Relation p r' -> InsertQuery p
typedInsertQuery' Config
config forall r. TableDerivable r => Table r
derivedTable
insertQuery :: TableDerivable r => Pi r r' -> Relation p r' -> InsertQuery p
insertQuery :: forall r r' p.
TableDerivable r =>
Pi r r' -> Relation p r' -> InsertQuery p
insertQuery = forall r r' p.
TableDerivable r =>
Config -> Pi r r' -> Relation p r' -> InsertQuery p
insertQuery' Config
defaultConfig
{-# DEPRECATED derivedInsertQuery "use `insertQuery` instead of this." #-}
derivedInsertQuery :: TableDerivable r => Pi r r' -> Relation p r' -> InsertQuery p
derivedInsertQuery :: forall r r' p.
TableDerivable r =>
Pi r r' -> Relation p r' -> InsertQuery p
derivedInsertQuery = forall r r' p.
TableDerivable r =>
Pi r r' -> Relation p r' -> InsertQuery p
insertQuery
instance Show (InsertQuery p) where
show :: InsertQuery p -> String
show = forall p. InsertQuery p -> String
untypeInsertQuery
newtype Delete p = Delete { forall p. Delete p -> String
untypeDelete :: String }
unsafeTypedDelete :: String -> Delete p
unsafeTypedDelete :: forall p. String -> Delete p
unsafeTypedDelete = forall p. String -> Delete p
Delete
deleteSQL :: Config -> Table r -> (Record Flat r -> Restrict (PlaceHolders p)) -> String
deleteSQL :: forall r p.
Config
-> Table r
-> (Record Flat r -> Restrict (PlaceHolders p))
-> String
deleteSQL Config
config Table r
tbl Record Flat r -> Restrict (PlaceHolders p)
r = StringSQL -> String
showStringSQL forall a b. (a -> b) -> a -> b
$ forall r p.
Config
-> Table r
-> (Record Flat r -> Restrict (PlaceHolders p))
-> StringSQL
deleteFromRestriction Config
config Table r
tbl Record Flat r -> Restrict (PlaceHolders p)
r
typedDelete' :: Config -> Table r -> (Record Flat r -> Restrict (PlaceHolders p)) -> Delete p
typedDelete' :: forall r p.
Config
-> Table r
-> (Record Flat r -> Restrict (PlaceHolders p))
-> Delete p
typedDelete' Config
config Table r
tbl Record Flat r -> Restrict (PlaceHolders p)
r = forall p. String -> Delete p
unsafeTypedDelete forall a b. (a -> b) -> a -> b
$ forall r p.
Config
-> Table r
-> (Record Flat r -> Restrict (PlaceHolders p))
-> String
deleteSQL Config
config Table r
tbl Record Flat r -> Restrict (PlaceHolders p)
r
{-# DEPRECATED typedDelete "use `typedDelete' defaultConfig` instead of this." #-}
typedDelete :: Table r -> (Record Flat r -> Restrict (PlaceHolders p)) -> Delete p
typedDelete :: forall r p.
Table r -> (Record Flat r -> Restrict (PlaceHolders p)) -> Delete p
typedDelete = forall r p.
Config
-> Table r
-> (Record Flat r -> Restrict (PlaceHolders p))
-> Delete p
typedDelete' Config
defaultConfig
restrictedTable :: TableDerivable r => (Record Flat r -> Restrict (PlaceHolders p)) -> Table r
restrictedTable :: forall r p.
TableDerivable r =>
(Record Flat r -> Restrict (PlaceHolders p)) -> Table r
restrictedTable = forall a b. a -> b -> a
const forall r. TableDerivable r => Table r
derivedTable
delete' :: TableDerivable r => Config -> (Record Flat r -> Restrict (PlaceHolders p)) -> Delete p
delete' :: forall r p.
TableDerivable r =>
Config -> (Record Flat r -> Restrict (PlaceHolders p)) -> Delete p
delete' Config
config Record Flat r -> Restrict (PlaceHolders p)
rc = forall r p.
Config
-> Table r
-> (Record Flat r -> Restrict (PlaceHolders p))
-> Delete p
typedDelete' Config
config (forall r p.
TableDerivable r =>
(Record Flat r -> Restrict (PlaceHolders p)) -> Table r
restrictedTable Record Flat r -> Restrict (PlaceHolders p)
rc) Record Flat r -> Restrict (PlaceHolders p)
rc
{-# DEPRECATED derivedDelete' "use `delete'` instead of this." #-}
derivedDelete' :: TableDerivable r => Config -> (Record Flat r -> Restrict (PlaceHolders p)) -> Delete p
derivedDelete' :: forall r p.
TableDerivable r =>
Config -> (Record Flat r -> Restrict (PlaceHolders p)) -> Delete p
derivedDelete' = forall r p.
TableDerivable r =>
Config -> (Record Flat r -> Restrict (PlaceHolders p)) -> Delete p
delete'
delete :: TableDerivable r => (Record Flat r -> Restrict (PlaceHolders p)) -> Delete p
delete :: forall r p.
TableDerivable r =>
(Record Flat r -> Restrict (PlaceHolders p)) -> Delete p
delete = forall r p.
TableDerivable r =>
Config -> (Record Flat r -> Restrict (PlaceHolders p)) -> Delete p
delete' Config
defaultConfig
deleteNoPH :: TableDerivable r => (Record Flat r -> Restrict ()) -> Delete ()
deleteNoPH :: forall r.
TableDerivable r =>
(Record Flat r -> Restrict ()) -> Delete ()
deleteNoPH Record Flat r -> Restrict ()
rf = forall r p.
TableDerivable r =>
(Record Flat r -> Restrict (PlaceHolders p)) -> Delete p
delete forall a b. (a -> b) -> a -> b
$ (forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> forall (m :: * -> *) a. Monad m => a -> m a
return PlaceHolders ()
unitPH) forall b c a. (b -> c) -> (a -> b) -> a -> c
. Record Flat r -> Restrict ()
rf
{-# DEPRECATED derivedDelete "use `delete` instead of this." #-}
derivedDelete :: TableDerivable r => (Record Flat r -> Restrict (PlaceHolders p)) -> Delete p
derivedDelete :: forall r p.
TableDerivable r =>
(Record Flat r -> Restrict (PlaceHolders p)) -> Delete p
derivedDelete = forall r p.
TableDerivable r =>
(Record Flat r -> Restrict (PlaceHolders p)) -> Delete p
delete
instance Show (Delete p) where
show :: Delete p -> String
show = forall p. Delete p -> String
untypeDelete
class UntypeableNoFetch s where
untypeNoFetch :: s p -> String
instance UntypeableNoFetch Insert where
untypeNoFetch :: forall a. Insert a -> String
untypeNoFetch = forall a. Insert a -> String
untypeInsert
instance UntypeableNoFetch InsertQuery where
untypeNoFetch :: forall p. InsertQuery p -> String
untypeNoFetch = forall p. InsertQuery p -> String
untypeInsertQuery
instance UntypeableNoFetch Update where
untypeNoFetch :: forall p. Update p -> String
untypeNoFetch = forall p. Update p -> String
untypeUpdate
instance UntypeableNoFetch Delete where
untypeNoFetch :: forall p. Delete p -> String
untypeNoFetch = forall p. Delete p -> String
untypeDelete