Skip to content

@happ-integ/db

Универсальная абстракция базы данных (D1 / Neon).

Установка

bash
pnpm add @happ-integ/db

Провайдеры

ПровайдерОписаниеКогда использовать
d1Cloudflare D1 (SQLite)По умолчанию, для большинства случаев
neonNeon PostgreSQLСложные запросы, транзакции

Использование

D1 (по умолчанию)

typescript
import { DB } from "@happ-integ/db";

const db = new DB({
	provider: "d1",
	project: "sofa",
	d1: env.DB,
});

Neon

typescript
const db = new DB({
	provider: "neon",
	project: "sofa",
});

CRUD операции

typescript
// Insert
await db.insert("calls", {
	id: "123",
	phone: "+380501234567",
	status: "pending",
});

// Insert Many
await db.insertMany("calls", [
	{ id: "1", phone: "..." },
	{ id: "2", phone: "..." },
]);

// Select
const calls = await db.select<Call>("calls", { status: "pending" });

// Select с опциями
const recentCalls = await db.select<Call>("calls", { status: "completed" }, { limit: 10, orderBy: "created_at DESC" });

// Update
await db.update("calls", { status: "completed" }, { id: "123" });

// Delete
await db.delete("calls", { id: "123" });

Raw SQL

typescript
const result = await db.query<Call>("SELECT * FROM calls WHERE status = ? AND created_at > ?", [
	"pending",
	"2024-01-01",
]);

Health Check

typescript
const isHealthy = await db.healthCheck();

API

DB

typescript
new DB(config: DBConfig)

Config:

ПараметрТипОписание
provider"d1" | "neon"Провайдер (default: "d1")
projectstringИмя проекта (для префиксов)
d1D1DatabaseD1 binding (требуется для D1)

Методы

insert(table, data): Promise<void>

insertMany(table, data[]): Promise<void>

select<T>(table, where?, options?): Promise<T[]>

update(table, data, where): Promise<void>

delete(table, where): Promise<void>

query<T>(sql, params?): Promise<IQueryResult<T>>

healthCheck(): Promise<boolean>

getProvider(): DBProvider

Когда использовать напрямую D1Client/NeonClient

typescript
import { D1Client } from "@happ-integ/d1";
import { NeonClient } from "@happ-integ/neon";

// Для сложных SQL запросов с JOIN, подзапросами
// Для транзакций (Neon)
// Для batch операций (D1)
// Для специфичных возможностей провайдера