VibORM

Bun SQL

PostgreSQL driver using Bun's built-in SQL client

Requirements

  • Bun runtime

Configuration

import { createClient } from "viborm/drivers/bun-sql";

const client = createClient({
  databaseUrl: process.env.DATABASE_URL,
  schema,
});

Options

OptionTypeDescription
clientSQLExisting Bun SQL client
databaseUrlstringPostgreSQL connection URL
optionsobjectConnection options
pgvectorbooleanEnable pgvector support
postgisbooleanEnable PostGIS support

Options Object

OptionTypeDescription
hostnamestringDatabase host
portnumberDatabase port
usernamestringDatabase user
passwordstringDatabase password
databasestringDatabase name
tlsboolean | objectTLS configuration
maxnumberMaximum connections
idleTimeoutnumberIdle connection timeout
maxLifetimenumberMaximum connection lifetime

Using Options

import { createClient } from "viborm/drivers/bun-sql";

const client = createClient({
  options: {
    hostname: "localhost",
    port: 5432,
    username: "postgres",
    password: "password",
    database: "mydb",
  },
  schema,
});

With pgvector

import { createClient } from "viborm/drivers/bun-sql";

const client = createClient({
  databaseUrl: process.env.DATABASE_URL,
  pgvector: true,
  schema,
});

Transactions

Bun SQL supports full transactions with savepoints for nested transactions.

await client.$transaction(async (tx) => {
  await tx.user.create({ data: { name: "Alice" } });
  await tx.post.create({ data: { title: "Hello", authorId: "..." } });
});

Limitations

  • Only available in Bun runtime
  • API similar to postgres.js

On this page