val emailSuffix : string
type user = {id : int, name : string, rname : string, bal : int, joined : C.timestamp,
- app : int}
+ app : int, shares : int}
val rowError : string * C.value list -> 'a
val mkUserRow : C.value list -> user
+ (* Direct access to database connections *)
+ val conn : unit -> C.conn
+
(* Open or close a session, wrapped in a transaction *)
val init : unit -> unit
val done : unit -> unit
val lookupUser : int -> user
val listUsers : unit -> user list
- val addUser : string * string * int * int -> int
- (* Pass name, real name, and balance ID *)
+ val addUser : string * string * int * int * int -> int
+ (* Pass name, real name, balance ID, and share count *)
val modUser : user -> unit
val deleteUser : int -> string
+ val byPledge : unit -> user list
val validUsername : string -> bool
val userNameToId : string -> int option
val dateString : unit -> string
val grandfatherUsers : unit -> unit
+
+ type node = {id : int, name : string, descr : string, debian : string}
+
+ val listNodes : unit -> node list
+ val nodeName : int -> string
+ val nodeDebian : int -> string
end