tsql
.md

Connecting

tsql keeps query building and query execution separate.

You provide:

import { connect, sqliteDialect, type SqlConnection } from "@bms/tsql";
import { schema } from "./schema";

const connection: SqlConnection = {
	execute: async (sql, params) => {
		// Call your runtime driver here.
		return { rows: [] };
	},
};

const db = connect({
	schema,
	dialect: sqliteDialect(),
	connection,
});

SqlConnection

type SqlConnection = {
	execute(
		sql: string,
		params: readonly unknown[],
	): Promise<{
		rows: readonly unknown[];
	}>;
};

execute always receives compiled SQL and bound parameters.

Database object

connect(...) returns Database<TSchema>. Main methods: