summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/basis.urs22
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/basis.urs b/lib/basis.urs
index 3bd2459c..4cd2f6da 100644
--- a/lib/basis.urs
+++ b/lib/basis.urs
@@ -198,6 +198,28 @@ val query : tables ::: {{Type}} -> exps ::: {Type} -> tables ~ exps
-> transaction state
+(*** Database mutators *)
+
+type dml
+val dml : dml -> transaction unit
+
+val insert : fields ::: {Type}
+ -> sql_table fields
+ -> $fields
+ -> dml
+
+val update : changed ::: {Type} -> unchanged ::: {Type} -> changed ~ unchanged
+ -> sql_table (changed ++ unchanged)
+ -> $changed
+ -> sql_exp [T = changed ++ unchanged] [] [] bool
+ -> dml
+
+val delete : fields ::: {Type}
+ -> sql_table fields
+ -> sql_exp [T = fields] [] [] bool
+ -> dml
+
+
(** XML *)
con tag :: {Type} -> {Unit} -> {Unit} -> {Type} -> {Type} -> Type