| 1 | structure Pref :> PREF = |
| 2 | struct |
| 3 | |
| 4 | open Util Sql Init |
| 5 | |
| 6 | fun hasDirectory usr = |
| 7 | case C.oneOrNoRows (getDb ()) ($`SELECT * FROM DirectoryPref WHERE usr = ^(C.intToSql usr)`) of |
| 8 | NONE => false |
| 9 | | _ => true |
| 10 | |
| 11 | fun setDirectory usr = |
| 12 | if hasDirectory usr then |
| 13 | () |
| 14 | else |
| 15 | ignore (C.dml (getDb ()) ($`INSERT INTO DirectoryPref (usr) VALUES (^(C.intToSql usr))`)) |
| 16 | |
| 17 | fun unsetDirectory usr = |
| 18 | ignore (C.dml (getDb ()) ($`DELETE FROM DirectoryPref WHERE usr = ^(C.intToSql usr)`)) |
| 19 | |
| 20 | fun subscribed (list, address) = OS.Process.isSuccess (OS.Process.system (String.concat |
| 21 | ["/usr/bin/sudo -u list /usr/local/sbin/portalsub ", |
| 22 | list, |
| 23 | " check ", |
| 24 | address])) |
| 25 | |
| 26 | fun subscribe (list, address) = OS.Process.isSuccess (OS.Process.system (String.concat |
| 27 | ["/usr/bin/sudo -u list /usr/local/sbin/portalsub ", |
| 28 | list, |
| 29 | " add ", |
| 30 | address])) |
| 31 | |
| 32 | fun unsubscribe (list, address) = OS.Process.isSuccess (OS.Process.system (String.concat |
| 33 | ["/usr/bin/sudo -u list /usr/local/sbin/portalsub ", |
| 34 | list, |
| 35 | " rm ", |
| 36 | address])) |
| 37 | |
| 38 | end |