Add all-balance summing and listing of retired balances
[hcoop/zz_old/portal.git] / balance.sml
index 9a1f8b6..9943944 100644 (file)
@@ -54,6 +54,14 @@ fun listOwnedBalances () =
                                           AND WebUser.bal = Balance.id
                                     ORDER BY Balance.name`)
 
+fun listUnownedBalances () =
+    C.map (getDb ()) mkBalanceRow ($`SELECT Balance.id, Balance.name, amount
+                                    FROM Balance LEFT OUTER JOIN WebUser
+                                       ON Balance.name = WebUser.name
+                                          AND WebUser.bal = Balance.id
+                                    WHERE WebUser.id IS NULL
+                                    ORDER BY Balance.name`)
+
 fun validBalanceName name =
     size name <= 20
     andalso CharVector.all (fn ch => Char.isAlpha ch orelse ch = #"+") name
@@ -69,4 +77,12 @@ fun listBalanceUsers bal =
                                  WHERE bal = ^(C.intToSql bal)
                                  ORDER BY name`)
 
+fun sumOwnedBalances () =
+    case C.oneRow (getDb ()) ($`SELECT SUM(amount)
+                               FROM Balance JOIN WebUser
+                                 ON Balance.name = WebUser.name
+                                   AND WebUser.bal = Balance.id`) of
+       [amt] => C.realFromSql amt
+      | _ => raise Fail "sumOwnedBalance: no rows"
+
 end