Skip to main content
zerotal

Documentation


Documentation / @zerotal/orm / index / Schema

Variable: Schema

const Schema: object

Defined in: packages/orm/src/schema/Schema.ts:60

The schema-builder facade — the entry point used inside migration up()/down() methods to issue DDL against the active Bun.sql connection.

Each mutating helper constructs a Blueprint, runs the caller's callback to record the desired columns/indexes/constraints, compiles the blueprint to SQL, and executes the statements. Introspection helpers (Schema.hasTable, Schema.hasColumn) are dialect-aware and use bound parameters.

Type Declaration

create()

create(table, callback): Promise<void>

Create a table: CREATE TABLE table_name ( … ).

Parameters

table

string

Table name.

callback

(bp) => void

Receives a Blueprint to define columns/indexes/constraints.

Returns

Promise<void>

Throws

Rejects if the table already exists — use Schema.createIfNotExists for idempotent runs.

createIfNotExists()

createIfNotExists(table, callback): Promise<void>

Idempotent create: CREATE TABLE IF NOT EXISTS table_name ( … ) followed by each index statement. Safe to run repeatedly.

Parameters

table

string

callback

(bp) => void

Returns

Promise<void>

table()

table(name, callback): Promise<void>

Modify an existing table: ALTER TABLE ADD COLUMN / DROP COLUMN / RENAME COLUMN plus CREATE INDEX IF NOT EXISTS. The blueprint is compiled for the connection's active dialect (see Blueprint.toAlterSQL).

Parameters

name

string

callback

(bp) => void

Returns

Promise<void>

drop()

drop(table): Promise<void>

DROP TABLE table_name

Parameters

table

string

Returns

Promise<void>

dropIfExists()

dropIfExists(table): Promise<void>

DROP TABLE IF EXISTS table_name

Parameters

table

string

Returns

Promise<void>

rename()

rename(from, to): Promise<void>

ALTER TABLE from RENAME TO to

Parameters

from

string

to

string

Returns

Promise<void>

hasTable()

hasTable(table): Promise<boolean>

Returns true if the table exists in the current schema. Dialect-aware: sqlite_master on SQLite, information_schema on PostgreSQL/MySQL.

Parameters

table

string

Returns

Promise<boolean>

hasColumn()

hasColumn(table, column): Promise<boolean>

Returns true if column exists in table. Dialect-aware: pragma_table_info() on SQLite, information_schema on PostgreSQL/MySQL. All inputs are bound parameters — never inlined.

Parameters

table

string

column

string

Returns

Promise<boolean>

Example

// Create
await Schema.create('users', (table) => {
  table.id();
  table.string('email').unique();
  table.timestamps();
});

// Alter
await Schema.table('users', (table) => {
  table.string('name').nullable();
});

// Drop
await Schema.drop('users');