@@ -58,6 +58,8 @@ module Squeal.PostgreSQL.Definition
58 , ForeignKeyed
58 , ForeignKeyed
59 , OnDeleteClause (..)
59 , OnDeleteClause (..)
60 , OnUpdateClause (..)
60 , OnUpdateClause (..)
61+ , FunctionDefinition(..)
61 -- ** Drop
63 -- ** Drop
62 , dropSchema
64 , dropSchema
63 , dropTable
65 , dropTable
@@ -1128,27 +1130,39 @@ instance RenderSQL IndexMethod where
1128 Brin -> "brin"
1130 Brin -> "brin"
1130createFunction
1132createFunction
1131− :: (Has sch schemas schema, KnownSymbol fun)
1133+ :: ( Has sch schemas schema
1135+ , SOP.SListI args )
1132 => QualifiedAlias sch fun
1136 => QualifiedAlias sch fun
1133− -> TypeExpression schemas arg
1137+ -> NP (TypeExpression schemas) args
1134 -> TypeExpression schemas ret
1138 -> TypeExpression schemas ret
1135− -> FunctionDefinition schemas arg ret
1139+ -> FunctionDefinition schemas ('Fun args ret)
1136− -> Definition schemas (Alter sch (Create fun ('Function ('UnaryFun arg ret)) schema) schemas)
1140+ -> Definition schemas (Alter sch (Create fun ('Function ('Fun args ret)) schema) schemas)
1137−createFunction fun arg ret fundef = UnsafeDefinition $
1141+createFunction fun args ret fundef = UnsafeDefinition $
1138− "CREATE" <+> "FUNCTION" <+> renderSQL fun <+> parenthesized (renderSQL arg)
1142+ "CREATE" <+> "FUNCTION" <+> renderSQL fun
1143+ <+> parenthesized (renderCommaSeparated renderSQL args)
1139 <+> "RETURNS" <+> renderSQL ret <+> renderSQL fundef <> ";"
1144 <+> "RETURNS" <+> renderSQL ret <+> renderSQL fundef <> ";"
1141createOrReplaceFunction
1146createOrReplaceFunction
1142− :: (Has sch schemas schema, Has fun schema ('Function ('UnaryFun arg ret)))
1147+ :: ( Has sch schemas schema
1148+ , Has fun schema ('Function ('Fun args0 ret0))
1149+ , SOP.SListI args )
1143 => QualifiedAlias sch fun
1150 => QualifiedAlias sch fun
1144− -> TypeExpression schemas arg
1151+ -> NP (TypeExpression schemas) args
1145 -> TypeExpression schemas ret
1152 -> TypeExpression schemas ret
1146− -> FunctionDefinition schemas arg ret
1153+ -> FunctionDefinition schemas ('Fun args ret)
1147− -> Definition schemas (Alter sch (Alter fun ('Function ('UnaryFun arg ret)) schema) schemas)
1154+ -> Definition schemas (Alter sch (Alter fun ('Function ('Fun args ret)) schema) schemas)
1148−createOrReplaceFunction fun arg ret fundef = UnsafeDefinition $
1155+createOrReplaceFunction fun args ret fundef = UnsafeDefinition $
1149− "CREATE" <+> "FUNCTION" <+> renderSQL fun <+> parenthesized (renderSQL arg)
1156+ "CREATE" <+> "OR" <+> "REPLACE" <+> "FUNCTION" <+> renderSQL fun
1157+ <+> parenthesized (renderCommaSeparated renderSQL args)
1150 <+> "RETURNS" <+> renderSQL ret <+> renderSQL fundef <> ";"
1158 <+> "RETURNS" <+> renderSQL ret <+> renderSQL fundef <> ";"
1161+ :: Query '[] '[] schemas args '[col ::: ty]
1162+ -> FunctionDefinition schemas ('Fun arg ret)
1163+languageSql qry = UnsafeFunctionDefinition $
1164+ "language sql as" <+> "$$" <+> renderSQL qry <+> "$$"
1152dropFunction
1166dropFunction
1153 :: (Has sch schemas schema, Has fun schema ('Function funty))
1167 :: (Has sch schemas schema, Has fun schema ('Function funty))
1154 => QualifiedAlias sch fun
1168 => QualifiedAlias sch fun
@@ -1157,10 +1171,10 @@ dropFunction
1157dropFunction fun = UnsafeDefinition $
1171dropFunction fun = UnsafeDefinition $
1158 "DROP" <+> "Function" <+> renderSQL fun <> ";"
1172 "DROP" <+> "Function" <+> renderSQL fun <> ";"
1160−newtype FunctionDefinition schemas arg ret = UnsafeFunctionDefinition
1174+newtype FunctionDefinition schemas funty = UnsafeFunctionDefinition
1161 { renderFunctionDefinition :: ByteString }
1175 { renderFunctionDefinition :: ByteString }
1162 deriving (Eq,Show,GHC.Generic,NFData)
1176 deriving (Eq,Show,GHC.Generic,NFData)
1163−instance RenderSQL (FunctionDefinition schemas arg ret) where
1177+instance RenderSQL (FunctionDefinition schemas funty) where
1164 renderSQL = renderFunctionDefinition
1178 renderSQL = renderFunctionDefinition