diff --git a/sqlite3/sqlite3-tests.ts b/sqlite3/sqlite3-tests.ts new file mode 100644 index 000000000..7059a439a --- /dev/null +++ b/sqlite3/sqlite3-tests.ts @@ -0,0 +1,92 @@ +/// + +import sqlite3 = require('sqlite3'); +sqlite3.verbose(); + +var db: sqlite3.Database; + +function createDb() { + console.log("createDb chain"); + db = new sqlite3.Database('chain.sqlite3', createTable); +} + +function createTable() { + console.log("createTable lorem"); + db.run("CREATE TABLE IF NOT EXISTS lorem (info TEXT)", insertRows); +} + +function insertRows() { + console.log("insertRows Ipsum i"); + var stmt = db.prepare("INSERT INTO lorem VALUES (?)"); + + for (var i = 0; i < 10; i++) { + stmt.run("Ipsum " + i); + } + + stmt.finalize(readAllRows); +} + +function readAllRows() { + console.log("readAllRows lorem"); + db.all("SELECT rowid AS id, info FROM lorem", function(err, rows) { + rows.forEach(function (row) { + console.log(row.id + ": " + row.info); + }); + closeDb(); + }); +} + +function closeDb() { + console.log("closeDb"); + db.close(); +} + +function runChainExample() { + createDb(); +} + +runChainExample(); + +db.serialize(function() { + db.run("CREATE TABLE lorem (info TEXT)"); + + var stmt = db.prepare("INSERT INTO lorem VALUES (?)"); + for (var i = 0; i < 10; i++) { + stmt.run("Ipsum " + i); + } + stmt.finalize(); + + db.each("SELECT rowid AS id, info FROM lorem", function(err, row) { + console.log(row.id + ": " + row.info); + }); +}); + +db.serialize(function() { + // These two queries will run sequentially. + db.run("CREATE TABLE foo (num)"); + db.run("INSERT INTO foo VALUES (?)", 1, function() { + // These queries will run in parallel and the second query will probably + // fail because the table might not exist yet. + db.run("CREATE TABLE bar (num)"); + db.run("INSERT INTO bar VALUES (?)", 1); + }); +}); + +// Directly in the function arguments. +db.run("UPDATE tbl SET name = ? WHERE id = ?", "bar", 2); + +// As an array. +db.run("UPDATE tbl SET name = ? WHERE id = ?", [ "bar", 2 ]); + +// As an object with named parameters. +db.run("UPDATE tbl SET name = $name WHERE id = $id", { + $id: 2, + $name: "bar" +}); + +db.run("UPDATE tbl SET name = ?5 WHERE id = ?", { + 1: 2, + 5: "bar" +}); + +db.close(); diff --git a/sqlite3/sqlite3.d.ts b/sqlite3/sqlite3.d.ts new file mode 100644 index 000000000..c2c77cad9 --- /dev/null +++ b/sqlite3/sqlite3.d.ts @@ -0,0 +1,81 @@ +// Type definitions for sqlite3 2.2.3 +// Project: https://github.com/mapbox/node-sqlite3 +// Definitions by: Nick Malaguti +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +/// + +declare module "sqlite3" { + import events = require("events"); + + export var OPEN_READONLY: number; + export var OPEN_READWRITE: number; + export var OPEN_CREATE: number; + + export var cached: { + Database(filename: string, callback?: (err: Error) => void): Database; + Database(filename: string, mode?: number, callback?: (err: Error) => void): Database; + }; + + export interface RunResult { + lastID: number; + changes: number; + } + + export class Statement { + public bind(callback?: (err: Error) => void): Statement; + public bind(...params: any[]): Statement; + + public reset(callback?: (err: Error) => void): Statement; + + public finalize(callback?: (err: Error) => void): Statement; + + public run(callback?: (err: Error) => void): Statement; + public run(...params: any[]): Statement; + + public get(callback?: (err: Error, row: any) => void): Statement; + public get(...params: any[]): Statement; + + public all(callback?: (err: Error, rows: any[]) => void): Statement; + public all(...params: any[]): Statement; + + public each(callback?: (err: Error, row: any) => void, complete?: (err: Error, count: number) => void): Statement; + public each(...params: any[]): Statement; + } + + export class Database extends events.EventEmitter { + constructor(filename: string, callback?: (err: Error) => void); + constructor(filename: string, mode?: number, callback?: (err: Error) => void); + + public close(callback?: (err: Error) => void): void; + + public run(sql: string, callback?: (err: Error) => void): Database; + public run(sql: string, ...params: any[]): Database; + + public get(sql: string, callback?: (err: Error, row: any) => void): Database; + public get(sql: string, ...params: any[]): Database; + + public all(sql: string, callback?: (err: Error, rows: any[]) => void): Database; + public all(sql: string, ...params: any[]): Database; + + public each(sql: string, callback?: (err: Error, row: any) => void, complete?: (err: Error, count: number) => void): Database; + public each(sql: string, ...params: any[]): Database; + + public exec(sql: string, callback?: (err: Error) => void): Database; + + public prepare(sql: string, callback?: (err: Error) => void): Statement; + public prepare(sql: string, ...params: any[]): Statement; + + public serialize(callback?: () => void): void; + public parallelize(callback?: () => void): void; + + public on(event: "trace", listener: (sql: string) => void): Database; + public on(event: "profile", listener: (sql: string, time: number) => void): Database; + public on(event: "error", listener: (err: Error) => void): Database; + public on(event: "open", listener: () => void): Database; + public on(event: "close", listener: () => void): Database; + public on(event: string, listener: Function): Database; + } + + function verbose(): void; +}