(html (head (title "sph-lib (sph sql)") (link (@ (rel "stylesheet") (type "text/css") (href "/css/sph.css"))) (meta (@ (name "viewport") (content "width=device-width,initial-scale=1"))) #f) (body () (div (@ (class top)) (nav (a (@ (href "/")) "start") ", " (a (@ (href "/feed.xml")) "feed")) "") (div (@ (class "middle")) (div (@ (class mtime) (title "last modification time of the current page")) "2023-04-05") (section (h1 "(sph sql)") (div (p "create sql-statements from scheme data") (p "part of " (a (@ (href "../../sph-lib.html")) "sph-lib")) (#f (section (@ (class "library-name")) (h1 "module name") (p "(sph sql)")) (section (@ (class "library-exports")) (h1 "exported bindings") (div (div (@ (class "doc-bindings")) (div (@ (id "doc-b-" "sph-sql-description") (class "doc-b")) (div (span (@ (class "type")) "variable") ": " (span (@ (class "name")) "sph-sql-description")) "" "") (div (@ (id "doc-b-" "sql-columns") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "sql-columns") " " (span (@ (class "first-sig")) "columns ->")) (div (@ (class "rest-sig")) (div "pair/list/string/boolean -> string")) (div (@ (class "description")) (("construct the \\\"column\\\" part of an sql expression")))) (div (@ (id "doc-b-" "sql-columns-list") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "sql-columns-list") " " (span (@ (class "first-sig")) "columns ->")) (div (@ (class "rest-sig")) (div "(pair/list/string ...) -> list")) "") (div (@ (id "doc-b-" "sql-create-index") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "sql-create-index") " " (span (@ (class "first-sig")) "name table-name columns [replace] ->")) (div (@ (class "rest-sig")) (div "string string string ... -> string")) "") (div (@ (id "doc-b-" "sql-create-table") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "sql-create-table") " " (span (@ (class "first-sig")) "table-name columns [replace add] ->")) "" (div (@ (class "description")) (("string ((name type options ...)/string ...) [boolean string:custom-suffix]")))) (div (@ (id "doc-b-" "sql-delete") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "sql-delete") " " (span (@ (class "first-sig")) "table-name [where options] ->")) (div (@ (class "rest-sig")) (div "string sql-where sql-options -> string")) "") (div (@ (id "doc-b-" "sql-delete-table") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "sql-delete-table") " " (span (@ (class "first-sig")) "table-name ->")) (div (@ (class "rest-sig")) (div "string -> string")) "") (div (@ (id "doc-b-" "sql-insert") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "sql-insert") " " (span (@ (class "first-sig")) "table-name data [options] ->")) (div (@ (class "rest-sig")) (div "string string/boolean/((column-name . data) ...) -> string")) "") (div (@ (id "doc-b-" "sql-insert-values") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "sql-insert-values") " " (span (@ (class "first-sig")) "a ->")) (div (@ (class "rest-sig")) (div "alist -> string")) (div (@ (class "description")) (("convert to a sql values specification for the insert statement" (br) "((a . 1) (b . 2)) -> (a,b)values(1,2)")))) (div (@ (id "doc-b-" "sql-select") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "sql-select") " " (span (@ (class "first-sig")) "tables [columns where options] ->")) (div (@ (class "rest-sig")) (div "string/(string ...) [string/(string ...)/boolean:all-columns string/list/pair string/list] -> string")) "") (div (@ (id "doc-b-" "sql-string") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "sql-string") " " (span (@ (class "first-sig")) "a ->")) (div (@ (class "rest-sig")) (div "string -> string")) (div (@ (class "description")) (("escapes string values for sql")))) (div (@ (id "doc-b-" "sql-update") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "sql-update") " " (span (@ (class "first-sig")) "table-name set [where options] ->")) (div (@ (class "rest-sig")) (div "string pair/list/string sql-where list -> string")) (div (@ (class "description")) (("example: (sql-update \\\"table-name\\\" ((a . 1) (b . 2))) -> \\\"update table-name set a=1 and b=2\\\"")))) (div (@ (id "doc-b-" "sql-value") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "sql-value") " " (span (@ (class "first-sig")) "a ->")) (div (@ (class "rest-sig")) (div "any -> string")) (div (@ (class "description")) (("convert types, escape and quote strings")))) (div (@ (id "doc-b-" "sql-where") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "sql-where") " " (span (@ (class "first-sig")) "conditions ->")) (div (@ (class "rest-sig")) (div "string/pair/list -> string")) "") (div (@ (id "doc-b-" "sql-where-condition") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "sql-where-condition") " " (span (@ (class "first-sig")) "expr ->")) "" (div (@ (class "description")) (("for creating a \\\"where\\\" part sql separately." (br) "\\\"not\\\" in row-expressions will always be in front of the column-condition in the resulting query. sqlite for example does not understand" (br) "\\\"not c=NULL\\\" as one might expect. use \\\"ISNULL\\\" instead of \\\"NULL\\\" in this case."))))))))))) ()))