A bundle of minor improvements
[hcoop/portal.git] / init.sig
CommitLineData
208e2cbc
AC
1signature INIT = sig
2 structure C : SQL_CLIENT
d5f8418b
AC
3 val nullableFromSql : (C.value -> 'a) -> C.value -> 'a option
4 val nullableToSql : ('a -> string) -> 'a option -> string
208e2cbc 5
e84acecc 6 val scratchDir : string
edeb626e 7 val urlPrefix : string
6f91863c 8 val boardEmail : string
edeb626e 9
208e2cbc 10 exception Access of string
f3f3ad24 11 exception NeedTos
208e2cbc 12
93f77ca7
AC
13 val emailSuffix : string
14
f3f3ad24 15 type user = {id : int, name : string, rname : string, bal : int, joined : C.timestamp,
d5f8418b 16 app : int, shares : int, paypal : string option, checkout : string option }
208e2cbc 17
ee587f7f
AC
18 val rowError : string * C.value list -> 'a
19
20 val mkUserRow : C.value list -> user
208e2cbc 21
dda99898
AC
22 (* Direct access to database connections *)
23 val conn : unit -> C.conn
24
208e2cbc
AC
25 (* Open or close a session, wrapped in a transaction *)
26 val init : unit -> unit
27 val done : unit -> unit
28
ee587f7f 29 val nextSeq : C.conn * string -> int
208e2cbc
AC
30
31 (* Fun with users *)
32
33 val lookupUser : int -> user
34 val listUsers : unit -> user list
aaa50197
AC
35 val addUser : string * string * int * int * int -> int
36 (* Pass name, real name, balance ID, and share count *)
208e2cbc
AC
37 val modUser : user -> unit
38 val deleteUser : int -> string
aaa50197 39 val byPledge : unit -> user list
60754922 40 val unmigratedUsers : unit -> user list
208e2cbc
AC
41
42 val validUsername : string -> bool
43 val userNameToId : string -> int option
44
45 val getDb : unit -> C.conn
46
47 val getUser : unit -> user
48 val getUserId : unit -> int
49 val getUserName : unit -> string
98a5f121
AC
50
51 val dateString : unit -> string
f3f3ad24
AC
52
53 val grandfatherUsers : unit -> unit
18eeb749
AC
54
55 type node = {id : int, name : string, descr : string, debian : string}
56
57 val listNodes : unit -> node list
58 val nodeName : int -> string
59 val nodeDebian : int -> string
30b8ceb4
AC
60
61 val explain : exn -> string
62 val tokens : unit -> string
63 val tokensForked : unit -> unit
59eb5381
AC
64
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
d5f8418b
AC
69
70 val searchPaypal : string -> user list
71 val searchCheckout : string -> user list
b1bb018a 72 val searchRealName : string -> user list
93f77ca7 73end