summary refs log tree commit diff stats
path: root/lib/impure
diff options
context:
space:
mode:
authorDominik Picheta <dominikpicheta@gmail.com>2015-10-26 21:10:21 +0100
committerDominik Picheta <dominikpicheta@gmail.com>2015-10-27 11:06:00 +0100
commit82f3cab1ac02f482dc3de3a41099e1ec0a0819a7 (patch)
tree4f8f1980e5ed384738f4a9469139af85574807f8 /lib/impure
parenta82b9cbda320be219f426705494a357a45bfa2b2 (diff)
downloadNim-82f3cab1ac02f482dc3de3a41099e1ec0a0819a7.tar.gz
Improved postgres docs and added untestable tests.
Diffstat (limited to 'lib/impure')
-rw-r--r--lib/impure/db_postgres.nim85
1 files changed, 42 insertions, 43 deletions
diff --git a/lib/impure/db_postgres.nim b/lib/impure/db_postgres.nim
index 26c131d3e..7e6219465 100644
--- a/lib/impure/db_postgres.nim
+++ b/lib/impure/db_postgres.nim
@@ -10,60 +10,56 @@
 ## A higher level `PostgreSQL`:idx: database wrapper. This interface
 ## is implemented for other databases also.
 ##
-##  **Note**: There are two approaches to **parameter substitution** in this module
-##  1.  ``SqlQuery`` using ``?,?,?,...`` (same as the other db_xxxx modules)
+## Parameter substitution
+## ----------------------
 ##
-##  .. code-block:: Nim
-##   sql"INSERT INTO myTable (colA,colB,colC) VALUES (?,?,?)"
-##  2.  ``SqlPrepared``  using ``$1,$2,$3,...``  (the Postgres way, using numbered parameters)
+## All ``db_*`` modules support the same form of parameter substitution.
+## That is, using the ``?`` (question mark) to signify the place where a
+## value should be placed. For example:
 ##
-##  .. code-block:: Nim
-##   prepare(theDb, "MyExampleInsert",
-##                  sql"""INSERT INTO myTable
-##                    (colA,colB,colC)
-##                    VALUES ($1,$2,$3)""",
-##                    3)
+## .. code-block:: Nim
+##     sql"INSERT INTO myTable (colA, colB, colC) VALUES (?, ?, ?)"
 ##
-## Example:
+## **Note**: There are two approaches to parameter substitution support by
+## this module.
 ##
-## .. code-block:: Nim
+## 1.  ``SqlQuery`` using ``?, ?, ?, ...`` (same as all the ``db_*`` modules)
+##
+## 2. ``SqlPrepared`` using ``$1, $2, $3, ...``
+##
+##  .. code-block:: Nim
+##   prepare(db, "myExampleInsert",
+##           sql"""INSERT INTO myTable
+##                 (colA, colB, colC)
+##                 VALUES ($1, $2, $3)""",
+##           3)
 ##
-##  import db_postgres, math
+## Examples
+## --------
 ##
-##  let theDb = open("localhost", "nim", "nim", "test")
+## Opening a connection to a database
+## ==================================
 ##
-##  theDb.exec(sql"Drop table if exists myTestTbl")
-##  theDb.exec(sql("""create table myTestTbl (
-##     Id    SERIAL PRIMARY KEY,
-##     Name  VARCHAR(50) NOT NULL,
-##     i     INTEGER,
-##     f     NUMERIC(18,10))"""))
+## .. code-block:: Nim
+##     import db_postgres
+##     let db = open("localhost", "user", "password", "dbname")
+##     db.close()
 ##
-##  var psql: SqlPrepared = theDb.prepare("testSql",
-##                                sql"""INSERT INTO myTestTbl (name,i,f)
-##                                      VALUES ($1,$2,$3)""", 3)
-##  theDb.exec(sql"START TRANSACTION")
-##  for i in 1..1000:
-##    if i %% 2 == 0:
-##      # using Postgres prepared statement (SqlPrepare)
-##      theDb.exec(psql, "Item#" & $i, $i, $sqrt(i.float))
-##    else:
-##      # using SqlQuery
-##      theDb.exec(sql"INSERT INTO myTestTbl (name,i,f) VALUES (?,?,?)",
-##              "Item#" & $i, $i, $sqrt(i.float))
-##  theDb.exec(sql"COMMIT")
+## Creating a table
+## ================
 ##
-##  for x in theDb.fastRows(sql"select * from myTestTbl"):
-##    echo x
+## .. code-block:: Nim
+##      db.exec(sql"DROP TABLE IF EXISTS myTable")
+##      db.exec(sql("""CREATE TABLE myTable (
+##                       id integer,
+##                       name varchar(50) not null)"""))
 ##
-##  let id = theDb.tryInsertId(sql"""INSERT INTO myTestTbl
-##                                   (name,i,f)
-##                                   VALUES (?,?,?)""",
-##                             "Item#1001", 1001, sqrt(1001.0))
-##  echo "Inserted item: ",
-##        theDb.getValue(sql"SELECT name FROM myTestTbl WHERE id=?", id)
+## Inserting data
+## ==============
 ##
-##  theDb.close()
+## .. code-block:: Nim
+##     db.exec(sql"INSERT INTO myTable (id, name) VALUES (0, ?)",
+##             "Dominik")
 import strutils, postgres
 
 type
@@ -382,3 +378,6 @@ proc setEncoding*(connection: DbConn, encoding: string): bool {.
   ## sets the encoding of a database connection, returns true for
   ## success, false for failure.
   return pqsetClientEncoding(connection, encoding) == 0
+
+
+# Tests are in ../../tests/untestable/tpostgres.
\ No newline at end of file