@arki/db
archivefor @arki/[email protected] · Tier 1: the stack
Drizzle ORM repositories and database helpers for ARKI.
Install
bun add @arki/[email protected]Other package managers
npm install @arki/[email protected]
pnpm add @arki/[email protected]
yarn add @arki/[email protected]Release health for @arki/[email protected]
Doc examples
No example report was recorded for this version.
Open gaps
3 release checks fail · 2 gaps were found by demos
- check
file-agents-md - check
readme-h2-order - check
pkg-engines - Queries are not spans found by drop-studio
- Turning a drizzle-kit generate folder into a deployable module (and checking it is fresh)… found by drop-studio
Used by demos
No demo uses this package yet.
Runtimes
No engines field, so no runtime requirement is declared.
Benchmarks
No benchmarks are published for this version.
README
Drizzle ORM repositories and database helpers for ARKI. Provides:
- Two runtime entry points (
node-postgrespool by default, Bun-native SQL via thebunexport condition, embedded PGlite via./runtime-local). - An env-aware connection pool reader (
getDbConnectionOptions). - A typed projection builder (
initDb.schema(...).create(...).projection) for event-sourced read models. - A branded-ID factory (
createPrefixedId) for stable, type-safe IDs.
Installation
npm install @arki/db
# or
bun add @arki/db
# or
pnpm add @arki/dbUsage
Initialize a database from environment
import { createDb } from '@arki/db/init';
import { defineRelations } from '@arki/db/orm';
import { schema } from './schema';
export const db = createDb({
relations: defineRelations(schema, builder => ({
user: { posts: builder.many('post') },
post: { author: builder.one('user') },
})),
});createDb reads DB_URL and the pool tuning vars (DB_POOL_MIN, DB_POOL_MAX, DB_POOL_IDLE_TIMEOUT, DB_POOL_CONNECTION_TIMEOUT, DB_STATEMENT_TIMEOUT, …) from process.env and throws on missing DB_URL.
Embedded local development (PGlite)
import { initDbRuntimeLocal } from '@arki/db/runtime-local';
const { db, pglite } = await initDbRuntimeLocal(
{ dataDir: './.local/db' },
{ relations },
);Projections (event sourcing read models)
import { initDb } from '@arki/db/builder';
const d = initDb
.schema(schema)
.create({ connectionString: env.DB_URL, isDev: true });
const userProjection = d.projection
.named('user-projection')
.on(['UserRegistered'])
.handle(async (events, { db, repo: _repo }) => {
// ...
});Branded IDs
import { createPrefixedId, createIdFactory } from '@arki/db/id';
const userId = createPrefixedId('usr_'); // 'usr_…'
const idFactory = createIdFactory('post_');
const postId = idFactory.next();Subpath exports
@arki/db/@arki/db/init—createDb,initDb,initDbWithOptions. Under Bun,./initresolves to a Bun-native SQL driver.@arki/db/factory—createDb+ connection-option helpers.@arki/db/builder— typed projection builder.@arki/db/runtime-local— PGlite-backed embedded runtime.@arki/db/env— validated env object.@arki/db/id,@arki/db/id-factory— CUID-based prefixed-ID helpers.@arki/db/orm— re-exports ofdrizzle-orm+drizzle-orm/zodschema helpers.@arki/db/pg— re-export ofdrizzle-orm/pg-core.@arki/db/bun— Bun-SQL driver entry (also routed via thebuncondition on./init).@arki/db/client— types-only client surface reserved for future Tier-3 sync work.
Environment variables
| Variable | Purpose |
|---|---|
DB_URL | Primary Postgres connection URL. |
PGHOST, PGPORT, PGUSER, … | Individual params when DB_URL is not used. |
DB_POOL_MIN, DB_POOL_MAX | Connection pool sizing (default 2 / 20). |
DB_POOL_IDLE_TIMEOUT | Idle pool timeout in ms (default 30000). |
DB_POOL_CONNECTION_TIMEOUT | Acquire timeout in ms (default 2000). |
DB_LOGGING | Enable Drizzle logger when truthy. |
DB_STATEMENT_TIMEOUT, DB_QUERY_TIMEOUT | Per-statement / per-query timeouts in ms. |
Documentation
@arki/db ships an optional @arki/db/dot adapter for the
@arki/dot framework.
- See
packages/dot/docs/in the@arki/dotpackage for plugin authoring, lifecycle, diagnostics, and the adapter authoring guide.
License
MIT — see LICENSE.
Public imports
This version has no API index.