Commit | Line | Data |
---|---|---|
88a858ea AC |
1 | structure Link :> LINK = |
2 | struct | |
3 | ||
4 | open Util Sql Init | |
5 | ||
6 | type link = {id : int, usr : int, title : string, url : string, descr : string} | |
7 | ||
8 | fun mkLinkRow [id, usr, title, url, descr] = | |
9 | {id = C.intFromSql id, usr = C.intFromSql usr, title = C.stringFromSql title, | |
10 | url = C.stringFromSql url, descr = C.stringFromSql descr} | |
11 | | mkLinkRow row = rowError ("link", row) | |
12 | ||
13 | fun lookupLink id = | |
14 | mkLinkRow (C.oneRow (getDb ()) ($`SELECT id, usr, title, url, descr | |
15 | FROM Link | |
16 | WHERE id = ^(C.intToSql id)`)) | |
17 | ||
18 | fun mkLinkRow' (name :: rest) = (C.stringFromSql name, mkLinkRow rest) | |
19 | | mkLinkRow' row = Init.rowError ("user'", row) | |
20 | ||
21 | fun listLinks () = | |
22 | C.map (getDb ()) mkLinkRow' ($`SELECT name, Link.id, usr, title, url, descr | |
23 | FROM Link JOIN WebUser ON usr = WebUser.id | |
24 | ORDER BY title`) | |
25 | ||
26 | fun listUserLinks usr = | |
27 | C.map (getDb ()) mkLinkRow ($`SELECT id, usr, title, url, descr | |
28 | FROM Link | |
29 | WHERE usr = ^(C.intToSql usr) | |
30 | ORDER BY title`) | |
31 | ||
32 | fun addLink (usr, title, url, descr) = | |
33 | let | |
34 | val db = getDb () | |
35 | val id = nextSeq (db, "LinkSeq") | |
36 | in | |
37 | C.dml db ($`INSERT INTO Link (id, usr, title, url, descr) | |
38 | VALUES (^(C.intToSql id), ^(C.intToSql usr), ^(C.stringToSql title), ^(C.stringToSql url), ^(C.stringToSql descr))`); | |
39 | id | |
40 | end | |
41 | ||
42 | fun modLink (link : link) = | |
43 | let | |
44 | val db = getDb () | |
45 | in | |
46 | ignore (C.dml db ($`UPDATE Link SET | |
47 | usr = ^(C.intToSql (#usr link)), title = ^(C.stringToSql (#title link)), | |
48 | url = ^(C.stringToSql (#url link)), descr = ^(C.stringToSql (#descr link)) | |
49 | WHERE id = ^(C.intToSql (#id link))`)) | |
50 | end | |
51 | ||
52 | fun deleteLink id = | |
53 | ignore (C.dml (getDb ()) ($`DELETE FROM Link WHERE id = ^(C.intToSql id)`)) | |
54 | ||
55 | end |