release: WRNexusJS 0.5.10

This commit is contained in:
2026-07-30 13:36:29 +05:30
parent 8fc6f15402
commit d1b0c55b53
159 changed files with 7509 additions and 604 deletions
@@ -0,0 +1,17 @@
import { expect, test } from "bun:test";
import { sqlForDialect } from "../src/adapters/bunsql.ts";
test("PostgreSQL converts portable placeholders to numbered parameters", () => {
expect(sqlForDialect("SELECT * FROM users WHERE id = ? AND status = ?", "postgres")).toBe(
"SELECT * FROM users WHERE id = $1 AND status = $2",
);
});
test("MySQL and parameter-free PostgreSQL statements remain unchanged", () => {
expect(sqlForDialect("SELECT * FROM users WHERE id = ?", "mysql")).toBe(
"SELECT * FROM users WHERE id = ?",
);
expect(sqlForDialect("CREATE TABLE users (id TEXT)", "postgres")).toBe(
"CREATE TABLE users (id TEXT)",
);
});
+16
View File
@@ -8,12 +8,14 @@ import {
createDb,
createTableSql,
parseMigration,
applyMigrations,
migrate,
status,
rollback,
parseQueries,
generateQueriesFile,
} from "../src/index.ts";
import type { Db } from "../src/index.ts";
import { sqlite } from "../src/adapters/sqlite.ts";
import { bunSql } from "../src/adapters/bunsql.ts";
@@ -95,6 +97,20 @@ test("migration runner: parse, migrate, status, rollback", async () => {
db.close();
});
test("an empty migration set does not touch the database", async () => {
const unreachable = async () => {
throw new Error("database should remain lazy");
};
const db = {
all: unreachable,
one: unreachable,
exec: unreachable,
tx: unreachable,
} as unknown as Db;
expect(await applyMigrations(db, [])).toEqual([]);
});
test("query generator infers params and result types", () => {
const q = parseQueries(
"-- name: GetByEmail :one\nSELECT * FROM users WHERE email = :email;\n" +
+33
View File
@@ -5,6 +5,7 @@ import {
getDb,
hasDb,
registerDb,
registerLazyDb,
databaseNames,
closeDatabases,
} from "../src/index.ts";
@@ -45,3 +46,35 @@ test("getDb throws a helpful error for an unknown named database", async () => {
expect(() => getDb("nope")).toThrow(/No database named 'nope'/);
await closeDatabases();
});
test("named databases can be registered without opening a connection", async () => {
await closeDatabases();
let calls = 0;
const analytics = createDb(sqlite(":memory:"));
registerLazyDb("analytics", () => {
calls++;
return analytics;
});
expect(hasDb("analytics")).toBe(true);
expect(databaseNames()).toEqual(["analytics"]);
expect(calls).toBe(0);
expect(getDb("analytics")).toBe(analytics);
expect(getDb("analytics")).toBe(analytics);
expect(calls).toBe(1);
await closeDatabases();
});
test("closing the registry does not instantiate unused lazy databases", async () => {
await closeDatabases();
let calls = 0;
registerLazyDb("unused", () => {
calls++;
return createDb(sqlite(":memory:"));
});
await closeDatabases();
expect(calls).toBe(0);
});