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
| _ => NONE
fun listBalanceUsers bal =
- C.map (getDb ()) mkUserRow ($`SELECT id, name, rname, bal, joined, app
+ C.map (getDb ()) mkUserRow ($`SELECT id, name, rname, bal, joined, app, shares
FROM WebUser
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