Permalink
Browse files

Self-documented the project

  • Loading branch information...
1 parent c92d4ac commit b9b59007872f3f0878487b8f3f3e9b532b82e311 @grumdrig committed Sep 17, 2011
Showing with 85 additions and 134 deletions.
  1. +0 −133 doc/examples.html
  2. +1 −1 doc/examples.js
  3. +2 −0 doc/publish.sh
  4. +82 −0 index.html
View
@@ -1,133 +0,0 @@
-
-<p>
-<h2>Documentation by Example</h2>
-
-<p>
-Import the library and open a database. (Only syncronous database
-access is implemented at this time.)
-<p>
-<pre>var sqlite = require("../sqlite");
-var db = sqlite.openDatabaseSync("example.db");
-</pre>
-<p>
-Perform an SQL query on the database:
-<p>
-<pre>db.query("CREATE TABLE foo (a,b,c)");
-</pre>
-<p>
-This is a more convenient form than the HTML5 syntax for the same
-thing, but which is also supported:
-<p>
-<pre>db.transaction(function(tx) {
- tx.executeSql("CREATE TABLE bar (x,y,z)");
-});
-</pre>
-<p>
-This allows the same or similar code to work on the client and
-server end (modulo browser support of HTML5 Web SQL).
-<p>
-Transactions generate either a "commit" or "rollback" event.
-<p>
-<pre>var rollbacks = 0;
-db.addListener("rollback", function () {
- ++rollbacks;
-});
-</pre>
-<p>
-Both forms take an optional second parameter which is values to
-bind to fields in the query, as an array:
-<p>
-<pre>db.query("INSERT INTO foo (a,b,c) VALUES (?,?,?)", ['apple','banana',22]);
-</pre>
-<p>
-or as a map:
-<p>
-<pre>db.query("INSERT INTO bar (x,y,z) VALUES ($x,$y,$zebra)",
- {$x: 10, $y:20, $zebra:"stripes"});
-</pre>
-<p>
-Also optional is a callback function which is called with an object
-representing the results of the query:
-<p>
-<pre>db.query("SELECT x FROM bar", function (records) {
- process.assert(records.length == 1);
- process.assert(records[0].x == 10);
-</pre>
-<p>
-The HTML5 semantics for the record set also work:
-<p>
-<pre> process.assert(records.rows.length == 1);
- process.assert(records.rows.item(0).x == 10);
-});
-</pre>
-<p>
-INSERT, UPDATE & DELETE queries set <code>rowsAffected</code> on their result
-set object:
-<p>
-<pre>db.query("UPDATE foo SET a = ? WHERE a = ?", ['orange', 'apple'], function(r) {
- process.assert(r.rowsAffected == 1);
-});
-</pre>
-<p>
-They also emit an <code>"update"</code> event.
-<p>
-INSERT queries set <code>insertId</code>:
-<p>
-<pre>var insert = db.query("INSERT INTO foo VALUES (1,2,3)");
-process.assert(insert.insertId == 2);
-</pre>
-<p>
-Note here that the result set passed to the callback is also
-returned by <code>query</code>.
-<p>
-Multiple-statement queries are supported; each statement's result set is retuned to the callback as a separate parameter:
-<p>
-<pre>var q = db.query("UPDATE bar SET z=20; SELECT SUM(z) FROM bar;",
- function (update, select) {
- process.assert(update.rowsAffected == 1);
- process.assert(select[0]['SUM(z)'] == 20);
- });
-</pre>
-<p>
-An array of all result sets is available as the <code>.all</code> property on
-each result set:
-<p>
-<pre>process.assert(q.all[1].length == 1);
-</pre>
-<p>
-HTML5 semantics are supported.
-<p>
-<pre>db.transaction(function(tx) {
- tx.executeSql("SELECT * FROM foo WHERE c = ?", [3], function(tx,res) {
- process.assert(res.rows.item(0).c == 3);
- });
-});
-</pre>
-<p>
-The <code>query</code> and <code>transaction</code> APIs wrap lower level APIs that more
-thinly wrap the underlying C api:
-<p>
-<pre>var stmt = db.prepare("INSERT INTO foo VALUES (?,?,?)");
-stmt.bind(1, "curly");
-stmt.bind(2, "moe");
-stmt.bind(3, "larry");
-stmt.step(); // Insert Curly, Moe & Larry
-stmt.reset();
-stmt.step(); // Insert another row with same stooges
-stmt.reset();
-stmt.clearBindings();
-stmt.bind(2, "lonely");
-stmt.step(); // Insert (null, "lonely", null)
-stmt.finalize();
-</pre>
-<p>
-Close it:
-<p>
-<pre>db.close();
-</pre>
-<p>
-<p>
-</pre>
-<p>
-</pre>
-<p>
View
@@ -2,7 +2,7 @@
/*
//!! To be processed by docbyex.py (or run by Node)
-<h2>Documentation by Example</h2>
+Documentation by Example ::
*/
// Import the library and open a database. (Only syncronous database
View
@@ -0,0 +1,2 @@
+docbyex -s examples.js > examples.html
+php < index.php > ../index.html
View
@@ -0,0 +1,82 @@
+<head>
+<title>node-sqlite</title>
+<style>
+ pre, code { color: #060; font-size: 11pt; }
+ pre { margin-left: 2ex; padding: 1ex; background-color: #eee; }
+ p { font-size: 12pt; }
+body {
+ margin-left: 10%;
+ margin-right: 10%;
+ background-color: #fff;
+ color: black;
+ max-width: 800px;
+}
+ h1,h2,h3,h4 { font-family: helvetica }
+h1 { font-size: 36pt; }
+h1 {
+ background-color: #58b;
+ color: white;
+ padding-left:6px;
+}
+h2 {
+ color: #28b;
+}
+</style>
+</head>
+
+<body>
+<h1>node-sqlite</h1>
+
+<a href=http://sqlite.org/>SQLite</a> bindings for
+<a //href=http://nodejs.org/>Node</a>.
+
+<p>
+The semantics conform somewhat to those of the <a
+href=http://dev.w3.org/html5/webdatabase/#sql>HTML5 Web SQL API</a>,
+plus some extensions. Also, only the synchronous API is implemented;
+the asynchronous API is a big TODO item.
+
+<h2>Download</h2>
+<p>
+The spiritual home of node-sqlite is at <a href=http://grumdrig.com/node-sqlite/>http://grumdrig.com/node-sqlite/</a>.
+
+<p>
+The code lives at <a href=http://code.google.com/p/node-sqlite/>http://code.google.com/p/node-sqlite/</a>.
+
+
+
+<h2>Installation</h2>
+
+<p>
+<ol>
+<li>Install <a //href=http://nodejs.org/>Node</a> and
+<a href=http://sqlite.org/>SQLite</a>.
+
+<p>
+<li>Get the code
+
+<pre>
+$ git clone git://github.com/grumdrig/node-sqlite.git
+</pre>
+
+<li>Configure and build
+
+<pre>
+$ cd node-sqlite
+$ node-waf configure
+$ node-waf build
+</pre>
+
+<li>Test:
+
+<pre>
+$ node test.js
+$ node doc/examples.js
+</pre>
+
+</ol>
+
+<p>
+ The two files needed to use this library are <code>sqlite.js</code> and
+<code>build/default/sqlite3_bindings.node</code>; copy them where you need
+them.

0 comments on commit b9b5900

Please sign in to comment.