Mercurial > urweb
annotate tests/rpcO.ur @ 641:b98f547a6a45
RPC returning an option
author | Adam Chlipala <adamc@hcoop.net> |
---|---|
date | Sun, 08 Mar 2009 13:41:55 -0400 |
parents | |
children |
rev | line source |
---|---|
adamc@641 | 1 table t : {A : int} |
adamc@641 | 2 |
adamc@641 | 3 fun main () : transaction page = |
adamc@641 | 4 let |
adamc@641 | 5 fun check () = |
adamc@641 | 6 r <- oneRow (SELECT SUM(t.A) AS X FROM t); |
adamc@641 | 7 return (if r.X < 0 then |
adamc@641 | 8 (Some 3, None) |
adamc@641 | 9 else |
adamc@641 | 10 (None, Some "Hi")) |
adamc@641 | 11 |
adamc@641 | 12 fun show (t ::: Type) (_ : show t) (opt : option t) = |
adamc@641 | 13 case opt of |
adamc@641 | 14 None => <xml>None</xml> |
adamc@641 | 15 | Some v => <xml>{[v]}</xml> |
adamc@641 | 16 in |
adamc@641 | 17 s <- source (None, None); |
adamc@641 | 18 return <xml><body> |
adamc@641 | 19 <button value="Get It On!" |
adamc@641 | 20 onclick={r <- check (); |
adamc@641 | 21 set s r}/><br/> |
adamc@641 | 22 <br/> |
adamc@641 | 23 Current: <dyn signal={p <- signal s; return <xml>{show p.1}, {show p.2}</xml>}/> |
adamc@641 | 24 </body></xml> |
adamc@641 | 25 end |