| 1 | signature INIT = sig |
| 2 | structure C : SQL_CLIENT |
| 3 | val nullableFromSql : (C.value -> 'a) -> C.value -> 'a option |
| 4 | val nullableToSql : ('a -> string) -> 'a option -> string |
| 5 | |
| 6 | val scratchDir : string |
| 7 | val urlPrefix : string |
| 8 | val boardEmail : string |
| 9 | |
| 10 | exception Access of string |
| 11 | exception NeedTos |
| 12 | |
| 13 | val emailSuffix : string |
| 14 | |
| 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 } |
| 17 | |
| 18 | val rowError : string * C.value list -> 'a |
| 19 | |
| 20 | val mkUserRow : C.value list -> user |
| 21 | |
| 22 | (* Direct access to database connections *) |
| 23 | val conn : unit -> C.conn |
| 24 | |
| 25 | (* Open or close a session, wrapped in a transaction *) |
| 26 | val init : unit -> unit |
| 27 | val done : unit -> unit |
| 28 | |
| 29 | val nextSeq : C.conn * string -> int |
| 30 | |
| 31 | (* Fun with users *) |
| 32 | |
| 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 | |
| 41 | val validUsername : string -> bool |
| 42 | val userNameToId : string -> int option |
| 43 | |
| 44 | val getDb : unit -> C.conn |
| 45 | |
| 46 | val getUser : unit -> user |
| 47 | val getUserId : unit -> int |
| 48 | val getUserName : unit -> string |
| 49 | |
| 50 | val dateString : unit -> string |
| 51 | |
| 52 | type node = {id : int, name : string, descr : string, debian : string} |
| 53 | |
| 54 | val listNodes : unit -> node list |
| 55 | val nodeName : int -> string |
| 56 | val nodeDebian : int -> string |
| 57 | |
| 58 | val explain : exn -> string |
| 59 | val tokens : unit -> string |
| 60 | val tokensForked : unit -> unit |
| 61 | |
| 62 | val usersDiff : string list * string list -> |
| 63 | {onlyInFirst : string list, onlyInSecond : string list} |
| 64 | val listUsernames : unit -> string list |
| 65 | val usersInAfs : unit -> string list |
| 66 | |
| 67 | val searchPaypal : string -> user list |
| 68 | val searchCheckout : string -> user list |
| 69 | val searchRealName : string -> user list |
| 70 | end |