aboutsummaryrefslogtreecommitdiffhomepage
path: root/demo/crud.urs
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adamc@hcoop.net>2008-10-23 18:18:51 -0400
committerGravatar Adam Chlipala <adamc@hcoop.net>2008-10-23 18:18:51 -0400
commitfbde7928c43149e02806949343783dc6e885ab0f (patch)
treef6923214e0d8e9d058c248ab817aa08aba5fd2f9 /demo/crud.urs
parentc083f2b0659545c9a0f36faf1a56239f4efc8df2 (diff)
Crud demo
Diffstat (limited to 'demo/crud.urs')
-rw-r--r--demo/crud.urs26
1 files changed, 26 insertions, 0 deletions
diff --git a/demo/crud.urs b/demo/crud.urs
new file mode 100644
index 00000000..33090421
--- /dev/null
+++ b/demo/crud.urs
@@ -0,0 +1,26 @@
+con colMeta = fn t_formT :: (Type * Type) =>
+ {Nam : string,
+ Show : t_formT.1 -> xbody,
+ Widget : nm :: Name -> xml form [] [nm = t_formT.2],
+ WidgetPopulated : nm :: Name -> t_formT.1
+ -> xml form [] [nm = t_formT.2],
+ Parse : t_formT.2 -> t_formT.1,
+ Inject : sql_injectable t_formT.1}
+con colsMeta = fn cols :: {(Type * Type)} => $(mapT2T colMeta cols)
+
+val int : string -> colMeta (int, string)
+val float : string -> colMeta (float, string)
+val string : string -> colMeta (string, string)
+val bool : string -> colMeta (bool, bool)
+
+functor Make(M : sig
+ con cols :: {(Type * Type)}
+ constraint [Id] ~ cols
+ val tab : sql_table ([Id = int] ++ mapT2T fstTT cols)
+
+ val title : string
+
+ val cols : colsMeta cols
+ end) : sig
+ val main : unit -> transaction page
+end