Skip to content

Latest commit

 

History

History
95 lines (72 loc) · 2.97 KB

README.md

File metadata and controls

95 lines (72 loc) · 2.97 KB

promised-sqlite3

github crates.io

A thin wrapper for sqlite3 database that expose an async API.

Install

Note: sqlite3 is marked as a peer dependency, you must also install it.

npm install promised-sqlite3 sqlite3

Usage

AsyncDatabase is a wrapper that expose an async version of the sqlite3.Database's API. AsyncStatement is a wrapper that expose an async version of the sqlite3.Statement's API.

Async API

The following methods of sqlite3.Database are available as async methods in AsyncDatabase :

  • open
  • close
  • run
  • get
  • all
  • each
  • exec
  • prepare

The following methods of sqlite3.Statement are available as async methods in AsyncStatement :

  • bind
  • reset
  • finalize
  • run
  • get
  • all
  • each

These methods accept the same arguments as their sync version except for the callback one. Refer to the sqlite3's API reference for further information on their usage.

The rest of the API

AsyncDatabase and AsyncStatement only exposes the async methods listed above. You can access to the sqlite3.Database or the sqlite3.Statement object with the inner property (see example below).

Example

const { AsyncDatabase } = require("promised-sqlite3");

(async () => {
  try {
    // Create the AsyncDatabase object and open the database.
    const db = await AsyncDatabase.open("./db.sqlite");

    // Access the inner sqlite3.Database object to use the API that is not exposed by AsyncDatabase.
    db.inner.on("trace", (sql) => console.log("[TRACE]", sql));

    // Run some sql request.
    await db.run(
      "CREATE TABLE IF NOT EXISTS foo (id INTEGER PRIMARY KEY AUTOINCREMENT, a TEXT NOT NULL, b TEXT)"
    );
    await db.run("INSERT INTO foo (a, b) VALUES (?, ?)", "alpha", "beta");
    await db.run("INSERT INTO foo (a, b) VALUES ($goo, $hoo)", {
      $goo: "GOO !",
      $hoo: "HOO :",
    });
    await db.run("INSERT INTO foo (a, b) VALUES (?, ?)", [
      "Value of a",
      "Value of b",
    ]);

    // Read database.
    const row = await db.get("SELECT * FROM foo WHERE id = ?", 2);
    const rows = await db.all("SELECT * FROM foo");
    await db.each("SELECT * FROM foo WHERE id > ?", 5, (row) =>
      console.log(row)
    );

    // Create a async statement
    const statement = await db.prepare("SELECT * FROM foo WHERE id = ?", 2);
    const row = await statement.get();

    // Close the database.
    await db.close();
  } catch (err) {
    console.error(err);
  }
})();