2 structure C : SQL_CLIENT
3 val nullableFromSql : (C.value -> 'a) -> C.value -> 'a option
4 val nullableToSql : ('a -> string) -> 'a option -> string
6 val scratchDir : string
8 val boardEmail : string
10 exception Access of string
13 val emailSuffix : string
15 type user = {id : int, name : string, rname : string, bal : int, joined : C.timestamp,
16 app : int, shares : int, paypal : string option, checkout : string option }
18 val rowError : string * C.value list -> 'a
20 val mkUserRow : C.value list -> user
22 (* Direct access to database connections *)
23 val conn : unit -> C.conn
25 (* Open or close a session, wrapped in a transaction *)
26 val init : unit -> unit
27 val done : unit -> unit
29 val nextSeq : C.conn * string -> int
33 val lookupUser : int -> user
34 val listUsers : unit -> user list
35 val addUser : string * string * int * int * int -> int
36 (* Pass name, real name, balance ID, and share count *)
37 val modUser : user -> unit
38 val deleteUser : int -> string
39 val byPledge : unit -> user list
40 val unmigratedUsers : unit -> user list
42 val validUsername : string -> bool
43 val userNameToId : string -> int option
45 val getDb : unit -> C.conn
47 val getUser : unit -> user
48 val getUserId : unit -> int
49 val getUserName : unit -> string
51 val dateString : unit -> string
53 val grandfatherUsers : unit -> unit
55 type node = {id : int, name : string, descr : string, debian : string}
57 val listNodes : unit -> node list
58 val nodeName : int -> string
59 val nodeDebian : int -> string
61 val explain : exn -> string
62 val tokens : unit -> string
63 val tokensForked : unit -> unit
65 val usersDiff : string list * string list ->
66 {onlyInFirst : string list, onlyInSecond : string list}
67 val listUsernames : unit -> string list
68 val usersInAfs : unit -> string list
70 val searchPaypal : string -> user list
71 val searchCheckout : string -> user list
72 val searchRealName : string -> user list