annotate demo/batchFun.urs @ 986:d1dbb9a3c804

Mangle local table names to avoid keyword clashes in SQL
author Adam Chlipala <adamc@hcoop.net>
date Mon, 05 Oct 2009 12:51:17 -0400
parents 1fb318c17546
children bb3fc575cfe7
rev   line source
adamc@650 1 con colMeta = fn t_state :: (Type * Type) =>
adamc@650 2 {Nam : string,
adamc@650 3 Show : t_state.1 -> xbody,
adamc@650 4 Inject : sql_injectable t_state.1,
adamc@650 5
adamc@650 6 NewState : transaction t_state.2,
adamc@650 7 Widget : t_state.2 -> xbody,
adamc@650 8 ReadState : t_state.2 -> transaction t_state.1}
adamc@650 9 con colsMeta = fn cols :: {(Type * Type)} => $(map colMeta cols)
adamc@650 10
adamc@650 11 val int : string -> colMeta (int, source string)
adamc@650 12 val float : string -> colMeta (float, source string)
adamc@650 13 val string : string -> colMeta (string, source string)
adamc@650 14
adamc@650 15 functor Make(M : sig
adamc@650 16 con cols :: {(Type * Type)}
adamc@650 17 constraint [Id] ~ cols
adamc@650 18 val fl : folder cols
adamc@650 19
adamc@706 20 table tab : ([Id = int] ++ map fst cols)
adamc@650 21
adamc@650 22 val title : string
adamc@650 23
adamc@650 24 val cols : colsMeta cols
adamc@650 25 end) : sig
adamc@650 26 val main : unit -> transaction page
adamc@650 27 end