val modBalance : balance -> unit
val deleteBalance : int -> unit
val listBalances : unit -> balance list
+ val listOwnedBalances : unit -> balance list
val listBalanceUsers : int -> Init.user list
val validBalanceName : string -> bool
val balanceNameToId : string -> int option
-end
\ No newline at end of file
+end
fun listBalances () =
C.map (getDb ()) mkBalanceRow ($`SELECT id, name, amount FROM Balance
- ORDER BY name`)
+ ORDER BY name`)
+
+fun listOwnedBalances () =
+ C.map (getDb ()) mkBalanceRow ($`SELECT Balance.id, Balance.name, amount
+ FROM Balance JOIN WebUser
+ ON Balance.name = WebUser.name
+ AND WebUser.bal = Balance.id
+ ORDER BY Balance.name`)
fun validBalanceName name =
size name <= 20
WHERE bal = ^(C.intToSql bal)
ORDER BY name`)
-end
\ No newline at end of file
+end
<h3><b>Balances</b></h3>
<table>
-<% foreach bal in Balance.listBalances () do %>
+<% foreach bal in Balance.listOwnedBalances () do %>
<tr><td><% #name bal %></td> <td><% #amount bal %></td> <td>
<% switch Balance.listBalanceUsers (#id bal) of
[] =>
fun getEmail [name] = C.stringFromSql name ^ emailSuffix
| getEmail row = raise Fail "remind getName"
- val names = C.map db getEmail "SELECT WebUser.name FROM WebUser JOIN Balance ON Balance.name = WebUser.name WHERE amount < 10"
+ val names = C.map db getEmail "SELECT WebUser.name FROM WebUser JOIN Balance ON Balance.name = WebUser.name AND bal = Balance.id WHERE amount < 10"
val m = Mail.mopen ()
in