@happ-integ/d1
Низкоуровневый клиент для Cloudflare D1 (SQLite).
Установка
bash
pnpm add @happ-integ/d1Использование
Инициализация
typescript
import { D1Client } from "@happ-integ/d1";
const db = new D1Client(env.DB, "sofa");Raw SQL запросы
typescript
const users = await db.query<User>("SELECT * FROM sofa_users WHERE status = ? ORDER BY created_at DESC LIMIT ?", [
"active",
10,
]);
console.log(users.data); // User[]
console.log(users.rowCount); // число строкCRUD операции
typescript
// Insert
await db.insert("users", {
id: "1",
name: "John",
email: "john@example.com",
});
// Select
const users = await db.select<User>(
"users",
{ status: "active" },
{
limit: 10,
orderBy: "created_at",
orderDirection: "DESC",
}
);
// Update
await db.update("users", { status: "inactive" }, { id: "1" });
// Delete
await db.delete("users", { id: "1" });Batch операции
typescript
// Вставить много записей
await db.insertMany("users", [
{ id: "1", name: "John" },
{ id: "2", name: "Jane" },
]);Health Check
typescript
const isHealthy = await db.healthCheck();API
D1Client
typescript
new D1Client(db: D1Database, project: string)Параметры:
| Параметр | Тип | Описание |
|---|---|---|
db | D1Database | D1 binding из env |
project | string | Имя проекта (для префиксов таблиц) |
Методы
query<T>(sql, params?): Promise<IQueryResult<T>>
Raw SQL запрос.
insert(table, data): Promise<void>
Вставить одну запись.
insertMany(table, data[]): Promise<void>
Вставить несколько записей.
select<T>(table, where?, options?): Promise<T[]>
Получить записи.
Options:
typescript
{
limit?: number;
offset?: number;
orderBy?: string;
orderDirection?: "ASC" | "DESC";
}update(table, data, where): Promise<void>
Обновить записи.
delete(table, where): Promise<void>
Удалить записи.
healthCheck(): Promise<boolean>
Проверка соединения.
Изоляция проектов
Таблицы автоматически префиксируются именем проекта:
typescript
const db = new D1Client(env.DB, "sofa");
await db.insert("users", {...}); // Вставляет в таблицу "sofa_users"Это позволяет безопасно использовать одну базу для нескольких интеграций.
Когда использовать
- ✅ Сложные SQL запросы
- ✅ Batch операции
- ✅ Полный контроль над SQL
- ❌ Для простых CRUD — используйте
@happ-integ/db