# HG changeset patch # User Adam Chlipala # Date 1256058522 14400 # Node ID c6e948ec79e9d8e28b34b9a93fbcbcd24b22225a # Parent a87495bcaeec2f935967834c26c9c97679663a21 Saving changes to user list diff -r a87495bcaeec -r c6e948ec79e9 demo/more/bulkEdit.ur --- a/demo/more/bulkEdit.ur Tue Oct 20 12:48:53 2009 -0400 +++ b/demo/more/bulkEdit.ur Tue Oct 20 13:08:42 2009 -0400 @@ -4,6 +4,8 @@ con keyName :: Name con keyType :: Type val showKey : show keyType + val readKey : read keyType + val injKey : sql_injectable keyType con visible :: {(Type * Type)} constraint [keyName] ~ visible @@ -21,6 +23,11 @@ open M + fun ensql [avail] (r : $(map snd visible)) : $(map (sql_exp avail [] []) (map fst visible)) = + map2 [meta] [snd] [fn ts :: (Type * Type) => sql_exp avail [] [] ts.1] + (fn [ts] meta v => @sql_inject meta.Inject (meta.Parse v)) + [_] folder visible r + fun main () = items <- queryX (SELECT t.{keyName}, t.{{map fst visible}} FROM t) (fn r => @@ -45,7 +52,15 @@ (fn [nm :: Name] [p :: (Type * Type)] [rest :: {(Type * Type)}] [[nm] ~ rest] m => {[m.Nam]}) [_] folder visible} {items} + + and save r = + List.app (fn user => dml (update [map fst visible] ! + (ensql (user -- keyName)) + t + (WHERE t.{keyName} = {[readError user.keyName]}))) r.Users; + main () + end diff -r a87495bcaeec -r c6e948ec79e9 demo/more/bulkEdit.urs --- a/demo/more/bulkEdit.urs Tue Oct 20 12:48:53 2009 -0400 +++ b/demo/more/bulkEdit.urs Tue Oct 20 13:08:42 2009 -0400 @@ -2,6 +2,8 @@ con keyName :: Name con keyType :: Type val showKey : show keyType + val readKey : read keyType + val injKey : sql_injectable keyType con visible :: {(Type * Type)} constraint [keyName] ~ visible diff -r a87495bcaeec -r c6e948ec79e9 demo/more/conference.urp --- a/demo/more/conference.urp Tue Oct 20 12:48:53 2009 -0400 +++ b/demo/more/conference.urp Tue Oct 20 13:08:42 2009 -0400 @@ -1,5 +1,6 @@ $/option +$/list meta bulkEdit conference