diff demo/crud.urs @ 421:0767d7ad0c3a

Crud demo
author Adam Chlipala <adamc@hcoop.net>
date Thu, 23 Oct 2008 18:18:51 -0400
parents
children d64533157f40
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/demo/crud.urs	Thu Oct 23 18:18:51 2008 -0400
@@ -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