| 1 | signature INIT = sig |
| 2 | structure C : SQL_CLIENT |
| 3 | |
| 4 | val scratchDir : string |
| 5 | val urlPrefix : string |
| 6 | val boardEmail : string |
| 7 | |
| 8 | exception Access of string |
| 9 | exception NeedTos |
| 10 | |
| 11 | val emailSuffix : string |
| 12 | |
| 13 | type user = {id : int, name : string, rname : string, bal : int, joined : C.timestamp, |
| 14 | app : int, shares : int} |
| 15 | |
| 16 | val rowError : string * C.value list -> 'a |
| 17 | |
| 18 | val mkUserRow : C.value list -> user |
| 19 | |
| 20 | (* Direct access to database connections *) |
| 21 | val conn : unit -> C.conn |
| 22 | |
| 23 | (* Open or close a session, wrapped in a transaction *) |
| 24 | val init : unit -> unit |
| 25 | val done : unit -> unit |
| 26 | |
| 27 | val nextSeq : C.conn * string -> int |
| 28 | |
| 29 | (* Fun with users *) |
| 30 | |
| 31 | val lookupUser : int -> user |
| 32 | val listUsers : unit -> user list |
| 33 | val addUser : string * string * int * int * int -> int |
| 34 | (* Pass name, real name, balance ID, and share count *) |
| 35 | val modUser : user -> unit |
| 36 | val deleteUser : int -> string |
| 37 | val byPledge : unit -> user list |
| 38 | |
| 39 | val validUsername : string -> bool |
| 40 | val userNameToId : string -> int option |
| 41 | |
| 42 | val getDb : unit -> C.conn |
| 43 | |
| 44 | val getUser : unit -> user |
| 45 | val getUserId : unit -> int |
| 46 | val getUserName : unit -> string |
| 47 | |
| 48 | val dateString : unit -> string |
| 49 | |
| 50 | val grandfatherUsers : unit -> unit |
| 51 | end |