diff options
author | Benjamin Barenblat <bbaren@mit.edu> | 2017-07-23 09:50:04 -0400 |
---|---|---|
committer | Benjamin Barenblat <bbaren@mit.edu> | 2017-07-23 09:50:04 -0400 |
commit | 0cccdb0ae595cd7e3e136e984ac7b95b99f71a53 (patch) | |
tree | 491d3b13813610943c60460d3e178d3a73916346 /demo/noisy.ur |
Import urweb_20170720+dfsg.orig.tar.gz
[dgit import orig urweb_20170720+dfsg.orig.tar.gz]
Diffstat (limited to 'demo/noisy.ur')
-rw-r--r-- | demo/noisy.ur | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/demo/noisy.ur b/demo/noisy.ur new file mode 100644 index 0000000..caf5240 --- /dev/null +++ b/demo/noisy.ur @@ -0,0 +1,43 @@ +datatype list t = Nil | Cons of t * list t + +table t : { Id : int, A : string } + PRIMARY KEY Id + +fun add id s = + dml (INSERT INTO t (Id, A) VALUES ({[id]}, {[s]})) + +fun del id = + dml (DELETE FROM t WHERE t.Id = {[id]}) + +fun lookup id = + ro <- oneOrNoRows (SELECT t.A FROM t WHERE t.Id = {[id]}); + case ro of + None => return None + | Some r => return (Some r.T.A) + +fun check ls = + case ls of + Nil => return () + | Cons (id, ls') => + ao <- rpc (lookup id); + alert (case ao of + None => "Nada" + | Some a => a); + check ls' + +fun main () = + idAdd <- source ""; + aAdd <- source ""; + + idDel <- source ""; + + return <xml><body> + <button value="Check values of 1, 2, and 3" onclick={fn _ => check (Cons (1, Cons (2, Cons (3, Nil))))}/><br/> + <br/> + <button value="Add" onclick={fn _ => id <- get idAdd; a <- get aAdd; rpc (add (readError id) a)}/> + <ctextbox source={idAdd}/> + <ctextbox source={aAdd}/><br/> + <br/> + <button value="Delete" onclick={fn _ => id <- get idDel; rpc (del (readError id))}/> + <ctextbox source={idDel}/> + </body></xml> |