Mercurial > urweb
annotate demo/tree.ur @ 714:0f42461273cf
CHECK constraints
author | Adam Chlipala <adamc@hcoop.net> |
---|---|
date | Thu, 09 Apr 2009 15:30:15 -0400 |
parents | 1a317a707d71 |
children | 1db127b245ed |
rev | line source |
---|---|
adamc@471 | 1 sequence s |
adamc@469 | 2 table t : { Id : int, Parent : option int, Nam : string } |
adamc@708 | 3 PRIMARY KEY Id |
adamc@469 | 4 |
adamc@469 | 5 open TreeFun.Make(struct |
adamc@469 | 6 val tab = t |
adamc@469 | 7 end) |
adamc@469 | 8 |
adamc@469 | 9 fun row r = <xml> |
adamc@471 | 10 #{[r.Id]}: {[r.Nam]} <a link={del r.Id}>[Delete]</a> |
adamc@471 | 11 |
adamc@471 | 12 <form> |
adamc@471 | 13 Add child: <textbox{#Nam}/> <submit action={add (Some r.Id)}/> |
adamc@471 | 14 </form> |
adamc@469 | 15 </xml> |
adamc@469 | 16 |
adamc@471 | 17 and main () = |
adamc@469 | 18 xml <- tree row None; |
adamc@469 | 19 return <xml><body> |
adamc@469 | 20 {xml} |
adamc@471 | 21 |
adamc@471 | 22 <form> |
adamc@471 | 23 Add a top-level node: <textbox{#Nam}/> <submit action={add None}/> |
adamc@471 | 24 </form> |
adamc@469 | 25 </body></xml> |
adamc@471 | 26 |
adamc@471 | 27 and add parent r = |
adamc@471 | 28 id <- nextval s; |
adamc@471 | 29 dml (INSERT INTO t (Id, Parent, Nam) VALUES ({[id]}, {[parent]}, {[r.Nam]})); |
adamc@471 | 30 main () |
adamc@471 | 31 |
adamc@471 | 32 and del id = |
adamc@471 | 33 dml (DELETE FROM t WHERE Id = {[id]}); |
adamc@471 | 34 main () |