join: update library paths, install to new location
[hcoop/portal.git] / init.sig
index 9af4bc6..4c0ffa3 100644 (file)
--- a/init.sig
+++ b/init.sig
@@ -1,6 +1,9 @@
 signature INIT = sig
     structure C : SQL_CLIENT
+    val nullableFromSql : (C.value -> 'a) -> C.value -> 'a option
+    val nullableToSql : ('a -> string) -> 'a option -> string
 
+    val scratchDir : string
     val urlPrefix : string
     val boardEmail : string
 
@@ -10,12 +13,15 @@ signature INIT = sig
     val emailSuffix : string
 
     type user = {id : int, name : string, rname : string, bal : int, joined : C.timestamp,
-                app : int}
+                app : int, shares : int, paypal : string option, checkout : string option }
 
     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
@@ -26,10 +32,12 @@ signature INIT = sig
 
     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 unmigratedUsers : unit -> user list
 
     val validUsername : string -> bool
     val userNameToId : string -> int option
@@ -43,4 +51,23 @@ signature INIT = sig
     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
+
+    val explain : exn -> string
+    val tokens : unit -> string
+    val tokensForked : unit -> unit
+
+    val usersDiff : string list * string list ->
+                   {onlyInFirst : string list, onlyInSecond : string list}
+    val listUsernames : unit -> string list
+    val usersInAfs : unit -> string list
+
+    val searchPaypal : string -> user list
+    val searchCheckout : string -> user list
+    val searchRealName : string -> user list
 end