Skip to content

Commit

Permalink
docs
Browse files Browse the repository at this point in the history
  • Loading branch information
yawaramin committed Jun 19, 2024
1 parent 39e570c commit 8d906dd
Show file tree
Hide file tree
Showing 54 changed files with 2,151 additions and 2 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,4 @@
_build
Makefile
*.db

2 changes: 2 additions & 0 deletions fun-postgresql/Fun_postgresql/Arg/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Arg (fun-postgresql.Fun_postgresql.Arg)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../odoc.support/odoc.css"/><meta name="generator" content="odoc 2.4.2"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../odoc.support/highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a><a href="../../index.html">fun-postgresql</a> &#x00BB; <a href="../index.html">Fun_postgresql</a> &#x00BB; Arg</nav><header class="odoc-preamble"><h1>Module <code><span>Fun_postgresql.Arg</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec value anchored" id="val-text"><a href="#val-text" class="anchor"></a><code><span><span class="keyword">val</span> text : <span>string <span class="arrow">&#45;&gt;</span></span> <a href="../index.html#type-arg">arg</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-bool"><a href="#val-bool" class="anchor"></a><code><span><span class="keyword">val</span> bool : <span>bool <span class="arrow">&#45;&gt;</span></span> <a href="../index.html#type-arg">arg</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-int"><a href="#val-int" class="anchor"></a><code><span><span class="keyword">val</span> int : <span>int <span class="arrow">&#45;&gt;</span></span> <a href="../index.html#type-arg">arg</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-nativeint"><a href="#val-nativeint" class="anchor"></a><code><span><span class="keyword">val</span> nativeint : <span>nativeint <span class="arrow">&#45;&gt;</span></span> <a href="../index.html#type-arg">arg</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-int32"><a href="#val-int32" class="anchor"></a><code><span><span class="keyword">val</span> int32 : <span>int32 <span class="arrow">&#45;&gt;</span></span> <a href="../index.html#type-arg">arg</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-int64"><a href="#val-int64" class="anchor"></a><code><span><span class="keyword">val</span> int64 : <span>int64 <span class="arrow">&#45;&gt;</span></span> <a href="../index.html#type-arg">arg</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-float"><a href="#val-float" class="anchor"></a><code><span><span class="keyword">val</span> float : <span>float <span class="arrow">&#45;&gt;</span></span> <a href="../index.html#type-arg">arg</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-blob"><a href="#val-blob" class="anchor"></a><code><span><span class="keyword">val</span> blob : <span>string <span class="arrow">&#45;&gt;</span></span> <a href="../index.html#type-arg">arg</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-opt"><a href="#val-opt" class="anchor"></a><code><span><span class="keyword">val</span> opt : <span><span>(<span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <a href="../index.html#type-arg">arg</a>)</span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> option</span> <span class="arrow">&#45;&gt;</span></span> <a href="../index.html#type-arg">arg</a></span></code></div><div class="spec-doc"><p><code>opt data value</code> is the optional <code>value</code> encoded as query data.</p></div></div></div></body></html>
7 changes: 7 additions & 0 deletions fun-postgresql/Fun_postgresql/index.html

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions fun-postgresql/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>index (fun-postgresql.index)</title><meta charset="utf-8"/><link rel="stylesheet" href="../odoc.support/odoc.css"/><meta name="generator" content="odoc 2.4.2"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../odoc.support/highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – fun-postgresql</nav><header class="odoc-preamble"><h1 id="fun-postgresql-index"><a href="#fun-postgresql-index" class="anchor"></a>fun-postgresql index</h1></header><nav class="odoc-toc"><ul><li><a href="#library-fun-postgresql">Library fun-postgresql</a></li></ul></nav><div class="odoc-content"><h2 id="library-fun-postgresql"><a href="#library-fun-postgresql" class="anchor"></a>Library fun-postgresql</h2><p>The entry point of this library is the module: <a href="Fun_postgresql/index.html"><code>Fun_postgresql</code></a>.</p></div></body></html>
2 changes: 2 additions & 0 deletions fun-sql/Fun_sql/Make/argument-1-Sql/Arg/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Arg (fun-sql.Fun_sql.Make.Sql.Arg)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../../odoc.support/odoc.css"/><meta name="generator" content="odoc 2.4.2"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../../../odoc.support/highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a><a href="../../../../index.html">fun-sql</a> &#x00BB; <a href="../../../index.html">Fun_sql</a> &#x00BB; <a href="../../index.html">Make</a> &#x00BB; <a href="../index.html">Sql</a> &#x00BB; Arg</nav><header class="odoc-preamble"><h1>Module <code><span>Sql.Arg</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec value anchored" id="val-text"><a href="#val-text" class="anchor"></a><code><span><span class="keyword">val</span> text : <span>string <span class="arrow">&#45;&gt;</span></span> <a href="../index.html#type-arg">arg</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-bool"><a href="#val-bool" class="anchor"></a><code><span><span class="keyword">val</span> bool : <span>bool <span class="arrow">&#45;&gt;</span></span> <a href="../index.html#type-arg">arg</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-int"><a href="#val-int" class="anchor"></a><code><span><span class="keyword">val</span> int : <span>int <span class="arrow">&#45;&gt;</span></span> <a href="../index.html#type-arg">arg</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-nativeint"><a href="#val-nativeint" class="anchor"></a><code><span><span class="keyword">val</span> nativeint : <span>nativeint <span class="arrow">&#45;&gt;</span></span> <a href="../index.html#type-arg">arg</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-int32"><a href="#val-int32" class="anchor"></a><code><span><span class="keyword">val</span> int32 : <span>int32 <span class="arrow">&#45;&gt;</span></span> <a href="../index.html#type-arg">arg</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-int64"><a href="#val-int64" class="anchor"></a><code><span><span class="keyword">val</span> int64 : <span>int64 <span class="arrow">&#45;&gt;</span></span> <a href="../index.html#type-arg">arg</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-float"><a href="#val-float" class="anchor"></a><code><span><span class="keyword">val</span> float : <span>float <span class="arrow">&#45;&gt;</span></span> <a href="../index.html#type-arg">arg</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-blob"><a href="#val-blob" class="anchor"></a><code><span><span class="keyword">val</span> blob : <span>string <span class="arrow">&#45;&gt;</span></span> <a href="../index.html#type-arg">arg</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-opt"><a href="#val-opt" class="anchor"></a><code><span><span class="keyword">val</span> opt : <span><span>(<span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <a href="../index.html#type-arg">arg</a>)</span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> option</span> <span class="arrow">&#45;&gt;</span></span> <a href="../index.html#type-arg">arg</a></span></code></div><div class="spec-doc"><p><code>opt data value</code> is the optional <code>value</code> encoded as query data.</p></div></div></div></body></html>
4 changes: 4 additions & 0 deletions fun-sql/Fun_sql/Make/argument-1-Sql/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Sql (fun-sql.Fun_sql.Make.Sql)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../odoc.support/odoc.css"/><meta name="generator" content="odoc 2.4.2"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../../odoc.support/highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a><a href="../../../index.html">fun-sql</a> &#x00BB; <a href="../../index.html">Fun_sql</a> &#x00BB; <a href="../index.html">Make</a> &#x00BB; Sql</nav><header class="odoc-preamble"><h1>Parameter <code><span>Make.Sql</span></code></h1></header><nav class="odoc-toc"><ul><li><a href="#query-runners">Query runners</a></li><li><a href="#binding-arguments">Binding arguments</a></li><li><a href="#return-types">Return types</a><ul><li><a href="#helpers-to-get-typed-values-from-columns">Helpers to get typed values from columns</a></li></ul></li></ul></nav><div class="odoc-content"><div class="odoc-spec"><div class="spec type anchored" id="type-db"><a href="#type-db" class="anchor"></a><code><span><span class="keyword">type</span> db</span></code></div><div class="spec-doc"><p>The database connection or file, etc.</p></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-arg"><a href="#type-arg" class="anchor"></a><code><span><span class="keyword">type</span> arg</span></code></div><div class="spec-doc"><p>A value sent to the database in the place of a query parameter.</p></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-ret"><a href="#type-ret" class="anchor"></a><code><span><span class="keyword">type</span> <span>_ ret</span></span></code></div><div class="spec-doc"><p>A decoder of a single row of the resultset from running a query.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-placeholder"><a href="#val-placeholder" class="anchor"></a><code><span><span class="keyword">val</span> placeholder : <span><span class="xref-unresolved">Stdlib</span>.Format.formatter <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>A generic way to write placeholders for different database drivers' prepared statement parameters.</p><p>ℹ️ Placeholders are 0-indexed.</p></div></div><h3 id="query-runners"><a href="#query-runners" class="anchor"></a>Query runners</h3><div class="odoc-spec"><div class="spec value anchored" id="val-query"><a href="#val-query" class="anchor"></a><code><span><span class="keyword">val</span> query : <span><a href="#type-db">db</a> <span class="arrow">&#45;&gt;</span></span> <span>string <span class="arrow">&#45;&gt;</span></span> <span><span class="optlabel">?args</span>:<span><a href="#type-arg">arg</a> list</span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'r</span> <a href="#type-ret">ret</a></span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'r</span></span></code></div><div class="spec-doc"><p>The main function through which queries are run is the <code>query</code> function. This function <em>always</em> creates a prepared statement for each partial call to <code>query db sql</code>. This prepared statement can then be called with the actual arguments (if any) and the resultset row decoder:</p><pre class="language-ocaml"><code>let add_person =
query db (sql &quot;insert into people (name, age) values (%a, %a)&quot; placeholder 0 placeholder 1)
let add_person name age = add_person ~args:Arg.[text name; int age] unit</code></pre><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <code>Invalid_argument</code> <p>if trying to create multiple prepared statements for the same SQL query in PostgreSQL. To avoid this, just create the prepared statement <em>once only</em> and call it whenever needed, as shown above.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-exec_script"><a href="#val-exec_script" class="anchor"></a><code><span><span class="keyword">val</span> exec_script : <span><a href="#type-db">db</a> <span class="arrow">&#45;&gt;</span></span> <span>string <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p><code>exec_script db sql</code> executes the <code>sql</code> script (possibly made up of multiple statements) in the database <code>db</code>. Note that it ignores any rows returned by any of the statements.</p><p>The script <i>must not</i> have a trailing semicolon.</p></div></div><h3 id="binding-arguments"><a href="#binding-arguments" class="anchor"></a>Binding arguments</h3><p>These encode OCaml data as data to be bound to the query statement.</p><div class="odoc-spec"><div class="spec module anchored" id="module-Arg"><a href="#module-Arg" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Arg/index.html">Arg</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div></div><h3 id="return-types"><a href="#return-types" class="anchor"></a>Return types</h3><div class="odoc-spec"><div class="spec type anchored" id="type-row"><a href="#type-row" class="anchor"></a><code><span><span class="keyword">type</span> row</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-unit"><a href="#val-unit" class="anchor"></a><code><span><span class="keyword">val</span> unit : <span>unit <a href="#type-ret">ret</a></span></span></code></div><div class="spec-doc"><p><code>unit</code> indicates that the query doesn't return any meaningful output.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-ret"><a href="#val-ret" class="anchor"></a><code><span><span class="keyword">val</span> ret : <span><span>(<span><a href="#type-row">row</a> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span>)</span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> <span class="xref-unresolved">Stdlib</span>.Seq.t</span> <a href="#type-ret">ret</a></span></span></code></div><div class="spec-doc"><p><code>ret decode</code> is a custom return type encoding for a resultset into a sequence of values of the type decoded by <code>decode</code>.</p><p><code>decode</code> constructs a value of the custom type if possible, else raises <code>Failure</code>.</p><p>Note that the sequence rows of the resultset is unfolded as it is read from the database. It can only be traversed <i>once,</i> with e.g. <code>List.of_seq</code> or <code>Seq.iter</code>. If traversed multiple times, it will raise <code>Failure</code>.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <code>Invalid_argument</code> <p>if any row cannot be decoded.</p></li></ul><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <code>Failure</code> <p>if an unexpected result code is encountered.</p></li></ul></div></div><h4 id="helpers-to-get-typed-values-from-columns"><a href="#helpers-to-get-typed-values-from-columns" class="anchor"></a>Helpers to get typed values from columns</h4><div class="odoc-spec"><div class="spec value anchored" id="val-int"><a href="#val-int" class="anchor"></a><code><span><span class="keyword">val</span> int : <span>int <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-row">row</a> <span class="arrow">&#45;&gt;</span></span> int</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-bool"><a href="#val-bool" class="anchor"></a><code><span><span class="keyword">val</span> bool : <span>int <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-row">row</a> <span class="arrow">&#45;&gt;</span></span> bool</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-int64"><a href="#val-int64" class="anchor"></a><code><span><span class="keyword">val</span> int64 : <span>int <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-row">row</a> <span class="arrow">&#45;&gt;</span></span> int64</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-float"><a href="#val-float" class="anchor"></a><code><span><span class="keyword">val</span> float : <span>int <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-row">row</a> <span class="arrow">&#45;&gt;</span></span> float</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-text"><a href="#val-text" class="anchor"></a><code><span><span class="keyword">val</span> text : <span>int <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-row">row</a> <span class="arrow">&#45;&gt;</span></span> string</span></code></div><div class="spec-doc"><p>Also handles values of all other types. Use this when SQLite can change the exact type of value it returns at runtime, e.g. for very large numbers it can return text.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-opt"><a href="#val-opt" class="anchor"></a><code><span><span class="keyword">val</span> opt : <span><span>(<span>int <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-row">row</a> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span>)</span> <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-row">row</a> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> option</span></span></code></div><div class="spec-doc"><p><code>opt dec col row</code> is the optional value <code>NULL</code> turns to <code>None</code> at column <code>col</code> of the result <code>row</code>.</p></div></div></div></body></html>
Loading

0 comments on commit 8d906dd

Please sign in to comment.