[d] => C.stringFromSql d
| r => rowError ("dateString", r)
-fun grandfatherUsers () =
- let
- val db = getDb ()
-
- fun mkApp [id, name, rname] =
- let
- val id = C.intFromSql id
- val name = C.stringFromSql name
- val rname = C.stringFromSql rname
-
- val aid = nextSeq (db, "MemberAppSeq")
- in
- ignore (C.dml db ($`INSERT INTO MemberApp (id, name, rname, gname, email, forward, uses, other,
- passwd, status, applied, confirmed, decided, msg)
- VALUES (^(C.intToSql aid), ^(C.stringToSql name), ^(C.stringToSql rname),
- NULL, '^name^(emailSuffix)', FALSE, 'GRANDFATHERED', 'GRANDFATHERED',
- 'GRANDFATHERED', 4, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP,
- CURRENT_TIMESTAMP, 'GRANDFATHERED')`));
- ignore (C.dml db ($`UPDATE WebUser SET app = ^(C.intToSql aid) WHERE id = ^(C.intToSql id)`))
- end
- in
- C.app db mkApp "SELECT id, name, rname FROM WebUser WHERE app IS NULL"
- end
-
type node = {id : int, name : string, descr : string, debian : string}
fun mkNodeRow [id, name, descr, debian] =
OS.Process.exit OS.Process.success)
| _ => ignore (OS.Process.system "/usr/bin/tokens >/tmp/tokens.parent")
-fun unmigratedUsers () =
- List.filter (fn user =>
- (ignore (Posix.SysDB.getpwnam (#name user));
- false)
- handle OS.SysErr _ => true) (listActiveUsers ())
-
fun usersDiff (ls1, ls2) =
{onlyInFirst = List.filter (fn x => not (Util.mem (x, ls2))) ls1,
onlyInSecond = List.filter (fn x => not (Util.mem (x, ls1))) ls2}