Skip to content

Jsorm instance

import { createJsorm } from "@jsorm/client";
import { createSqliteNodeProvider } from "@jsorm/provider-sqlite-node";
const jsorm = createJsorm<DB>(config, models, {
main: (ctx) => createSqliteNodeProvider(ctx.models, ctx.options),
});

Creates the typed instance with Proxy for table access. Auto-generated by jsorm gen.

Param Type Description
config ConfigAST Config from defineConfig()
models readonly AnyModel[] Array of models
providers Partial<ProviderManifest<TDatabases>> One key per declared database; wires each database to its provider

jsorm.users.get()
jsorm.users.create({ name: "Ana" })
jsorm.users.update({ where: { id: "1" }, data: { name: "Ana" } })
jsorm.cache.sessions.get()
jsorm.analytics.events.create({ name: "login" })

jsorm.raw(options: { db?: DatabaseName; sql: string; params?: unknown[] }): Promise<ProviderResult<unknown>>

Executes raw SQL.

const result = await jsorm.raw({
sql: `SELECT avg(price) FROM products WHERE price > ?`,
params: [100],
});
// In a specific database
const result = await jsorm.raw({
db: "analytics",
sql: `SELECT avg(price) FROM products WHERE price > ?`,
params: [100],
});

jsorm.close(db?: DatabaseName): void

Closes the database connection.

jsorm.close(); // closes main
jsorm.close("cache"); // closes cache

jsorm.syncSchema(db?: DatabaseName): ProviderResult<SchemaReport>

Creates missing tables based on models.

const { data: report } = jsorm.syncSchema();
console.log(report.created); // ["users", "posts", ...]
console.log(report.existing); // [] if first time

jsorm.getMissingTables(db?: DatabaseName): ProviderResult<string[]>

Returns tables that need to be created.

const { data: missing } = jsorm.getMissingTables();
if (missing.length > 0) {
console.log("Missing tables:", missing);
jsorm.syncSchema();
}

jsorm.providers: ProviderManager

ProviderManager for manually registering providers.