1 structure Link
:> LINK
=
6 type link
= {id
: int, usr
: int, title
: string, url
: string, descr
: string}
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
)
14 mkLinkRow (C
.oneRow (getDb ()) ($`SELECT id
, usr
, title
, url
, descr
16 WHERE id
= ^
(C
.intToSql id
)`
))
18 fun mkLinkRow
' (name
:: rest
) = (C
.stringFromSql name
, mkLinkRow rest
)
19 | mkLinkRow
' row
= Init
.rowError ("user'", row
)
22 C
.map (getDb ()) mkLinkRow
' ($`SELECT name
, Link
.id
, usr
, title
, url
, descr
23 FROM Link JOIN WebUser ON usr
= WebUser
.id
26 fun listUserLinks usr
=
27 C
.map (getDb ()) mkLinkRow ($`SELECT id
, usr
, title
, url
, descr
29 WHERE usr
= ^
(C
.intToSql usr
)
32 fun addLink (usr
, title
, url
, descr
) =
35 val id
= nextSeq (db
, "LinkSeq")
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
))`
);
42 fun modLink (link
: link
) =
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
))`
))
53 ignore (C
.dml (getDb ()) ($`DELETE FROM Link WHERE id
= ^
(C
.intToSql id
)`
))