let
val c = getDb ()
in
- (case C.oneOrNoRows c ($`SELECT id, usr, knd, v, priv Contact WHERE id = ^(C.intToSql id)`) of
+ (case C.oneOrNoRows c ($`SELECT id, usr, knd, v, priv FROM Contact WHERE id = ^(C.intToSql id)`) of
NONE => raise Fail "Contact not found"
| SOME r => mkContactRow r)
end
AND priv <= ^(privToSql priv)
ORDER BY name, v`)
+fun mkKindContactRow r =
+ case r of
+ name :: rest => (C.stringFromSql name, mkContactRow rest)
+ | _ => Init.rowError ("name/contact", r)
+
+fun listContactsByKind (knd, priv) =
+ C.map (getDb ()) mkKindContactRow ($`SELECT name, Contact.id, usr, knd, v, priv
+ FROM Contact JOIN WebUser ON WebUser.id = usr
+ WHERE knd = ^(C.intToSql knd)
+ AND priv <= ^(privToSql priv)
+ ORDER BY name`)
+
fun format (kind : kind, cont : contact) =
case #makeUrl kind of
SOME (pre, post) => String.concat ["<a href=\"", pre, Web.html (#v cont), post, "\">", Web.html (#v cont), "</a>"]