diff demo/sql.ur @ 410:c5a3d223f157

Sql demo
author Adam Chlipala <adamc@hcoop.net>
date Tue, 21 Oct 2008 18:44:52 -0400
parents
children c471345f5165
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/demo/sql.ur	Tue Oct 21 18:44:52 2008 -0400
@@ -0,0 +1,52 @@
+table t : { A : int, B : float, C : string, D : bool }
+
+fun list () =
+    rows <- queryX (SELECT * FROM t)
+            (fn row => <xml><tr>
+              <td>{[row.T.A]}</td> <td>{[row.T.B]}</td> <td>{[row.T.C]}</td> <td>{[row.T.D]}</td>
+              <td><a link={delete row.T.A}>[delete]</a></td>
+            </tr></xml>);
+    return <xml>
+      <table border=1>
+        <tr> <th>A</th> <th>B</th> <th>C</th> <th>D</th> </tr>
+        {rows}
+      </table>
+
+      <br/><hr/><br/>
+
+      <form>
+        <table>
+          <tr> <th>A:</th> <td><textbox{#A}/></td> </tr>
+          <tr> <th>B:</th> <td><textbox{#B}/></td> </tr>
+          <tr> <th>C:</th> <td><textbox{#C}/></td> </tr>
+          <tr> <th>D:</th> <td><checkbox{#D}/></td> </tr>
+          <tr> <th/> <td><submit action={add} value="Add Row"/></td> </tr>
+        </table>
+      </form>
+    </xml>
+
+and add r =
+    () <- dml (INSERT INTO t (A, B, C, D)
+               VALUES ({readError r.A}, {readError r.B}, {r.C}, {r.D}));
+    xml <- list ();
+    return <xml><body>
+      <p>Row added.</p>
+
+      {xml}
+    </body></xml>
+
+and delete a =
+    () <- dml (DELETE FROM t
+               WHERE t.A = {a});
+    xml <- list ();
+    return <xml><body>
+      <p>Row deleted.</p>
+
+      {xml}
+    </body></xml>
+
+fun main () =
+    xml <- list ();
+    return <xml><body>
+      {xml}
+    </body></xml>