DefinitelyTyped/types/sqlite3/sqlite3-tests.ts
2019-02-25 19:39:30 -07:00

113 lines
2.7 KiB
TypeScript

import * as sqlite from 'sqlite3';
const sqlite3 = sqlite.verbose();
let db: sqlite.Database = new sqlite3.Database('chain.sqlite3', () => {});
function createDb() {
console.log("createDb chain");
db = new sqlite3.Database('chain.sqlite3', createTable);
db.configure("busyTimeout", 1000);
}
function createTable() {
console.log("createTable lorem");
db.run("CREATE TABLE IF NOT EXISTS lorem (info TEXT)", insertRows);
}
function insertRows() {
console.log("insertRows Ipsum i");
const stmt = db.prepare("INSERT INTO lorem VALUES (?)");
for (let 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", (err, rows) => {
rows.forEach(row => {
console.log(`${row.id}: ${row.info}`);
});
readSomeRows();
});
}
function readSomeRows() {
console.log("readAllRows lorem");
db.each("SELECT rowid AS id, info FROM lorem WHERE rowid < ? ", 5, (err, row) => {
console.log(`${row.id}: ${row.info}`);
}, closeDb);
}
function closeDb() {
console.log("closeDb");
db.close();
}
function runChainExample() {
createDb();
}
runChainExample();
function runMemoryChainExample() {
console.log(`createDb chain - in-memory database`);
db = new sqlite3.Database(
':memory:',
sqlite3. OPEN_CREATE | sqlite3.OPEN_READWRITE | sqlite3.OPEN_SHAREDCACHE,
createTable);
db.configure("busyTimeout", 1000);
}
runMemoryChainExample();
db.serialize(() => {
db.run("CREATE TABLE lorem (info TEXT)");
const stmt = db.prepare("INSERT INTO lorem VALUES (?)");
for (let i = 0; i < 10; i++) {
stmt.run("Ipsum " + i);
}
stmt.finalize();
db.each("SELECT rowid AS id, info FROM lorem", (err, row) => {
console.log(`${row.id}: ${row.info}`);
});
});
db.serialize(() => {
// These two queries will run sequentially.
db.run("CREATE TABLE foo (num)");
db.run("INSERT INTO foo VALUES (?)", 1, err => {
// 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 = $name WHERE id = $id", { $id: 2, $name: "bar" },
err => { }
);
db.run("UPDATE tbl SET name = ?5 WHERE id = ?", {
1: 2,
5: "bar"
});
db.close();