aboutsummaryrefslogtreecommitdiff
path: root/integration/bunjs-only-snippets/sql-raw.test.js
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2022-05-16 15:46:20 -0700
committerGravatar GitHub <noreply@github.com> 2022-05-16 15:46:20 -0700
commita37f86e89dc01f884a1b4474c27c79d5932093a0 (patch)
tree4732a1a1c032f2e6788f3b8d7151c5d5db15fb38 /integration/bunjs-only-snippets/sql-raw.test.js
parent2bd0dcfdfaf6c385e927570b0e102385dc8c3975 (diff)
downloadbun-a37f86e89dc01f884a1b4474c27c79d5932093a0.tar.gz
bun-a37f86e89dc01f884a1b4474c27c79d5932093a0.tar.zst
bun-a37f86e89dc01f884a1b4474c27c79d5932093a0.zip
`bun:sqlite` (#167)
* :scissors: * Add the slow version * draw the rest of the owl * Fix crash when allocating lots of memory * [Bun.Transipiler] Support passing objects * [JS Parser] Support passing objects to macros via Bun.Transpiler * Update JSSQLStatement.cpp * Embed SQLite * Add SQLite to Dockerfile * [sqlite] Add quick one-off queries without creating a whole object * [sqlite] Add `columnsCount`, rename raw() to `values()`, remove `rebind` * Implement `bun:sqlite` * return null * Fix updating query * Update bun.d.ts * more tests * Support variadic arguments, write tests and add types * Update sqlite.d.ts * Update sqlite.d.ts * latest * Implement `Database.loadExtension` and `Database.setCustomSQLite` * Support `require.resolve` * [napi] Improve string performance * [bun.js] Support some of `node:module` * another test * [sqlite] Support serialize & deserialize * [`bun:ffi`] Implement `CFunction` and `linkSymbols` * [bun.js] Fix crash in `Buffer.from` * Update sqlite.test.js * Document linkSymbols * docs * Update README.md
Diffstat (limited to 'integration/bunjs-only-snippets/sql-raw.test.js')
-rw-r--r--integration/bunjs-only-snippets/sql-raw.test.js71
1 files changed, 71 insertions, 0 deletions
diff --git a/integration/bunjs-only-snippets/sql-raw.test.js b/integration/bunjs-only-snippets/sql-raw.test.js
new file mode 100644
index 000000000..ea7f72bd6
--- /dev/null
+++ b/integration/bunjs-only-snippets/sql-raw.test.js
@@ -0,0 +1,71 @@
+import { expect, it } from "bun:test";
+
+var SQL = globalThis[Symbol.for("Bun.lazy")]("sqlite");
+
+it("works", () => {
+ const handle = SQL.open("/tmp/northwind.sqlite");
+
+ const stmt = SQL.prepare(
+ handle,
+ 'SELECT * FROM "Order" WHERE OrderDate > date($date)'
+ );
+ expect(stmt.toString()).toBe(
+ `SELECT * FROM "Order" WHERE OrderDate > date(NULL)`
+ );
+
+ expect(
+ Array.isArray(
+ stmt.all({
+ // do the conversion this way so that this test runs in multiple timezones
+ $date: new Date(
+ new Date(1996, 8, 1, 0, 0, 0, 0).toUTCString()
+ ).toISOString(),
+ })
+ )
+ ).toBe(true);
+ expect(stmt.toString()).toBe(
+ `SELECT * FROM "Order" WHERE OrderDate > date('1996-09-01T07:00:00.000Z')`
+ );
+
+ var ran = stmt.run({
+ $date: new Date(
+ new Date(1997, 8, 1, 0, 0, 0, 0).toUTCString()
+ ).toISOString(),
+ });
+ expect(Array.isArray(ran)).toBe(false);
+ expect(ran === undefined).toBe(true);
+ expect(stmt.toString()).toBe(
+ `SELECT * FROM "Order" WHERE OrderDate > date('1997-09-01T07:00:00.000Z')`
+ );
+
+ expect(
+ Array.isArray(
+ stmt.get({
+ $date: new Date(
+ new Date(1998, 8, 1, 0, 0, 0, 0).toUTCString()
+ ).toISOString(),
+ })
+ )
+ ).toBe(false);
+ expect(stmt.toString()).toBe(
+ `SELECT * FROM "Order" WHERE OrderDate > date('1998-09-01T07:00:00.000Z')`
+ );
+ expect(stmt.paramsCount).toBe(1);
+ expect(stmt.columnsCount).toBe(14);
+ expect(stmt.columns.length).toBe(14);
+ stmt.finalize();
+ SQL.close(handle);
+});
+
+it("SQL.run works", () => {
+ const handle = SQL.open("/tmp/northwind.sqlite");
+ expect(typeof handle).toBe("number");
+
+ expect(
+ SQL.run(handle, 'SELECT * FROM "Order" WHERE OrderDate > date($date)', {
+ $date: new Date(1996, 8, 1).toISOString(),
+ })
+ ).toBe(undefined);
+
+ SQL.close(handle);
+});