diff options
author | Dominik Picheta <dominikpicheta@gmail.com> | 2015-10-26 21:10:21 +0100 |
---|---|---|
committer | Dominik Picheta <dominikpicheta@gmail.com> | 2015-10-27 11:06:00 +0100 |
commit | 82f3cab1ac02f482dc3de3a41099e1ec0a0819a7 (patch) | |
tree | 4f8f1980e5ed384738f4a9469139af85574807f8 | |
parent | a82b9cbda320be219f426705494a357a45bfa2b2 (diff) | |
download | Nim-82f3cab1ac02f482dc3de3a41099e1ec0a0819a7.tar.gz |
Improved postgres docs and added untestable tests.
-rw-r--r-- | lib/impure/db_postgres.nim | 85 | ||||
-rw-r--r-- | tests/testament/categories.nim | 3 |
2 files changed, 45 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 diff --git a/tests/testament/categories.nim b/tests/testament/categories.nim index 526ca4d45..762c92792 100644 --- a/tests/testament/categories.nim +++ b/tests/testament/categories.nim @@ -394,6 +394,9 @@ proc processCategory(r: var TResults, cat: Category, options: string, fileGlob: testNimblePackages(r, cat, pfExtraOnly) of "nimble-all": testNimblePackages(r, cat, pfAll) + of "untestable": + # We can't test it because it depends on a third party. + discard # TODO: Move untestable tests to someplace else, i.e. nimble repo. else: for name in os.walkFiles("tests" & DirSep &.? cat.string / fileGlob): testSpec r, makeTest(name, options, cat) |